编译原理课后答案

编译原理课后答案

ID:14628895

大小:3.01 MB

页数:17页

时间:2018-07-29

编译原理课后答案_第1页
编译原理课后答案_第2页
编译原理课后答案_第3页
编译原理课后答案_第4页
编译原理课后答案_第5页
资源描述:

《编译原理课后答案》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第二章2.3叙述由下列正规式描述的语言17(a)0(0

2、1)*0在字母表{0, 1}上,以0开头和结尾的长度至少是2的01串(b)((ε

3、0)1*)*在字母表{0, 1}上,所有的01串,包括空串(c)(0

4、1)*0(0

5、1)(0

6、1)在字母表{0, 1}上,倒数第三位是0的01串(d)0*10*10*10*在字母表{0, 1}上,含有3个1的01串17(e)(00

7、11)*((01

8、10)(00

9、11)*(01

10、10)(00

11、11)*)*在字母表{0, 1}上,含有偶数个0和偶数个1的01串2

12、.4为下列语言写正规定义 C语言的注释,即以 /* 开始和以 */ 结束的任意字符串,但它的任何前缀(本身除外)不以 */ 结尾。 [解答]  other → a 

13、 b 

14、 …    other指除了*以外C语言中的其它字符  other1 → a 

15、 b 

16、 …    other1指除了*和/以外C语言中的其它字符  comment → /* other* (* ** other1 other*)* ** */   (f) 由偶数个0和偶数个1构成的所有0和1的串。 [解答] 由题目分析可知

17、,一个符号串由0和1组成,则0和1的个数只能有四种情况: x 偶数个0和偶数个1(用状态0表示); x 偶数个0和奇数个1(用状态1表示); x 奇数个0和偶数个1(用状态2表示); x 奇数个0和奇数个1(用状态3表示); 所以, x 状态0(偶数个0和偶数个1)读入1,则0和1的数目变为:偶数个0和奇数个1(状态1) x 状态0(偶数个0和偶数个1)读入0,则0和1的数目变为:奇数个0和偶数个1(状态2) x 状态1(偶数个0和奇数个1)读入1,则0和1的数目变为:偶数个0和偶数个1(状态0

18、) x 状态1(偶数个0和奇数个1)读入0,则0和1的数目变为:奇数个0和奇数个1(状态3) x 状态2(奇数个0和偶数个1)读入1,则0和1的数目变为:奇数个0和奇数个1(状态3)x 状态2(奇数个0和偶数个1)读入0,则0和1的数目变为:偶数个0和偶数个1(状态0) x 状态3(奇数个0和奇数个1)读入1,则0和1的数目变为:奇数个0和偶数个1(状态2) x 状态3(奇数个0和奇数个1)读入0,则0和1的数目变为:偶数个0和奇数个1(状态1) 因为,所求为由偶数个0和偶数个1构成的所有0和1

19、的串,故状态0既为初始状态又为终结状态,其状态转换图: 由此可以写出其正规文法为: S0 → 1S1 

20、 0S2 

21、 ε  S1 → 1S0 

22、 0S3 

23、 1   S2 → 1S3 

24、 0S0 

25、 0  S3 → 1S2 

26、 0S1在不考虑S0 → ε产生式的情况下,可以将文法变形为: S0 = 1S1 + 0S2    S1 = 1S0 + 0S3 + 1 S2 = 1S3 + 0S0 + 0 S3 = 1S2 + 0S1    所以:     S0 = (00

27、11) S0 + (01

28、1

29、0) S3 + 11 + 00           (1) S3 = (00

30、11) S3 + (01

31、10) S0 + 01 + 10           (2)    解(2)式得:     S3 = (00

32、11)* ((01

33、10) S0 + (01

34、10))    代入(1)式得:     S0 = (00

35、11) S0 + (01

36、10) (00

37、11)*((01

38、10) S0 + (01

39、10)) + (00

40、11)    => S0 = ((00

41、11) + (01

42、10) (0

43、0

44、11)*(01

45、10))S0 + (01

46、10) (00

47、11)*(01

48、10) + (00

49、11)    => S0 = ((00

50、11)

51、(01

52、10) (00

53、11)*(01

54、10))*((00

55、11) + (01

56、10) (00

57、11)* (01

58、10))    => S0 = ((00

59、11)

60、(01

61、10) (00

62、11)* (01

63、10))+    因为S0→ε所以由偶数个0和偶数个1构成的所有0和1的串的正规定义为: S0 → ((00

64、11)

65、(01

66、10) (00

67、11)

68、* (01

69、10))*  (g) 由偶数个0和奇数个1构成的所有0和1的串。 [解答] 此题目我们可以借鉴上题的结论来进行处理。  17 对于由偶数个0和奇数个1构成的所有0和1的串,我们分情况讨论: (1) 若符号串首字符为0,则剩余字符串必然是奇数个0和奇数个1,因此我们必须在上题偶数个0和偶数个1的符号串基础上再读入10(红色轨迹)或01(蓝色轨迹),又因为在0→1和1→3的过程中可以进行多次循环(红色虚线轨迹),同理0→2和2→3(蓝色虚线轨迹),所以还必须增加符号串(00

70、11)*,我

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

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

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