编译原理 语法分析实验报告.doc
文本预览下载声明
中北大学软件学院
实 验 报 告
专 业
课程名称
学 号
姓 名
辅导教师 成绩
实验日期 2014.12.03 实验时间 10:00—11:30 1、实验名称 语法分析器的设计与实现
2、实验目的
掌握自上而下语法分析方法、自下而上语法分析方法 3、实验要求
(1)实验内容:四选一
设计及实现能够识别表达式的预测分析程序。
文法如下:
G[E]:E-E+T|T
T-T*F|F
F-(E)|i
设计及实现能够识别表达式的LR分析程序。
文法如下:
G[E]:E-E+T|T
T-T*F|F
F-(E)|i
③ 设计及实现能够识别表达式的算符优先分析程序。
文法如下:
G[E]:E-E+T|T
T-T*F|F
F-P↑F|P
P-(E)|i
④设计及实现计算表达式的计算器。
表达式中可包含+、-、*、/、(、)运算符。
(2)实验要求:
对已给的一个二元式形式表达式,能够检查有无语法错误。并指定出错位置。
将表达式的语法树输出(或将语法分析过程输出)。 4、实验原理
根据自上而下和自下而上的语法分析思想实现语法分析程序。 5、实验步骤
(1)根据文法构造语法分析表。
(2)编写总控程序实现语法分析。 6、状态转换图及词法分析程序
(1)状态转换图
否
(2)语法分析器源代码
#includestdio.h
#includestring.h
char *action[12][6]={S5#,NULL,NULL,S4#,NULL,NULL, /*ACTION表*/
NULL,S6#,NULL,NULL,NULL,acc,
NULL,r2#,S7#, NULL,r2#,r2#,
NULL,r4#,r4#, NULL,r4#,r4#,
S5#,NULL,NULL, S4#,NULL,NULL,
NULL,r6#,r6#, NULL,r6#,r6#,
S5#,NULL,NULL, S4#,NULL,NULL,
S5#,NULL,NULL, S4#,NULL,NULL,
NULL,S6#,NULL, NULL,S11#,NULL,
NULL,r1#,S7#, NULL,r1#,r1#,
NULL,r3#,r3#, NULL,r3#,r3#,
NULL,r5#,r5#, NULL,r5#,r5#};
int goto1[12][3]={1,2,3, /*QOTO表*/
0,0,0,
0,0,0,
0,0,0,
8,2,3,
0,0,0,
0,9,3,
0,0,10,
0,0,0,
0,0,0,
0,0,0,
0,0,0};
char vt[6]={i,+,*,(,),#}; /*存放终结符*/
char vn[3]={E,T,F}; /*存放非终结符*/
char*LR[7]={M-E#,E-E+T#,E-T#,T-T*F#,T-F#,F-(E)#,F-i#}; /*存放产生式*/
int a[
显示全部