收藏 分享(赏)

第3章 文法和语言.doc

上传人:yjrm16270 文档编号:6544442 上传时间:2019-04-16 格式:DOC 页数:5 大小:47.50KB
下载 相关 举报
第3章 文法和语言.doc_第1页
第1页 / 共5页
第3章 文法和语言.doc_第2页
第2页 / 共5页
第3章 文法和语言.doc_第3页
第3页 / 共5页
第3章 文法和语言.doc_第4页
第4页 / 共5页
第3章 文法和语言.doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

1、第三章 文法和语言(习题参考答案)1、文法 G=(A,B,S,a,b,c,P,S),其中 P 为:S-Ac|aB A-ab B-bc写出 L(G S)的全部元素。【解】S=Ac=abc 或 S=aB=abc 所以 L(GS)=abc 2、文法 GN为: N-D|ND D-0|1|2|3|4|5|6|7|8|9 GN的语言是什么? 【解】 N=ND=NDD =NDDDD.D=DD GN的语言是 V+,其中 V=0,1,2,3,4,5,6,7,8,9 或:解: N NDn-1Dn 0,1,3,4,5,6,7,8,9+L(GN)= 0,1,3,4,5,6,7,8,9+5. 写一文法,使其语言是偶正整

2、数的集合要求:(1) 允许 0 打头; (2) 不允许 0 打头解:(1) GS=(S,P,D,N,0,1,2,9,P,S)P:S-PD|DP-NP|ND-0|2|4|6|8N-0|1|2|3|4|5|6|7|8|9(2) GS=(S,P,R,D,N,Q ,0,1,2,9,P,S)P:S-PD|P0|DP-NR|NR-QR|QD-2|4|6|8N-1|2|3|4|5|6|7|8|9Q-0|1|2|3|4|5|6|7|8|96. 已知文法 G::=|+|-:=|*|/:=()|i。试给出下述表达式的推导及语法树。(1)i; (2)(i) (3)i*i;(4)i*i+i; (5)i+(i+i);

3、(6)i+i*i。解:(1) v=i(2) v=()=()=()=(i)(3) v=*=*=i*i(4) v=+=+=*+ =*+=i*i+i(5) v=+=+=+=i+()= i+(+)=i+(+)= i+(+)=i+(i+i)(6) v=+=+=+=i+=i+*= i+*= i+i*i语法树见下图(略)7. 为句子 i+i*i 构造两棵语法树,从而证明下述文法 G是二义的。:=i|()|:=+|-|*|/解:为句子 i+i*i 构造的两棵语法树如下:(略)所以,该文法是二义的。8. 习题 1 中的文法 GS是二义的吗?为什么?答:是二义的。因为对于句子 abc 可以有两种不同的生成树,即:

4、 S=Ac=abc 和 S=aB=abc两棵语法树如下:(略)9.考虑下面上下文无关文法:SSS*|SS+|a(1) 表明通过此文法如何生成串 aa+a*,并为该串构造推导树。(2) 该文法生成的语言是什么?【解】(1) S=SS*=SS+S*aa+a*该串的推导树如下:(2) 该文法生成的语言是只含+ 、*的算术表达式的逆波兰表示。11. 令文法 GE为:ET|E+T|E-TTF|T*F|T/FF(E)|i证明 E+T*F 是它的一个句型,指出这个句型的所有短语、直接短语和句柄。解:可为 E+T*F 构造一棵语法树(见下图) ,所以它是句型。从语法树中容易看出,E+T*F 的短语有:T*F

5、是句型 E+T*F 的相对于 T 的短语,也是相对于规则 TT*F 的直接短语。E+T*F 是句型 E+T*F 的相对于 E 的短语。句型 E+T*F 的句柄(最左直接短语)是 T*F。12. 下述文法 GE生成的语言是什么?给出该文法的一个句子,该句子至少含五个终结符,构造该句子的语法树。证明:是 G的句型,并指出该句型的所有短语、直接短语和句柄。-|-|-a|b|c-+|*|/解:(1) 计算文法 GE的语言:由于 L(T)=(a|b|c)(a|b|c)(*|/)n|n=0所以 L(E)=L(T)(L(T)(+|-)n|n=0(2) 该文法的一个句子是 aab*+,它的语法树是:证明:是

6、G的句型,并指出该句型的所有短语、直接短语和句柄。由于下面的语法树可以生成 ,所以它是 G的句型。由于 = ,且 = ,所以是句型相对于的短语,也是相对于规则 的直接短语。由于 = 且 = ,所以是句型相对于的短语。显然,句型 的句柄是。13.一个上下文无关文法生成句子 abbaa 的推导树如下:(1) 给出该句子相应的最左推导,最右推导。(2) 该文法的产生式集合 P 可能有哪些元素?(3) 找出该句子的所有短语,简单短语、句柄。【解】(1) 最左推导如下:S=ABS=aBS=aSBBS=aBBS=abBS=abbS=abbAa=abbaa最右推导如下:S=ABS=ABAa=ABaa=ASB

7、Baa=ASBbaa=ASbbaa=Abbaa=abbaa(2) 该文法的产生式集合 P 可能有以下元素:S ABS|Aa|BSBB|bAa(3)为方便叙述将句型 abbaa 写作 a1b1b2a2a3该句子的短语有:a1, , b1, b2, a2, b1b2, a2 a3, a1b1b2a2a3该句子的直接短语有:a1, , b1, b2, a2该句子的句柄为:a114. 给出生成下述语言的上下文无关文法:(1)a nbnambm|n,m=0(2)1 n0m1m0n|n,m=0(3)WaW t|W 属于 0|a*,W 表示 Wt 的逆解:(1)所求文法为 GS=(S,A,a,b,P,S),

8、其中 P 为:S-AAA-aAb|(2)所求文法为 GS=(S,A,0,1,P,S),其中 P 为:S-1S0|AA-0A1|(3)W 属于 0|a*是指 W 可以的取值为 ,0,a,00,a0,aa0,00aa,a0a0,如果 W=aa0a00,则 Wt=00a0aa。所求文法为 GS=(S,P,Q,0,a,P,S),其中 P 为:S-0S0|aSa|a15. 语言WaW和a nbmcndm是上下文无关的吗?能看出它们反映程序设计语言的什么特性吗?答:生成语言WaW的文法非常简单,如GS: S-WaWW-aW|bW|可见 GS是上下文无关的。生成语言 anbmcndm 的文法非常复杂,用上下

9、文无关文法不可能办到,只能用上下文有关文法。这是因为要在ancn 的中间插入 bm,而同时要在其后面插入 dm。即 a,c 相关联,b,d 相关联。这说明对语言的限定越多(特别是语言中的符号前后关联越多) ,生成它的文法越复杂,甚至于很难找到一个上下文法无关文法。16给出生成下述语言的三型文法:(1)an|n=0(2)anbm|n,m=1(3)anbmck|n,m,k=0解:(1) 生成的 3 型文法是:GS:S-aS| (2) 生成的 2 型文法是:GS: S-ABA-aA|aB-bB|b生成的 3 型文法是:GS: S-aPP-aP|bDD-bD|(3) 生成的 2 型文法是:GS: S-ABCA-aA|B-bB|C-cC|生成的 3 型方法是:GS: A-aA|bB|cC|B-bB|cC|C-cC|

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 网络科技 > C/C++资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报