编译原理课后问题详解

编译原理课后问题详解

ID:44899242

大小:2.71 MB

页数:19页

时间:2019-11-01

编译原理课后问题详解_第1页
编译原理课后问题详解_第2页
编译原理课后问题详解_第3页
编译原理课后问题详解_第4页
编译原理课后问题详解_第5页
资源描述:

《编译原理课后问题详解》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

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

2、1)*0(c)(0

3、1)*0(0

4、1)(0

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

6、0)1*)*(d)0*10*10*10*在字母表{0,1}上,所有的01串,包括空串在字母表{0,1}上,含有3个1的01串(e)(00

7、11)*((01

8、10)(00

9、11)*(01

10、10)(00

11、11)*)*在字母表{0,1}上,含有偶数个0和偶数个1的01串2.4为下列语言写正规定义C语言的注释,即以/*开始和以*/结束的任意字符串,

12、但它的任何前缀(本身除外)不以*/结尾。[解答]other→a

13、b

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

15、b

16、…other1指除了*和/以外C语言中的其它字符comment→/*other*(***other1other*)****/(f)由偶数个0和偶数个1构成的所有0和1的串。[解答]由题目分析可知,一个符号串由0和1组成,则0和1的个数只能有四种情况:x偶数个0和偶数个1(用状态0表示);x偶数个0和奇数个1(用状态1表示);x奇数个0和偶数个1(用状态2表示);x奇数个0和奇数个1(用状态3表示);所以,x状态0(偶数个0和偶

17、数个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)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和

18、偶数个1(状态2)x状态3(奇数个0和奇数个1)读入0,则0和1的数目变为:偶数个0和奇数个1(状态1)因为,所求为由偶数个0和偶数个1构成的所有0和1的串,故状态0既为初始状态又为终结状态,其状态转换图:由此可以写出其正规文法为:S0→1S1

19、0S2

20、εS1→1S0

21、0S3

22、1S2→1S3

23、0S0

24、0S3→1S2

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

26、11)S0+(01

27、10)S3+11+00(1)S3=(00

28、11)S3+(01

29、

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

31、11)*((01

32、10)S0+(01

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

34、11)S0+(01

35、10)(00

36、11)*((01

37、10)S0+(01

38、10))+(00

39、11)=>S0=((00

40、11)+(01

41、10)(00

42、11)*(01

43、10))S0+(01

44、10)(00

45、11)*(01

46、10)+(00

47、11)=>S0=((00

48、11)

49、(01

50、10)(00

51、11)*(01

52、10))*((00

53、11)+(01

54、10)(00

55、11)*(01

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

57、11)

58、(01

59、10)(00

60、1

61、1)*(01

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

63、11)

64、(01

65、10)(00

66、11)*(01

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

68、→3(蓝色虚线轨迹),所以还必须增加符号串(00

69、11)*,我们用S0表示偶数个0和偶数个1,用S表示偶数个0和奇数个1则其正规定义为:S→0(00

70、11)*(01

71、10)S0S0→((00

72、11)

73、(01

74、10)(00

75、11)*(01

76、10))*(2)若符号串首字符为1,则剩余字符串必然是偶数个0和偶数个1,其正规定义为:S→1S0S0→((00

77、11)

78、(01

79、10)(00

80、11)*(01

81、10))*综合(1)和(2)可得,偶数个0和奇数个1构成的所有0和1串其正规定义为:S→0(00

82、11)*(01

83、10)S0

84、1S0S0→((00

85、11)

86、(01

87、

88、10)(00

89、11)*(01

90、10))*2.7(c)((ε

91、a)b

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

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

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