递归下降语法分析实验

递归下降语法分析实验

ID:22510286

大小:80.49 KB

页数:6页

时间:2018-10-29

递归下降语法分析实验_第1页
递归下降语法分析实验_第2页
递归下降语法分析实验_第3页
递归下降语法分析实验_第4页
递归下降语法分析实验_第5页
资源描述:

《递归下降语法分析实验》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

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;

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

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

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