编译原理递归下降分析.doc

编译原理递归下降分析.doc

ID:51388106

大小:189.00 KB

页数:13页

时间:2020-03-23

编译原理递归下降分析.doc_第1页
编译原理递归下降分析.doc_第2页
编译原理递归下降分析.doc_第3页
编译原理递归下降分析.doc_第4页
编译原理递归下降分析.doc_第5页
资源描述:

《编译原理递归下降分析.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、软件学院《编译原理》课程实验报告HI课程名称:专业:班级:学号:学生姓名:指导老师:递归下降分析软件工程・netll2201107082231陆筱霞2014年6月25U一、实验目的:根据某一文法编制调试递归下降分析稈序,以便对任意输入的符号串进行分析。木次实验的目的主要是加深对递归下降分析法的理解。二、实验预习提示:1、递归下降分析法的功能词法分析器的功能是利用函数Z间的递归调用模拟语法树自上而下的构造过程。2、递归下降分析法的前提改造文法:消除二义性、消除左递归、提取左因子,判断是否为LL(1)文法,3、递归下降分析法实

2、验设计思想及算法为G的每个非终结符号U构造一个递归过程,不妨命名为UoU的产生式的右边指出这个过程的代码结构:(1)若是终结符号,则和向前看符号对照,若匹配则向前进一个符号;否则出错。(2)若是非终结符号,则调用与此非终结符对应的过稈。当A的右部有多个产生式时,可用选择结构实现。具体为:(1)对于每个非终结符号U->ullu2l—lun处理的方法如下:U(){ch二当前符号;if(ch可能是ul字的开头)处理ul的程序部分;elseif(ch可能是u2字的开头)处理u2的稈序部分;•••elseerror())(2)对于每

3、个右部ul->xlx2---xn的处理架构如下:处理xl的程序;处理x2的程序;•••处理xn的程序;(3)如果右部为空,则不处理。(4)对于右部中的每个符号xi%1如果xi为终结符号:if(xi==当前的符号){NextChar();return;}else出错处理%1如果xi为非终结符号,直接调用相应的过程xi()说明:NexiChar为前进一个字符函数。三、实验过程1、模块结构图1-1递归下降稈序框架图2、设计步骤1)给定文法:ETE+TITTTT*FIFF-»(E)Ii2)构造FIRST()集和FOLLOW()集表

4、2-1FIRST()集和FOLLOW()集FIRSTFOLLOWE(,i#,+,)T(,i#,+,),*F(,i#,+,),*3、程序源代码usingSystem;usingSystein.Collections.Generic;usingSystem.Text;namespace递归下降语法分析publicclassProgrampublicstaticchar[]a=newchar[50];publicstaticcharpublicstaticchar[]b=newchar[50];[]d=newchar[200];

5、publicstaticchar[]e二newchar[10];publicstaticpublicstaticpublicstaticpubliccharch;intnl,i1二0,flag二l,n二5;inttotal=0;/*步骤计数器*/staticintEl()intf,t;Console・Write(total);Console.Write("tE-->TGtz/);total++;flag=l;input0;input10;f=T();if(f==0)return(0);t-G();if(t==0)ret

6、urn(0);elsereturn(1);}publicstaticintE(){intf,t;Console.Write(total);Console.Write("tE-->TGt");total++;e[0]=,E';e[l]=,=,;e[2]二'〉’;e[3]='T';e[4]='G';e[5]二;output();flag=l;input.();inputl();f=T();if(f==0)return(0);t二G();if(t==0)return(0);elsereturn(l);}publicstati

7、cintT()intf,t;Console.Write(total);Console.Write("tT—〉FSt");total++;e[0]=r;e[l]==;e[2]=>';e⑶卄;e[4]二'S';e[5]='#';output();flag=l;input();input1();f二F();if(f==0)return(0);t=S();if(t==0)return(0);elsereturn(1);}publicstaticintG(){intf;if(ch='+'){b[il]=ch;Console.Wr

8、ite(total);Console.Write("tG-->+TGt");total++;e[0]=,G,;e[l]==;e[2]=>';e⑶二'+';e[4]='T';e[5]二'G';e⑹二;output();flag=0;input();input1();ch=a[++订];f=T();if

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。