《编译原理作业4解答.docx》由会员分享,可在线阅读,更多相关《编译原理作业4解答.docx(6页珍藏版)》请在三一办公上搜索。
1、编译原理作业4解答4.1 对下面文法,设计递归下降分析程序。 SaAS|(A) , AAb|c 首先将左递归去掉,将规则 AAb|c 改成 Acb 过程S N INPUTSYM=a Y INPUTSYM=下一个符号 INPUTSYM=( Y INPUTSYM=下一个符号 N 错误 过程A 过程A 过程S N INPUTSYM=) Y INPUTSYM=下一个符号 错误 出口 非终结符号S的分析程序 过程A N INPUTSYM=c 非终结符号A的分析程序 Y INPUTSYM=下一个符号 错误 INPUTSYM=下一个符号 INPUTSYM=b Y N 出口 4.2 设有文法GZ: Z=(A)
2、 , A=a|Bb , B=Aab 若采用递归下降分析方法,对此文法来说,在分析过程中,能否避免回溯?为什么? 若采用递归下降分析方法,对此文法来说,在分析过程中不能避免回朔。 规则 A: := a|Bb , FIRST(a)=a, FIRST(Bb)=a, 即此规则候选式的首符号集有相交,需要通过规则带入使候选式的第一个符号相同,然后提取公因子。但通过规则带入后最后一个候选式总是以B开头,而FIRST(B)=a, 所以无法提取出a, 候选式的首符号集总是相交。但可将B规则代入A规则得:A=a|Bb 转换成A=aabb即可避免回溯。 4.3 若有文法如下,设计递归下降分析程序。 | Id=;
3、|+|- |*|/ ID|NUM|() 去掉左递归,将规则|FIRST()=ID 改为, | + | - 改为 | * | / 改为 语句 N INPUTSYM=ID Y 赋值语句 出口 语句的分析程序 赋值语句 N INPUTSYM=ID Y INPUTSYM=下一个符号 错误 N 赋值语句的分析程序 表达式 项 INPUTSYM=下一个符号 Y INPUTSYM=+ N Y INPUTSYM=- N 出口 表达式的分析程序 项 因子 INPUTSYM=下一个符号 Y INPUTSYM=* 复值语句的分析程序 N 项的分析程序 因子 N INPUTSYM=ID Y INPUTSYM=下一个符号 N 错误 出口 INPUTSYM=( Y INPUTSYM=下一个符号 INPUTSYM=NUM Y N 因子的分析程序 Y 表达式 错误 INPUTSYM=)