语法分析——递归下降分析法(共8页).doc
《语法分析——递归下降分析法(共8页).doc》由会员分享,可在线阅读,更多相关《语法分析——递归下降分析法(共8页).doc(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上实验2 语法分析递归下降分析法 一、实验目的1、通过该课程设计要学会用消除左递归的方法来使文法满足进行确定自顶向下分析的条件。 2、学会用C/C+高级程序设计语言来设计一个递归下降分析法的语法分析器; 3、通过该课程设计,加深对语法分析理论的理解,培养动手实践的能力。 二、设计内容 参考算数运算的递归子程序构造方法及代码,完成以下任务:构造布尔表达式的文法,并编写其递归子程序。程序设计语言中的布尔表达式有两个作用,一是计算逻辑值,更多的情况是二,用作改变控制流语句中条件表达式,如在if-then,if-then-else或是while-do语句中使用。布尔表达式是由布
2、尔算符(and,or,not)施予布尔变量或关系运算表达式而成。为简单起见,以如下文法生成的布尔表达式作为设计对象:EE and E | E or E | not E | i rop i | true | falsei标识符|数字rop= | | = | | = | 以上文法带有二义性,并且未消除左递归,请对之处理后,再构造递归下降程序。可适当减少工作量,暂时忽略id的定义,输入时直接用数字或字母表示。三、语法分析器的功能 该语法分析器能够分析词法分析器的结果,即单词二元式。在输入单词二元式后,能输出分析的结果。 四、算法分析 1、语法分析的相关知识; 2、递归子程序法的相关理论知识;3、根据
3、递归子程序法相关理论,具体针对文法的每一条规则编写相应得递归子程序以及分析过程等。 /在递归子程序的编写过程中,当要识别一个非终结符时,需时刻留意该非终结符的FIRST集与FOLLOW集。程序示例一:G:Pbegin d;X end G:Pbegin d;X end Xd;X|Y Xd;X|Y YY;s|s YsZ Z;sZ|相应的递归子程序设计如下:P() if(token=“begin“) Read(token); If(token=d) Read(token); Else ERROR; If (token=;) Read(token);ElseERROR;If (token=d | s)
4、X();Else ERROR; If(token=end) OK;Else ERROR;X() /Xd;X|Yif(token=d)read(token); if(token=;) read(token); else ERROR; If(token=d) X(); Else if (token=s) /注意:对Y的识别也可以是在X的过程中一开始就进行,所以在最外层分支中,加上一个token=s的分支 Y(); Else ERROR; Else ERROR;Y() / YsZ if(token=s) read(token); If(token=; | end) Z(); Else ERROR;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语法分析 递归 下降 分析
限制150内