清华大学编译原理第二版课后习答案.docx

清华大学编译原理第二版课后习答案.docx

ID:52456

大小:29.32 KB

页数:25页

时间:2017-04-27

清华大学编译原理第二版课后习答案.docx_第1页
清华大学编译原理第二版课后习答案.docx_第2页
清华大学编译原理第二版课后习答案.docx_第3页
清华大学编译原理第二版课后习答案.docx_第4页
清华大学编译原理第二版课后习答案.docx_第5页
资源描述:

《清华大学编译原理第二版课后习答案.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、清华大学第二版编译原理答案《编译原理》课后习题答案第一章第 4 题对下列错误信息,请指出可能是编译的哪个阶段(词法分析、语法分析、语义分析、代码生成)报告的。(1) else 没有匹配的if(2) 数组下标越界(3) 使用的函数没有定义(4) 在数中出现非数字字符答案:(1) 语法分析(2) 语义分析(3) 语法分析(4) 词法分析《编译原理》课后习题答案第三章第1 题文法G=({A,B,S},{a,b,c},P,S)其中P 为:S→Ac

2、aBA→abB→bc写出L(G[S])的全部元素。答案:L(G[S]

3、)={abc}第2 题文法G[N]为:N→D

4、NDD→0

5、1

6、2

7、3

8、4

9、5

10、6

11、7

12、8

13、9G[N]的语言是什么?答案:G[N]的语言是V+。V={0,1,2,3,4,5,6,7,8,9}N=>ND=>NDD.... =>NDDDD...D=>D......D或者:允许0 开头的非负整数?第3题为只包含数字、加号和减号的表达式,例如9-2+5,3-1,7等构造一个文法。答案:G[S]:S->S+D

14、S-D

15、DD->0

16、1

17、2

18、3

19、4

20、5

21、6

22、7

23、8

24、9第4 题已知文法G[Z]:Z→aZb

25、ab写出L(G[Z

26、])的全部元素。答案:Z=>aZb=>aaZbb=>aaa..Z...bbb=> aaa..ab...bbbL(G[Z])={anbn

27、n>=1}清华大学第二版编译原理答案第5 题写一文法,使其语言是偶正整数的集合。 要求:(1) 允许0 打头;(2)不允许0 打头。答案:(1)允许0 开头的偶正整数集合的文法E→NT

28、DT→NT

29、DN→D

30、1

31、3

32、5

33、7

34、9D→0

35、2

36、4

37、6

38、8(2)不允许0 开头的偶正整数集合的文法E→NT

39、DT→FT

40、GN→D

41、1

42、3

43、5

44、7

45、9D→2

46、4

47、6

48、8F→N

49、0G→D

50、0

51、第6 题已知文法G:<表达式>::=<项>|<表达式>+<项><项>::=<因子>|<项>*<因子><因子>::=(<表达式>)|i试给出下述表达式的推导及语法树。(5)i+(i+i)(6)i+i*i答案:<表达式><表达式> + <项><因子><表达式><表达式> + <项><因子>i<项><因子>i<项><因子>i( )(5) <表达式>=><表达式>+<项>=><表达式>+<因子>=><表达式>+(<表达式>)清华大学第二版编译原理答案=><表达式>+(<表达式>+<项>)=><表达式>+(<表达式>

52、+<因子>)=><表达式>+(<表达式>+i)=><表达式>+(<项>+i)=><表达式>+(<因子>+i)=><表达式>+(i+i)=><项>+(i+i)=><因子>+(i+i)=>i+(i+i)<表达式><表达式> + <项><项> * <因子><因子> i<项><因子>ii(6) <表达式>=><表达式>+<项>=><表达式>+<项>*<因子>=><表达式>+<项>*i=><表达式>+<因子>*i=><表达式>+i*i=><项>+i*i=><因子>+i*i=>i+i*i第7 题证明下述文法G[〈表达式

53、〉]是二义的。〈表达式〉∷=a

54、(〈表达式〉)

55、〈表达式〉〈运算符〉〈表达式〉〈运算符〉∷=+

56、-

57、*

58、/答案:可为句子a+a*a 构造两个不同的最右推导:最右推导1 〈表达式〉〈表达式〉〈运算符〉〈表达式〉〈表达式〉〈运算符〉a〈表达式〉* a〈表达式〉〈运算符〉〈表达式〉* a〈表达式〉〈运算符〉a * a〈表达式〉+ a * aa + a * a最右推导2 〈表达式〉〈表达式〉〈运算符〉〈表达式〉〈表达式〉〈运算符〉〈表达式〉〈运算符〉〈表达式〉〈表达式〉〈运算符〉〈表达式〉〈运算符〉 a〈表达式〉〈

59、运算符〉〈表达式〉 * a〈表达式〉〈运算符〉a * a清华大学第二版编译原理答案〈表达式〉+ a * aa + a * a第8 题文法G[S]为:S→Ac

60、aBA→abB→bc该文法是否为二义的?为什么?答案:对于串abc(1)S=>Ac=>abc (2)S=>aB=>abc即存在两不同的最右推导。所以,该文法是二义的。或者:对输入字符串abc,能构造两棵不同的语法树,所以它是二义的。Sa Bb cSA ca b第9 题考虑下面上下文无关文法:S→SS*

61、SS+

62、a(1)表明通过此文法如何生成串aa+a*

63、,并为该串构造语法树。SS S *S S + aa a(2)G[S]的语言是什么?答案:(1)此文法生成串aa+a*的最右推导如下S=>SS*=>SS*=>Sa*=>SS+a*=>Sa+a*=>aa+a*(2)该文法生成的语言是:*和+的后缀表达式,即逆波兰式。第10 题文法S→S(S)S

64、ε(1) 生成的语言是什么?(2) 该文法是二义的吗?说明理由。答案:(1) 嵌套的括号(2) 是二义的,因为对于()()可

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

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

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