首页 第四章课后作业答案

第四章课后作业答案

举报
开通vip

第四章课后作业答案P1774.14 为练习4.3的文法构造一个预测语法分析器 bexpr→bexpr or bterm|bterm bterm→bterm and bfactor | bfactor bfactor→not bfactor|(bexpr)|true |false 解1  非递归方法 1) 消除左递归 bexpr→bterm A    A→or bterm A    A→ε bterm→bfactor B   B→and bfactor B    B→ε bfactor→not bfactor ...

第四章课后作业答案
P1774.14 为练习4.3的文法构造一个预测语法分析器 bexpr→bexpr or bterm|bterm bterm→bterm and bfactor | bfactor bfactor→not bfactor|(bexpr)|true |false 解1  非递归方法 1) 消除左递归 bexpr→bterm A    A→or bterm A    A→ε bterm→bfactor B   B→and bfactor B    B→ε bfactor→not bfactor bfactor→(bexpr) bfactor→true bfactor→false 2) 求first集 与 follow集 针对以同一非 总结 初级经济法重点总结下载党员个人总结TXt高中句型全总结.doc高中句型全总结.doc理论力学知识点总结pdf 符开头的产生式右部求first集  如果该非终结符能产生ε  则需要求其follow集  bexpr→bterm A          first(bterm  A)= {not,(,true,false} A→or bterm A          first(or bterm  A)={or} A→ε                  follow(A)=follow(bexpr)= {$, )} bterm→bfactor B        first(bfactor B)={not,(,true,false}              B→and bfactor B         first(and bfactor B)={and} B→ε                  follow(B)=follow(bterm)=first(A) 因为first(A)= {or , ε} 包含ε 所以follow(B)=follow(bterm) =first(A) ∪follow(A)-{ε}={or, $, )} bfactor→not bfactor    first(not bfactor)={not} bfactor→(bexpr)         first((bexpr))={(} bfactor→true           first(true)={true} bfactor→false           first(false)={false} 3) 根据步骤2)画预测分析 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf   or and not ( ) true false $ bexpr         A           bterm         B         bfactor                           表中空白处填error,表示调用错误处理程序 4) 根据步骤3)编写预测分析程序 下面给出通用的预测分析算法,具体程序留给同学们根据算法自己完善。 repeat X=当前栈顶符号;a=当前输入符号; if X∈VT∪{#} then if X=a then if X≠# then {将X弹出,且前移输入指针} else error else if M[X,a]=Y1Y2…Yk then {将X弹出;依次将Yk…Y2Y1压入栈; 输出产生式X→Y1Y2…Yk } else error until X=# 注: 如果考虑错误恢复,上面的预测分析表还显得简单,应该将每个非总结符的follow集作为同步(sync)记号,便于错误恢复。具体留给感兴趣的同学深入研究 解2:递归下降方法 ①消除给定文法中的左递归,并提取公因子: bexpr→bterm {or bterm } bterm→bfactor {and bfactor} bfactor→not bfactor | (bexpr) | true |false ② 用类Pascal语言写出其递归预测分析器 PROCEDURE bexpr; BEGIN Bterm WHILE (lookahead =='or') BEGIN match ('or'); bterm; END; END; PROCEDURE bterm; BEGIN bfactor; WHILE (lookahead =='and'); BEGIN match ('and'); bfactor; END; END; PROCEDURE bfactor; BEGIN if (llokahead=='not') then BEGIN match ('not'); bfactor; END else if (lookahead=='(') then BEGIN match ('('); bexpr; match(')'); END else if (lookahead =='true') then match ('true) else if (lookahead=='false') then match ('false'); else error; END; P1784.24 图4-60给出了练习4.1中文法的算符优先关系,利用这些优先关系分析练习4.1(b)的句子。 S→(L)|a L→L,S|S 解: 对每个终结符或$建立符号f与g,把f(和g) 分成一组。根据文法的算符优先关系表,画出如下的有向图。 优先函数如下: 用算符优先分析法分析句子(a,(a,a))  另外2个句子的分析略。 (也可不必如上面先构造优先矩阵在分析,亦可直接分析) P1794.35 考虑下面文法 E→E+T|T T→TF|F F→F*|a|b a) 试为该文法构造SLR语法分析表 解: 该文法的拓广文法G'为 (0) E' → E (1) E → E+T (2) E → T (3) T → TF (4) T → F (5) F → F* (6) F → a (7) F → b 其LR(0)项目集 规范 编程规范下载gsp规范下载钢格栅规范下载警徽规范下载建设厅规范下载 族和goto函数(识别活前缀的DFA)如下: I0 = {E'→·E, E→·E+T, E→·T, T→·TF, T→·F, F→·F*, F→·a, F→·b} I1 ={E'→E·, E→E·+T} I2 ={E→T·, T→T·F, F→·F*, F→·a, F→·b} I3 ={T→F·, F→F·*} I4 ={F→a·} I5 ={F→b·} I6 ={E→E+·T, T→·TF, T→·F, F→·F*, F→·a, F→·b} I7 ={T→TF·, F→F·*} I8 ={F→F*·} I9 ={E→E+T·, T→T·F, F→·F*, F→·a, F→·b} 求FOLLOW集: FOLLOW(E)={+, $} FOLLOW(T)={+, $, a, b} FOLLOW(F)={+, $, a, b, *} 构造的SLR分析表如下: 显然,此分析表无多重定义入口,所以此文法是SLR文法。 P1794.37 a)证明下面的文法是LL(1)文法,但不是SLR(1)文法 S→AaAb|BbBa A→ε B→ε 解: 对于产生式S→AaAb|BbBa 来说 FIRST(AaAb)∩FIRST(BbBa)={a}∩{b}=Φ 而A,B∈VN仅有一条候选式。 因此,这个文法是LL(1)的。 下面构造这个文法的识别活前缀的DFA。 I0 = {S'→·S, S→·AaAb, S→·BbBa, A→·, B→·} I1 = {S'→S·} I2 = {S→A·aAb} I3 = {S→B·bBa} I4 = {S→Aa·Ab, A→·} I5 = {S→Bb·Ba, B→·} I6 = {S→AaA·b} I7 = {S→BbB·a} I8 = {S→AaAb·} I9 = {S→BbBa·} 由于FOLLOW(A)=FOLLOW(B)={a, b} 因此项目集I0中存在归约-归约冲突。在I0状态下,当输入符号是a或是b时,不知用A→ε还是B→ε进行归约。故此文法不是SLR(1)的。但是,此文法时LR(1)的。 P1794.40证明下面的文法是LR(1)文法 S→Aa| bAc| Bc| bBa A→d B→d 解 拓广文法为: G' : (0) S'→S (1) S→Aa (2) S→bAc (3) S→Bc (4) S→bAa (5) A→d (6) B→d 有效项目集族为: LR(1)项目集不存在冲突 该文法是LR(1)文法 LR(1)项目集不存在冲突 该文法是LR(1)文法
本文档为【第四章课后作业答案】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_614050
暂无简介~
格式:doc
大小:106KB
软件:Word
页数:0
分类:互联网
上传时间:2019-09-20
浏览量:25