编译原理第4章作业答案

来源:互联网 编辑:李元芳 手机版

编译原理第4章作业答案 第四章

习题4.2.1:考虑上下文无关文法: S->S S +|S S *|a 以及串aa + a*(1)给出这个串的一个最左推导 S -> S S *

-> S S + S *

-> a S + S *

-> a a + S *

-> aa + a*(3)给出这个串的一棵语法分析树

习题4.3.1:下面是一个只包含符号a和b的正则表达式的文法。它使用+替代表示并运算的符号|,以避免和文法中作为元符号使用的竖线相混淆:

rexpr→ rexpr + rterm | rterm

rterm→rterm rfactor | rfactor

rfactor→ rfactor * | rprimary

rprimary→a | b1)对这个文法提取公因子2)提取公因子的变换使这个文法适用于自顶向下的语法分析技术吗?3)提取公因子之后,原文法中消除左递归

4)得到的文法适用于自顶向下的语法分析吗?解1)

提取左公因子之后的文法变为

rexpr→ rexpr + rterm | rterm

rterm→rterm rfactor | rfactor

rfactor→ rfactor * | rprimary

rprimary→a | b2)

不可以,文法中存在左递归,而自顶向下技术不适合左递归文法3)

消除左递归后的文法

-> rterm ’

rexpr’-> + rterm rexpr’|a06c34952043eb8035c521bac955bdcc.png

-> rfactor ’

rterm’-> rfactor rterm’|a06c34952043eb8035c521bac955bdcc.png

or-> rprimay or’

rfactor’-> *rfactor’|a06c34952043eb8035c521bac955bdcc.pngrprimary-> a | b

4)该文法无左递归,适合于自顶向下的语法分析

习题4.4.1:为下面的每一个文法设计一个预测分析器,并给出预测分析表。可能要先对文法进行提取左公因子或消除左递归(3)S->S(S)S|a06c34952043eb8035c521bac955bdcc.png(5)S->(L)|a L->L,S|S解 (3)

消除该文法的左递归后得到文法 S->S’

S’->(S)SS’|a06c34952043eb8035c521bac955bdcc.png 用类Pascal语言构造的一个预测分析器:

PROCEDURE S?????BEGIN???????S;???????WHILE (lookahead==’(')???????THEN BEGIN???????????match ('(');???????????S;???????????match (')');?????????END;???????ELSE IF (lookahead=='a')???????????THEN match('a')???????????ELSE error?????END;

计算FIRST和FOLLOW集合

FIRST(S)={(,a06c34952043eb8035c521bac955bdcc.png} FOLLOW(S)={),$}

FIRST(S’)={(,a06c34952043eb8035c521bac955bdcc.png} FOLLOW(S’)={),$}

构建预测分析表

非终结符号输入符号()$SS->S’S->S’S->S’S’S’->(S)SS’S’->a06c34952043eb8035c521bac955bdcc.pngS’->a06c34952043eb8035c521bac955bdcc.png(5)

消除该文法的左递归得到文法

S->(L)|a L->SL’

L’->,SL’|a06c34952043eb8035c521bac955bdcc.png 用类Pascal语言的一个预测分析器: ???

PROCEDURE S?????BEGIN???????if (lookahead==’(')???????THEN BEGIN???????????match ('(');???????????L;???????????match (')');?????????END;???????ELSE IF (lookahead=='a')???????????THEN match('a')???????????ELSE error?????END;???PROCEDURE L;?????BEGIN???????S;???????WHILE (lookahead ==',');?????????BEGIN???????????match (',');???????????S;?????????END;?????END;

  • 编译原理教程课后习题答案——第四章
  • 编译原理第4章作业答案
  • 编译原理第4章习题答案
  • 编译原理清华版第四章第10-12题答案
  • 编译原理习题及答案(整理后)
  • 编译原理课后习题答案ch3
  • 编译原理_第1~5章习题课答案
  • 编译原理及实现课后习题答案
  • 编译原理第三章答案
  • 求文档: 编译原理课后答案王生原
  • 编译原理第4章答案
  • 编译原理第四章答案
  • 编译原理作业答案
  • 编译原理第4章4
  • 编译原理第4章1
  • 最新推荐
    热门推荐