编译原理第二章习题答案Word文档格式.docx
《编译原理第二章习题答案Word文档格式.docx》由会员分享,可在线阅读,更多相关《编译原理第二章习题答案Word文档格式.docx(9页珍藏版)》请在冰豆网上搜索。
|bB
问:
相应的正规式是什么G⑸能否改写成为等价的正规文法
正规式是daa*b*;
相应的正规文法为(山自动机化简来):
G[S]:
S^dAA—a|aBB—aB|a|b|bCC—bC|b
也可为(观察得来):
G⑸:
S—dAA—a|aA|aBB—bB|£
4•已知文法G[Z]:
Z->
aZb|ab
<
写出L(G[Z])的全部元素。
Z=>
aZb=>
aaZbb=>
aaa..Z...bbb=>
aaa..ab...bbb
L(G[Z])={anbn|n>
=l}
5.给出语言{aBc叫n>
=l,m>
=O}|ft上下文无关文法。
[分析]
本题难度不大,主要是考上下文无关文法的基本概念。
上下文无关文法的基本定义是:
P,AeVn,PG(VnUVt)\注意关键问题是保证a"
bn的成立,即“a与b的个数要相等”,为此,可以用一条形如A->
aAb|ab的产生式即可解决。
构造上下文无关文法如下:
AB|A
aAb|ab
Bc|c
[扩展]
凡是诸如此类的题都应按此思路进行,本题可做为一个基本代表。
基本思路是这样的:
要求符合anbncm,因为a与b要求个数相等,所以把它们应看作一个整体单元进行,而凸做为另一个单位,初步产生式就应写为S->
AB,其中A推出anbn,B推出凸。
因为m可为0,故上式进一步改写为S->
AB|AC接下来考虑A,凡是要求两个终结符个数相等的问题,都应写为A->
aAb|ab形式,对于B就很容易写成B->
Bc|cT。
6.写一文法,使其语言是偶正整数集合。
要求:
⑴允许0开头;
]
(2)不允许0开头。
(1)允许0开头的偶正整数集合的文法
E->
NT|G|SFM
T->
NT|G
D|1|3|5|7|9
0|G
G->
2|4|6|8
NS|e
F->
1|3|5|7|9|G
(2)不允许0开头的偶正整数集合的文法
NT|D
FT|G
N|O
D|O
7•已知文法G:
)
E+T|E-T|T
T*F|T/F|F
(E)|i
试给出下述表达式的推导及语法树
(l)i;
(2)i*i+i(3)i+i*i(4)i+(i+i)
(1)E=>
T=>
F=>
i
(2)E=>
E+T=>
T+T=>
T*F+T=>
F*F+T=>
i*F+T=>
i*i+T=>
i*i+F=>
i*i+i
(3)E=>
F+T=>
i+T=>
i+T*F=>
i+F*F=>
i+i*F=>
i+i*i
(4)E=>
i+F=>
i+(E)=>
i+(E+T)=>
i+(T+T)=>
i+(F+T)=>
i+(i+T)=>
i+(i+F)=>
i+(i+i)
8.为句子i+i*i构造两棵语法树,从而证明下述文法G[<表达式>]是二义的。
〈表达式〉->〈表达式〉〈运算符〉〈表达式〉|(〈表达式〉)|i
〈运算符>->+|-|*|/
可为句子i+i*i构造两个不同的最右推导:
〈表达式〉=>〈表达式〉
〈运算符〉〈表达式〉
=>〈表达式〉
〈运算符〉
•
1
=>〈表达式〉*
[i
〈表达式〉*i
i*i
=>〈表达式〉+i*i
=>
1+1*1
最右推导2
〈表达式〉=>
〈表达式〉
〈运算符〉i
*i
=>〈表达式〉
=>1+1*1
所以,该文法是二义的。
9.文法G⑸为:
S->Ac|aB
该文法是否为二义的为什么
对于串abc
(l)S=>
⑵S=>
即存在两不同的最右推导
10・考虑下面上下文无关文法:
SS*|SS+|a
(1)表明通过此文法如何生成串aa+a*,并为该串构造语法树。
(2)G⑸的语言是什么
(1)此文法生成串aa+a*的最右推导如下
SS*=>
Sa*=>
SS+a*=>
Sa+a*=>
aa+a*
(2)该文法生成的语言是即加法和乘法的逆波兰式,
令文法G[E]为:
¥
E+T|E-T
证明E+T*F是它的一个句型,指出这个句型的所有短语、直接短语和句柄。
此句型对应语法树如右,故为此文法一个句型。
或者:
因为存在推导序列:
E=>
E+T*F,所以E+T*F句型
此句型相对于E的短语有:
E+T-F;
相对于T的短语有T*F,
直接短语为:
T*F;
o
句柄为:
T*F
12.已知文法G[E]:
E—ET+|TT^TF*|FF—"
|a
试证:
是文法的句型,指出该句型的短语、简单短语和句柄.
该句型对应的语法树如下:
该句型相对于E的短语有FFaa*.相对于J的短语有FFaa*/F;
相对于f的短语有Fa;
Faa;
简单短语有F;
"
;
句柄为F.
13•—个上下文无关文法生成句子abbaa的推导树如下:
⑴给出吊abbaa最左推导、最右推导。
(2)该文法的产生式集合P可能有哪些元素
(3)找出该句子的所有短语、直接短语、句柄。
⑴串abbaa最左推导:
ABS=>
aBS=>
aSBBS=>
a£
BBS=>
bBS=>
bbS=>
bbAa=>
bbaa
最右推导:
ABAa=>
ABaa=>
ASBBaa=>
ASBbaa=>
ASbbaa=>
A£
bbaa=>
(2)产生式有:
S-ABS|Aa|£
A~*a
B—SBB|b
(3)该句子的短语有8ibib2a283、ai、bi>
b2、bib2、82^3、a2;
!
直接短语有ai、bi、b2、a2:
句柄是aio
14•给出生成下列语言的上下文无关文法。
(1){anbnambm|n,m>
=0}
(2){ln0mlm0n|n,m>
=0}
(3){WaWr|W属于{0|a}*,W「表示W的逆}
(1){anbnambm|n,m>
AA
aAbI£
(2){ln0mlm0n|n,m>
1SO|A
OA11e
OSO|1S1|£
15•给出生成下列语言的三型文法。
(1){an|n>
⑵{anbm|n,m>
(3){anb^\nfm^>
I
(1){an|n>
=0}的三型文法为:
aS|e
(2){anbm|n,m>
=l}的三型文法为:
aA
aA|bB
bB|e
(3)何已占山皿1<
>
=0}的三型文法为:
aA|bB|cC|£
bB|cC|£
A
C->
cC|£
16.构造一文法产生任意长的a,b$,使得
|a|<
=|b|<
=2|a|
其中,“|a|”表示a字符的个数;
“|b|”表示b字符的个数。
b的个数在a与2a之间,所以应想到形如aSBS和BSaS的形式,B为1到2个b,即可满足条件。
如分析中所述,可得文法如下:
S-aSBS|BSaS|£
bb|b
第1个产生式为递归定义,由于在第2个产生式中B被定义为1或2个b,所以第1个产生式可以保证b的个数在|a|与2|a|之间,而a与b的位置可以任意排布,所以此文法即为所求,注意第1个产生式中要包括s。
17•下面的文法产生a的个数和b的个数相等的非空a,b$
aB|bA
bS|aBB|b
aS|bAA|a
其中非终结符B推出b比a的个数多1个的串,A则反之。
说明该文法是二义的。
对上述文法略作修改,使之非二义,并产生同样的语言。
(略做修改的含义是:
不增加非终结符。
句子aabbab有两种不同的推导。
aaBB=>
aabB=>
aabbS=>
aabbaB=>
aabbab
aabSB=>
aabbAB=>
即它可以产生两棵不同的语法树,故它是二义的。
修改后的无二义文法如下:
aBS|bAS|aB|bA
bAA|a
给出0,1,2,3型文法的定义。
乔姆斯基(chomsky)ffi文法分成类型,即0型,1型,2型和3型,0型强于1型,1型强于2型,2型强于3型。
如果它的每个产生式□->
P的结构是a£
(VnUVt)•且至少含有一个非终结符,而0丘(VnUVt)S我们说G=(Vt,VN,S,6)是一个0型文法。
0型文法也称短语文法。
一个非常重要的理论结果是,0型文法的能力相当于图灵(Tunring)机。
或者说,任何0型语言都是递归可枚举的;
反之,递归可枚举集必定是一个0型语言。
如果把0型文法分别加上以下的第i条限制,则我们就得i型文法为:
1.G的任何产生式a->
P均满足|a|<
=|P|;
仅仅S->
£
例外,但S不得出现在任何产生式的右部。
2.G的任何产生式为A->
P,AGVn,PG(VnUVt)*
3.G的任何产生式为A->
aB或A->
a,其中A,BWVn
1型文法也称上下文有关文法。
这种文法意味着,对非终结符进行替换时务必考虑上下文,而且,一般不允许替换成空串。
2型文法对非终结符进行替换时无须考虑上下文,
3型文法也称线性文法。