编译原理期末复习题338.pdf
《编译原理期末复习题338.pdf》由会员分享,可在线阅读,更多相关《编译原理期末复习题338.pdf(25页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、.3.2 是非判断,对下面的陈述,正确的在陈述后的括号内写T,否则写 F。(1)有穷自动机接受的语言是正则语言。()(2)若 r1和 r2是上的正规式,则 r1|r2也是。()(3)设 M 是一个 NFA,并且 L(M)x,y,z,则 M 的状态数至少为 4 个。()(4)令 a,b,则 上所有以 b 为首的字构成的正规集的正规式为 b*(a|b)*。()(5)对任何一个 NFA M,都存在一个 DFA M,使得 L(M)=L(M)。()(6)对一个右线性文法 G,必存在一个左线性文法 G,使得 L(G)=L(G),反之亦然。()答案(1)T (2)T (3)F(4)F (5)T (6)T 3
2、.3 描述下列各正规表达式所表示的语言。(1)0(0|1)*0 (2)(|0)1*)*(3)(0|1)*0(0|1)(0|1)(4)0*10*10*10*(5)(00|11)*(01|10)(00|11)*(01|10)(00|11)*)*答案(1)以 0 开头并且以 0 结尾的,由 0 和 1 组成的符号串。(2)|0,1*(3)由 0 和 1 组成的符号串,且从右边开始数第 3 位为 0。(4)含 3 个 1 的由 0 和 1 组成的符号串。|0,1+,且 中含有 3 个 1 (5)|0,1*,中 0 和 1 为偶数 3.4 对于下列语言分别写出它们的正规表达式。(1)英文字母组成的所有符
3、号串,要求符号串中顺序包含五个元音。(2)英文字母组成的所有符号串,要求符号串中的字母依照词典顺序排列。(3)=0,1上的含偶数个 1 的所有串。(4)=0,1上的含奇数个 1 的所有串。(5)具有偶数个 0 和奇数个 1 的有 0 和 1 组成的符号串的全体。(6)不包含子串 011 的由 0 和 1 组成的符号串的全体。(7)由 0 和 1 组成的符号串,把它看成二进制数,能被3 整除的符号串的全体。答案(1)令 Letter 表示除这五个元音外的其它字母。(letter)*A(letter)*E(letter)*I(letter)*O(letter)*U(letter)*(2)A*B*.
4、Z*(3)(0|10*1)*(4)(0|10*1)*1.(5)分析 设 S 是符合要求的串,|S|=2k+1(k0)。则 SS10|S21,|S1|=2k(k0),|S2|=2k(k0)。且 S1是0,1上的串,含有奇数个 0 和奇数个 1。S2是0,1上的串,含有偶数个 0 和偶数个 1。考虑有一个自动机 M1接受 S1,那么自动机 M1如下:和 L(M1)等价的正规表达式,即 S1为:(00|11)|(01|10)(00|11)*(01|10)*(01|10)(00|11)*类似的考虑有一个自动机 M2接受 S2,那么自动机 M2如下:和 L(M2)等价的正规表达式,即 S2为:(00|1
5、1)|(01|10)(00|11)*(01|10)*因此,S 为:(00|11)|(01|10)(00|11)*(01|10)*(01|10)(00|11)*0|(00|11)|(01|10)(00|11)*(01|10)*1 (6)1*|1*0(0|10)*(1|)(7)接受 w 的自动机如下:对应的正规表达式:(1(01*0)1|0)*3.6 给出接受下列在字母表0,1上的语言的 DFA。(1)所有以 00 结束的符号串的集合。(2)所有具有 3 个 0 的符号串的集合。.答案(a)DFA M=(0,1,q0,q1,q2,q0,q2,)其中 定义如下:(q0,0)=q1 (q0,1)=q0
6、(q1,0)=q2 (q1,1)=q0(q2,0)=q2 (q2,1)=q0 (b)正则表达式:1*01*01*01*DFA M=(0,1,q0,q1,q2,q3,q0,q3,)其中 定义如下:(q0,0)=q1 (q0,1)=q0(q1,0)=q2 (q1,1)=q1(q2,0)=q3 (q2,1)=q2(q3,1)=q3 3.7 构造等价于下列正规表达式的有限自动机。(1)10|(0|11)0*1(2)(0|1)*|(11)*答案(1)DFA M=(0,1,q0,q1,q2,q3,q0,q3,)其中 定义如下:.(2)(q0,0)=q1 (q0,1)=q2(3)(q1,0)=q1 (q1,
7、1)=q3(4)(q2,0)=q3 (q2,1)=q1(5)(6)(2)DFA M=(0,1,q0,q0,q0,)(7)其中 定义如下:(8)(q0,0)=q0 (q0,1)=q0(9)3.8 给定右线性文法 G:S-0S|1S|1A|0B A-1C|1 B-0C|0 C-0C|1C|0|1 试求一个于 G 等价的左线性文法 G 3.9 试对于下列正规表达式使用证明定理 3。5 的构造算法构造非确定的有限自动机。请给出每个自动机在处理输入符号串 ababbab 的过程中的动作序列。(1)(a|b)*(2)(a*|b*)*(3)(|a)b*)*.3.10 转换练习 3.9 中的每个 NFA 为
8、DFA。并给出每个 DFA 在处理输入符号串 ababbab 的过程中的动作序列。3.11 试把练习 3.10 中得到的 DFA 的状态给以最小化。答案(1),(2),(3)的 DFA M 相同,化简结果为:(4)3.12 我们可以证明两个正规表达式是等价的,如果它们的最小状态 DFA 是相同的(除了状态的名字以外)。利用这一结论,请说明下列正规表达式都是等价的。(1)(a|b)*(2)(a*|b*)*(3)(|a)b*)*答案 根据 3.11 的结果知这几个正规表达式是等价的。3.13 对于下列正规表达式构造最小状态的 DFA。(1)(a|b)*a(a|b)(2)(a)b)*a(a|b)(a
9、|b)5 对如下文法:GS:S a b S|a a B|a d B b b B|b 分别给出句子 abaabbb 和 ad 的句柄 句子 ad 的语法分析树为:.句子 abaabbb 的语法分析树为:所以句子 abaabbb 的句柄是 b;句子 ad 的句柄是 ad.二、(10 分)说明如下文法是否是 LL(1)文法,若不是,将其转换为 LL(1)文法。最后给出该文法的LL(1)分析表。GA:A B e B B b|a 文法中有左递归,不是 LL(1)文法。转换为 G:A B e B a B Bb B|Predict(A B e)=a Predict(B a B)=a Predict(Bb B
10、)=b Predict(B )=e LL(1)分析表:a b e A B e B a B B b B S a b S a a B b b B b S a d.4.给出识别正则表达式((a|bc)*d)+的 NFA。5 已知文法 GS:S S;GG G G(T)H H a (S)T T+S S 找出句型:a(T+S);H;(S)的短语、简单短语和句柄。短语:a,T+S,a(T+S),H,a(T+S);H,(S)简单短语:a,T+S,H,(S)句柄是 a.6 已知文法 GS为:SAB|bC Ab|BaD|CAD|b DaS|c 对其每一个非终级符求 First 集和 Follow 集。First(
11、S)=b,a,First(A)=b,First(B)=a,First(C)=b,a,c First(D)=a,c Follow(S)=#Follow(A)=a,c,#Follow(B)=#Follow(C)=#Follow(D)=#二、(10 分)设有文法 GA:A iB*e B SB|S eC|.i C eC|判定该文法是否为 LL(1)文法?若是则给出它的 LL(1)分析表,否则说明理由。先计算各个产生式的 Predict 集:Predict(A-iB*e)=i;Predict(B-SB)=,.Predict(B-)=*.Predict(S-eC)=Predict(S-.i)=.Predi
12、ct(C-eC)=e Predict(C-)=因为 Predict 集没有冲突,所以是 LL(1)文法。LL(1)分析表如下:i *e .A-iB*e -B -S B -S B S -e C -.i C -eC -1、证明下面文法是 LL(1)的但不是 SLR(1)文法 SAaAb|BbBa A B 解:对于产生式 SAaAb|BbBa 来说 FIRST(AaAb)FIRST(BbBa)=ab=而 A,BVN仅有一条候选式。因此,这个文法是 LL(1)的。下面构造这个文法的识别活前缀的 DFA。I0=SS,SAaAb,SBbBa,A,B I1=SS I2=SAaAb I3=SBbBa I4=S
13、AaAb,A I5=SBbBa,B I6=SAaAb I7=SBbBa I8=SAaAb I9=SBbBa 由于 FOLLOW(A)=FOLLOW(B)=a,b 因此项目集 I0 中存在归约归约冲突。在 I0状态下,当输入符号是 a 或是 b 时,不知用 A 还是 B进行归约。故此文法不是 SLR(1)的。但是,此文法是 LR(1)的。五、已知文法 GS,其产生式如下:S(L)|a L L,S|S .从 GS中消除左递归,并为之构造一个非递归预测分析器 LL(1)分析表。请说明在句子(a,(a,a)上的分析器的动作。(20 分)解:将所给文法消除左递归得 G:S(L)|a L SL L,SL|
14、实现预测分析器的不含递归调用的一种有效方法是使用一张分析表和一个栈进行联合控制,下面构造预测分析表:根据文法 G有 FIRST(s)=(,a)FOLLOW(S)=,$FIRST(L)=(,a)FOLLOW(L)=FIRST(L)=,FOLLOW(L)=按以上结果,构造预测分析表 M 如下:文法 G是 LL(1)的,因为它的 LL(1)分析表不含多重定义入口。预测分析器对输入符号串(a,(a,a)做出的分析动作如下:例 5.3 的文法 G3S 为:SaA Sd AbAS A 不难看出由定义 5.3 可得:.SELECT(SaA)=a SELECT(Sd)=d SELECT(AbAS)=b SEL
15、ECT(A)=a,d,#所以 SELECT(SaA)SELECT(Sd)=ad=SELECT(AbAS)SELECT(A)=ba,d,#=由定义 5.4 知例 5.3 文法是 LL(1)文法,所以可用确定的自顶向下分析。而对例 5.5 文法 G5S为:SaAS Sb AbA A 则 SELECT(SaAS)=a SELECT(Sb)=b SELECT(AbA)=b SELECT(A)=a,b 所以 SELECT(SaAS)SELECT(Sb)=ab=SELECT(AbA)SELECT(A)=ba,b 因此,例 5.5 文法不是 LL(1)文法,因而也就不可能用确定的自顶向下 表达式文法为:EE
16、+T|T TT*F|F Fi|(E)构造步骤:(1)判断文法是否为 LL(1)文法 4.5 已知文法 GS,其产生式如下:S(L)|a L L,S|S 从 GS中消除左递归,并为之构造一个非递归预测分析器 LL(1)分析表。请说明在句子(a,(a,a)上的分析器的动作。解:将所给文法消除左递归得 G:S(L)|a L SL L,SL|实现预测分析器的不含递归调用的一种有效方法是使用一张分析表和一个栈进行联合控制,下面构造预测分析表:根据文法 G有 FIRST(s)=(,a)FOLLOW(S)=),$FIRST(L)=(,a)FOLLOW(L)=)FIRST(L)=,FOLLOW(L)=)按以上
17、结果,构造预测分析表 M 如下:文法 G是 LL(1)的,因为它的 LL(1)分析表不含多重定义入口。预测分析器对输入符号串(a,(a,a)做出的分析动作如下:.4.6 对于练习 4.1 的文法,构造它的 LL(1)分析表。解:从练习 4.1 得到文法的产生式如下:R R|T|T T TF|F F F*|C C (R)|a|b 消除上面文法中的左递归 R TR R|TR|T FT T FT|F CF F *F|C (R)|a|b 计算 FIRST()和 FOLLOW(A).构造 LL(1)分析表。4.9 对于文法 GS,其产生式如下 S(L)|a(4.22)LL,S|S (1)给出句子(a,(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理 期末 复习题 338
限制150内