欢迎来到天天文库
浏览记录
ID:38239255
大小:654.97 KB
页数:4页
时间:2019-05-28
《贵州大学【习题答案】第03章 词法分析》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、《编译原理》课后练习参考答案第03章词法分析课后练习参考答案第03章词法分析1.写出正规式a(a
2、b)*(ε
3、((.
4、_)(a
5、b)(a
6、b)*))相应的正规文法。【解】引入开始符号S,构造S→a(a
7、b)*ε
8、((.
9、_)(a
10、b)(a
11、b)*),a(a
12、b)*ε
13、((.
14、_)(a
15、b)(a
16、b)*)=a(a
17、b)*
18、a(a
19、b)*.(a(a
20、b)*
21、b(a
22、b)*)
23、a(a
24、b)*_(a(a
25、b)*
26、b(a
27、b)*)=aA
28、aC*引入非终结符A,B,C+A→(a
29、b)*→ε
30、(a
31、b)
32、→ε
33、(a
34、b)(a
35、b)*→
36、ε
37、(a
38、b)A
39、C→(a
40、b)*.(a(a
41、b)*
42、b(a
43、
44、b)*)
45、(a
46、b)*_(a(a
47、b)*
48、b(a
49、b)*)→(ε
50、(a
51、b)(a
52、b)*).(a(a
53、b)*
54、b(a
55、b)*)
56、(
57、ε
58、(a
59、b)(a
60、b)*)_(a(a
61、b)*
62、b(a
63、b)*)
64、→.(a(a
65、b)*
66、b(a
67、b)*)
68、(a
69、b)
70、(a
71、b)*.(a(a
72、b)*
73、b(a
74、b)*)
75、_(a(a
76、b)*
77、b(a
78、b)*)
79、(a
80、b)
81、(a
82、b)*_(a(a
83、b)*
84、b(a
85、b)*)→.B
86、_B
87、aC
88、bCB→(a
89、b)(a
90、b)*→aA
91、bA得到正规文法G[S]:S→aA
92、aCA→aA
93、bA
94、εC→aC
95、bC
96、.B
97、_BB→aA
98、bA2.给定正规式:0(0
99、1)*1
100、(1)写出相应的正规文法。(2)画出相应的状态转移图。【解】(1)引入非终结符S,AS→0(0
101、1)*1→0A++A→(0
102、1)*1→(ε
103、(0
104、1)
105、)1→1
106、(0
107、1)1→1
108、(0
109、1)(0
110、1)*1→1
111、0A
112、1A得到正规文法G[S]:S0AA0A
113、1A
114、1(2)第一问中给出的G[S]是一个右线性文法。按照由右线性正规文法构造状态转换图的方法构造相应的状态转移图如下:0
115、101SAZ共4页,第1页《编译原理》课后练习参考答案第03章词法分析3.给定文法G[Z]:S0U
116、1VU1S
117、1V0S
118、0(1)请构造该文法的状态转换图(2)利用所得的状态转换图判别符号串1001
119、01和100111是否该文法的句子。【解】(1)增加一个终态Z,得到该文法对应的状态转换图如下:0SU10110VZ(2)对符号串100101的识别过程经历了状态S、V、S、U、S、U、Z,终止于终止状态Z,所以100101是此文法的句子。对符号串100111的识别过程经历了状态S、V、S、U、S、V识别出10011后,在状态V无法进一步识别,所以100111不是此文法的句子。4.给出描述包含奇数个1或奇数个0的二进制数串的正规表达式。【解】本题求二进制串,并且要求包含奇数个0或奇数个1,由于0和1都可以在二进制串中任何地方出现,所以本题只需要考虑包含奇数个0的字符串,另外一种情况
120、可以类似求得。由于只关心0的个数的奇偶数,我们可以把二进制串分成多段来考虑:第1段为二进制串的开始到第1个0为止,这一段包含1个0,并且0的前面有0或多个1。对于剩下的二进制串按照每段包含两个0的方式去划分,即以0开始,以0结尾,中间可以有0个或多个1。如果一个二进制串被这样划分完后,剩下的部分如果全部是全1串(这些全1串在前面划分的串之间或最后),则该二进制串就具有奇数个0。所以包含奇数个0的二进制串可以这样描述:***以第1段(1)开始,后面由全1串(1)以及包含两个0的串(010)组成,*********其正规表达式为:10(1
121、010),本题的解答则是:10(1
122、010
123、)
124、01(0
125、101)。5.请给出接受{0,1}上不含子串010的所有串的正规表达式和DFA。【解】本题有两种解题思路,一种是直接构造一个满足条件的状态转换图,然后根据状态转换图求正规表达式。另一种方法是分析题意直接写出满足条件的正规表达式。共4页,第2页《编译原理》课后练习参考答案第03章词法分析方法1:直接写出满足条件的状态转换图。在状态转换图中引入3个状态,初始状态S(也是终止状态),表示当前读入的串中不包含子串010,并且最后读入的字符是1或没读入任何字符。初始状态读入字符0后进入一个新的状态A,状态A表示当前读入的串中不包含子串010,并且最后读入的字符是0。状态A如果读
126、入字符1后进入新状态B,状态B表示当前读入的串中不包含子串010,并且最后读入的字符是01,状态B不接受字符0。然后用0、1连接各状态就构造出了满足条件的状态转换图,如下所示。然后根据状态转换图来求正规表达式,这里就不详细说明了。方法2:直接写出满足条件的正规表达式。考虑满足条件的字符串中的1,在串的开始部分可以有0个或多个1,串的尾部也可以有0个或多个1,但串的之间只要出现1,则至少在两个以上,****所以满足条件的正规表达式为:1(0|111)1。****【解答】
此文档下载收益归作者所有