编译原理LR语法分析器的控制程序实验报告(7月20日).pdf

上传人:摩西的****12 文档编号:139675154 上传时间:2020-07-23 格式:PDF 页数:3 大小:115.65KB
返回 下载 相关 举报
编译原理LR语法分析器的控制程序实验报告(7月20日).pdf_第1页
第1页 / 共3页
编译原理LR语法分析器的控制程序实验报告(7月20日).pdf_第2页
第2页 / 共3页
编译原理LR语法分析器的控制程序实验报告(7月20日).pdf_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《编译原理LR语法分析器的控制程序实验报告(7月20日).pdf》由会员分享,可在线阅读,更多相关《编译原理LR语法分析器的控制程序实验报告(7月20日).pdf(3页珍藏版)》请在金锄头文库上搜索。

1、学 海 无 涯 1 编译原理 实验报告实验报告 学 号 姓 名 时 间 专 业 班 级 实验题目: LR 语法分析器的控制程序 实验目的: 手工模拟控制程序计算,对源程序进行 LR 语法分析 主要是分析表的构造 实验内容与步骤: 1. 将要进行 LR 语法分析的源程序和 LR 语法分析器控制程序放在同一文件夹 中。 2. 用 C 语言编写 LR 语法分析器控制程序,程序代码如下: #include #include #include #include struct code_val char code;char val20; ; const char *p= /产生式 SE,EE+T,ET,T

2、T*F,TF,F(E),Fi ; const char TNT =+*()i#ETF; /LR 分析表列的字符 const int M9= /LR 分析表数字化,列字符+*()i#ETF 用数字 012345678 标识。 0, 0, 4, 0, 5,0, 1, 2, 3, /0 表示出错,s4 用 4 表示。 6, 0, 0, 0, 0,99, /Acc 用 99 表示 -2, 7, 0,-2, 0,-2, /r2 用-2 表示 -4,-4, 0,-4, 0,-4, 0, 0, 4, 0, 5, 0, 8, 2, 3, -6,-6, 0,-6, 0,-6, 0, 0, 4, 0, 5, 0,

3、 0, 9, 3, 0, 0, 4, 0, 5, 0, 0, 0,10, 6, 0, 0,11, -1, 7, 0,-1, 0,-1, -3,-3, 0,-3, 0,-3, -5,-5, 0,-5, 0,-5 ; 学 海 无 涯 2 int col(char); /列定位函数原型 void main() int state50=0; /状态栈初值 char symbol50=#; /符号栈初值 int top=0; /栈顶指针初值 ofstream cout(par_r.txt); /语法分析结果输出至文件 par_r.txt ifstream cin(lex_r.txt); / lex_r.

4、txt 存放词法分析结果,语法分析器从该文件输入数据。 struct code_val t; /结构变量,存放单词二元式。 cint.codet.val; /读一单词 int action; int i,j=0; /输出时使用的计数器,并非必要。 coutstept状态栈t符号栈t输入符号endl;/输出标题并非 必要。 do coutj+)t; /输出 step,并非必要。 for(i=0;i=top;i+)coutstatei;coutt;/输出状态栈内容,并非必要。 for(i=0;i=top;i+)coutsymboli; /输出符号栈内容,并非必要。 couttt.code0 sym

5、boltop=t.code; cint.codet.val; /读一单词 else if(action 0) /归约 if(strcmp(p-action+3,) /产生式的右部符号串长度为 0,无需退栈。 top=top-(strlen(p-action)-3); /为汉字,占二字节,故减 3。 statetop+1=Mstatetopcol(p-action0); /产生式左部符号 symbol+top=p-action0; else if(action=99) /接受 couttAccendl; break; else /出错 coutactionendl; break; while(1

6、); int col(char c) /将字符+* ()i#ETF 分别转换为数字 012345678 for(int i=0;i(int)strlen(TNT);i+) 学 海 无 涯 3 if(c=TNTi)return i; coutcendl; exit(0); /终止程序运行 3. 查看生成的 par_r.txt 文件,对文件中的内容进行分析,更深刻理解 LR 语法分析的分析 过程。 par_r.txt 文件: step 状态栈 符号栈 输入符号 0) 0 # i 1) 05 #i * 2) 03 #F * 3) 02 #T * 4) 027 #T* i 5) 0275 #T*i +

7、 6) 02710 #T*F + 7) 02 #T + 8) 01 #E + 9) 016 #E+ i 10) 0165 #E+i # 11) 0163 #E+F # 12) 0169 #E+T # 13) 01 #E # Acc 分析与体会: 此通过上下文无关文法作为语法分析的基础,配合实例,探讨了编译原 理构造中的自上而下语法分析法,并初步完成了语法分析器的实现。 手工模拟控制程序计算,对源程序进行 LR 语法分析 通过本次实验,进一步对 C 语言的知识进行了复习,并编写代码对源 程序进行 LR 语法分析,把其分析后的结果输入并保存到文件par_r.tx中。对 LR 分析有了更深的理解。LR(0)分析表构造的思想和方法是构造其他 LR 分 析表的基础。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号