欢迎来到天天文库
浏览记录
ID:22510286
大小:80.49 KB
页数:6页
时间:2018-10-29
《递归下降语法分析实验》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、实验三:递归下降语法分析实验姓名:学号:班级:计算机二班一、实验目的:通过设计、开发一个高级语言的递归下降语法分析程序,实现对词法分析程序所提供的单词序列进行语法检查和结构分析,加深对相关课堂教学内容的理解,提高语法分析方法的实践能力。二、实验要求:(1).理解语法分析在编译程序中的作用,以及它与词法分析程序的关系;(2).掌握递归下降语法分析方法的主要原理;(3).理解递归下降分析法对文法的要求;(4).熟练掌握Select集合的求解方法;(5).熟练掌握文法变黄方法(消除做递归和提取公因子)。三、实验原理:递归下降分析法是语法分析中最鉍懂的一种
2、方法,基本原理是:对每个非中介符号(分别代表一个语法单位)按其产生式结构构造相应语法分析子程序,以完成该非终结符号所对应的语法单位的分析和识别任务。其中终结符号产生匹配命令,而非终结符号则产生过程调用命令。因为文法可以递归,相应子程序也是递归的,所以称这种方法为递归子程序下降法或递归下降法。其屮子程序的结构与产生式结构几乎是一致的。假设一个文法中的非终结符号A的全部产生式为Aal
3、a2
4、......
5、an则必须满足一下条件才能保证可以唯一的选择合适的产生式,才能采用递归下降分析法:Select(Aa0PlSelect(Aa_))=O,其中ij假设文
6、法中有如下的产生式Api
7、p2
8、...
9、pn,则应按如下方法编写语法分析子程序:procedureA()beginiftokeneSelect(p)then0(Pi)elseiftokeneSelect(A->P:)then0(PJelse•••••♦iftokene$elect(A->Pfl)then0(Pn)elseerror()end其中=X1X2...Xn,0(p1)=0-(X1);6(X2);...;0W;如果IX.eW,0-(X0=Xi;如果X,eVT,9(X0=MatchCX,):如果Xpe,0(X0=skip(空语句)。U!、源代码
10、:#includeusingnamespacestd;voidS();voidT():voidT1();voiderror();voidscancr():charsym;voidS(){scaner()if(sym==,a,
11、sym==,,)elseif(sym二’(’)!scancr():TO;if(sym==’)’)scaner()elseerror();}elseerror();}voidT(){s();Tl();voidT1()if(sym==,,,)scaner():so;TlO;}elseif(sym!=,)’){e
12、rror();}}voidscaner(){cout〈〈sym〈〈endl;}voiderror(){cout〈<"不是该文法的句子";intmain()scancr():SO;if(sym二’$’)COut<〈"是该文法的句子";elseccmt〈〈"不是该文法的句子";return0;
此文档下载收益归作者所有