编译原理LR语法分析器的控制程序实验报告(2020年8月).doc

上传人:xiang****la438 文档编号:141082385 上传时间:2020-08-04 格式:DOC 页数:3 大小:43KB
返回 下载 相关 举报
编译原理LR语法分析器的控制程序实验报告(2020年8月).doc_第1页
第1页 / 共3页
编译原理LR语法分析器的控制程序实验报告(2020年8月).doc_第2页
第2页 / 共3页
编译原理LR语法分析器的控制程序实验报告(2020年8月).doc_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

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

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

2、+*()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, 0, 9, 3, 0, 0, 4, 0, 5, 0, 0, 0,10, 6, 0, 0,11,-1, 7, 0

3、,-1, 0,-1,-3,-3, 0,-3, 0,-3,-5,-5, 0,-5, 0,-5;int col(char);/列定位函数原型void main()int state50=0;/状态栈初值char symbol50=#;/符号栈初值int top=0;/栈顶指针初值ofstream cout(par_r.txt);/语法分析结果输出至文件par_r.txtifstream cin(lex_r.txt); / lex_r.txt存放词法分析结果,语法分析器从该文件输入数据。struct code_val t;/结构变量,存放单词二元式。cint.codet.val;/读一单词 int

4、action;int i,j=0;/输出时使用的计数器,并非必要。coutstept状态栈t符号栈t输入符号endl;/输出标题并非必要。docoutj+)t;/输出step,并非必要。for(i=0;i=top;i+)coutstatei;coutt;/输出状态栈内容,并非必要。for(i=0;i=top;i+)coutsymboli; /输出符号栈内容,并非必要。couttt.code0 & action!=99)/移进state+top=action;symboltop=t.code; cint.codet.val;/读一单词else if(action 0)/归约if(strcmp(p

5、-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);int col(char c)/将字符+* ()i#ETF分别转换为数字012345678for(int i=0;i(int)strlen(TNT);i+)if(c=T

6、NTi)return i;coutcendl;exit(0);/终止程序运行3. 查看生成的par_r.txt文件,对文件中的内容进行分析,更深刻理解LR语法分析的分析过程。par_r.txt文件:step状态栈符号栈输入符号0)0#i1)05#i*2)03#F*3)02#T*4)027#T*i5)0275#T*i+6)02710#T*F+7)02#T+8)01#E+9)016#E+i10)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分析表的基础。3

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 总结/报告

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