1 / 53
文档名称:

语法分析器实验报告.doc

格式:doc   大小:1,719KB   页数:53页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

语法分析器实验报告.doc

上传人:lu2yuwb 2021/6/27 文件大小:1.68 MB

下载得到文件列表

语法分析器实验报告.doc

文档介绍

文档介绍:语法分析器实验报告
语法分析器的设计实验报告
一、实验内容
语法分析程序用LL(1)语法分析方法。首先输入定义好的文法书写文件(所用的文法可以用LL(1)分析),先求出所输入的文法的每个非终结符是否能推出空,再分别计算非终结符号的FIRST集合,每个非终结符号的FOLLOW集合,以及每个规则的SELECT集合,并判断任意一个非终结符号的任意两个规则的SELECT集的交集是不是都为空,如果是,则输入文法符合LL(1)文法,可以进行分析。
对于文法:
G[E]:
E->E+T|T
T->T*F|F
F->i|(E)
分析句子i+i*i是否符合文法。
二、基本思想
1、语法分析器实现
语法分析是编译过程的核心部分,它的主要任务是按照程序的语法规则,从由词法分析输出的源程序符号串中识别出各类语法成分,同时进行词法检查,为语义分析和代码生成作准备。这里采用自顶向下的LL(1)分析方法。
语法分析程序的流程图如图5-4所示。
开始
读入文法
有效?
判断句型
报错
结束
语法分析程序流程图
是LL(1) 文法?
该程序可分为如下几步:
(1)读入文法
(2)判断正误
(3)若无误,判断是否为LL(1)文法
(4)若是,构造分析表;
(5)由句型判别算法判断输入符号串是为该文法的句型。
三、核心思想
该分析程序有15部分组成:
(1)首先定义各种需要用到的常量和变量;
(2)判断一个字符是否在指定字符串中;
(3)读入一个文法;
(4)将单个符号或符号串并入另一符号串;
(5)求所有能直接推出&的符号;
(6)求某一符号能否推出‘ & ’;
(7)判断读入的文法是否正确;
(8)求单个符号的FIRST;
(9)求各产生式右部的FIRST;
(10)求各产生式左部的FOLLOW;
(11)判断读入文法是否为一个LL(1)文法;
(12)构造分析表M;
(13)句型判别算法;
(14)一个用户调用函数;
(15)主函数;
下面是其中几部分程序段的算法思想:
1、求能推出空的非终结符集
Ⅰ、实例中求直接推出空的empty集的算法描述如下:
void emp(char c){ 参数c为空符号
char temp[10];定义临时数组
int i;
for(i=0;i<=count-1;i++)从文法的第一个产生式开始查找
{
if 产生式右部第一个符号是空符号并且右部长度为1,
then将该条产生式左部符号保存在临时数组temp中
将临时数组中的元素合并到记录可推出&符号
的数组empty中。
}
Ⅱ、求某一符号能否推出'&'
int _emp(char c)
{ //若能推出&,返回1;否则,返回0
int i,j,k,result=1,mark=0;
char temp[20];
temp[0]=c;
temp[1]='\0';
存放到一个临时数组empt里,标识此字符已查找其是否可推出空字
如果c在可直接推出空字的empty[]中,返回1
for(i=0;;i++)
{
if(i==count)
return(0);
找一个左部为c的产生式
j=strlen(right[i]); //j为c所在产生式右部的长度
if 右部长度为1且右部第一个字符在
else if //当前字符可推出空字,返回1
}
}
}

2、计算每个符号的first集:
实例中求单个符号的FIRST集的算法描述如下:
void first2 (int i) {
参数i为符号在所有输入符号中的序号
c等于指示器i所指向的符号
在保存终结符元素的termin[]数组查找c
if c为终结符(c∈VT ),then
FIRST(c)={c}
在保存终结符元素的non_ter[]数组查找c
if c是非终结符(c∈VN )
在所有产生式中查找c所在的产生式
if 产生式右部第一个字符为终结符或空(即c→a (a∈VT)或c→&) then
把a或&加进FIRST(c)
if 产生式右部第一个字符为非终结符 then
if 产生式右部的第一个符号等于当前字符 then
跳到下一条产生式进行查找
求当前非终结符在所有字符集中的位置
if 当前非终结符还没求其FIRST集 then
查找它的FIRST集并标识此符号已求其FIRST集
求得结

最近更新

公共基础知识重庆市广元市选调生考试(行政职.. 147页

宁夏银川市选调生考试(行政职业能力测验)综.. 149页

安徽省巢湖市事业单位招聘考试(职业能力倾向.. 148页

安徽省铜陵市事业单位招聘考试(职业能力倾向.. 147页

山东省威海市事业单位招聘考试(职业能力倾向.. 149页

山东省淄博市事业单位招聘考试(职业能力倾向.. 148页

广东东莞市林业科学研究所引进高层次人才历年.. 62页

广州水务局2024直属事业单位招聘27人历年高频.. 59页

江苏省扬州市事业单位招聘考试(职业能力倾向.. 148页

江苏省镇江市事业单位招聘考试(职业能力倾向.. 146页

江西省广丰县2024年招聘事业单位人员历年高频.. 59页

河北美术研究所2024事业单位招聘拟聘历年高频.. 61页

浙江省湖州市事业单位招聘考试(职业能力倾向.. 149页

甘肃省甘南藏族自治州选调生考试(行政职业能.. 146页

福建省宁德市事业单位招聘考试(职业能力倾向.. 150页

辽宁省营口市事业单位招聘考试(职业能力倾向.. 149页

辽宁省鞍山市事业单位招聘考试(职业能力倾向.. 146页

黑龙江省事业单位招聘考试(职业能力倾向测验.. 149页

2021年建模仿真球杆实验实验报告 17页

公共就业服务信息化建设技术方案 61页

地理科学学院世界经济地理考试必考 18页

建筑工程造价习题集答案 22页

新课标人教版八年级英语上册知识点总结(完整版.. 120页

注册电气工程师教材 15页

石油化工程钢脚手架搭设安全技术规范 31页

行为金融学 8页

人教版七年级下册《生物》期末考试题及答案【.. 6页

建筑工程技术专业毕业论文 13页

“双减”下初中生物校本作业设计的优化 周涛 3页

CECS 140:2011 给水排水工程埋地预应力混凝土.. 81页