王汝传编译原理习题答案Word文档下载推荐.docx
《王汝传编译原理习题答案Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《王汝传编译原理习题答案Word文档下载推荐.docx(50页珍藏版)》请在冰豆网上搜索。
语义分析是对语句意义进行检查,如赋值语句中x与y类型要一致,否则语法分析正确,语义分析则错误。
P15
5、编译程序分遍由哪些因素决定?
计算机存储容量大小;
编译程序功能强弱;
源语言繁简;
目标程序优化程度;
设计和实现编译程序时使用工具的先进程度以及参加人员多少和素质等等。
补充:
1、为什么要对单词进行内部编码?
其原则是什么?
对标识符是如何进行内部编码的?
内部编码从“源字符串”中识别单词并确定单词的类型和值;
原则:
长度统一,即刻画了单词本身,也刻画了它所具有的属性,以供其它部分分析使用。
对于标识符编码,先判断出该单词是标识符,然后在类别编码中写入相关信息,以表示为标识符,再根据具体标识符的含义编码该单词的值。
2、赋值语句:
A:
=5*C的语法和语义指的是什么?
语法分析将检查该语句是否符合赋值语句规则,语义是指将5*C的结果赋值为A。
第二次作业:
P38
1、设T1={11,010},T2={0,01,1001},计算:
T2T1,T1*,T2+。
T2T1={011,0010,0111,01010,100111,1001010}
T1*={ε,11,010,1111,11010,01011,010010……}
T2+={0,01,1001,00,001,01001,010,0101……}
P383、令A={0,1,2},写出集合A+和A*的七个最短符号串。
A+:
0,1,2,00,01,02,10(有多种可能)
A*:
ε,0,1,2,00,01,02(有多种可能)
5、试证明:
A+=AA*=A*A。
证明:
A+=A1∪A2∪……∪An∪……
A*=A0(即{ε})∪A+
AA*=A(A0∪A+)=A∪A+=A+=A+∪A=(A0∪A+)A=A*A(证毕)
7、设有文法G[S]:
S∷=A
A∷=B|IFATHENAELSEA
B∷=C|B+C|+C
C∷=D|C*D|*D
D∷=X|(A)|-D试写出VN和VT。
VN={S,A,B,C,D}
VT={IF,THEN,ELSE,+,*,X,(,),-}
P38-39
8、设有文法G[S]:
S∷=aAb
A∷=BcA|B
B∷=idt|ε
试问下列符号串
(1)aidtcBcAb(3)ab(5)aidtcidtcidtb是否为该文法的句型或句子。
(1)SaAbaBcAbaidtcAbaidtcBcAb句型但不是句子;
(3)SaAbaBbaεbab是句型也是句子;
(5)SaAbaBcAbaidtcAbaidtcBcAbaidtcidtcBbaidtcidtcidtb句型也是句子。
P39
10、给定文法:
S∷=aB|bA
A∷=aS|bAA|a
B∷=bS|aBB|b该文法所描述的语言是什么?
L(G)={相同个数的a与b以任意次序连接而成的非空符号串}。
11、试分别描述下列文法所产生的语言(文法开始符号为S):
(1)S∷=0S|01
(2)S∷=aaS|bc
(1)L(G)={0n1|n≥1};
(2)L(G)={a2nbc|n≥0}。
12、试分别构造产生下列语言的文法:
(1){abna|n=0,1,2,3……}
(3){aban|n≥1}
(5){anbmcp|n,m,p≥0}
(1)G={VN,VT,P,S},VN={S,A},VT={a,b},
P:
S∷=aAa
A∷=bA|ε
(3)G={VN,VT,P,S},VN={S,A},VT={a,b},
S∷=abA
A∷=aA|ε或A∷=aA|a
(5)①G={VN,VT,P,S},VN={S,A,B,C},VT={a,b,c},
S∷=ABC
A∷=aA|ε
B∷=bB|ε
C∷=cC|ε
②G={VN,VT,P,S},VN={S,T,C},VT={a,b,c},
S∷=TC
T∷=aTb|ε
③G={VN,VT,P,S},VN={S},VT={a,b,c},
S∷=aS|bS|cS|ε
第三次作业:
15.设文法G规则为:
S:
:
=AB
B:
=a|Sb
A:
=Aa|bB
对下列句型给出推导语法树,并求出其句型短语,简单短语和句柄。
(2)baabaab(3)bBABb
(2)S
AB
AaSb
bBAB
abBa
a
句型baabaab的短语a,ba,baa,baab,简单短语a,句柄a
S
(3)
AB
bB
Sb
短语bB,AB,ABb,
简单短语bB,AB,
句柄bB
P4018.分别对i+i*i和i+i+i中每一个句子构造两棵语法树,从而证明下述文法G[<
表达式>
]是二义的。
<
=i|(<
)|<
运算符>
=+|-|*|/
1.i+i*i
<
i+<
i*i
*i
i+i
由于句子i+i*i可构造两棵不同的语法树,所以证明该文法是二义的。
2.i+i+i
+i
由于句子i+i+i可构造两棵不同的语法树,所以证明该文法是二义的。
P4019.证明下述文法是二义的
1)S:
:
=iSeS|iS|i
3)S:
=A|B
A:
=aCbA|a
B:
=BCC|a
C:
=ba
1)对于句子iiieii可构造两棵不同的语法树,所以证明该文法是二义的。
S
iSeS
iSiS
ii
iS
iSeS
iiS
i
2)对于句子ababa可构造两棵不同的语法树,所以证明该文法是二义的。
S
A
aCbA
baa
S
B
BCC
ababa
P4121.令文法N:
=D|ND
D:
=0|1|2|3|4|5|6|7|8|9
给出句子0127,34,568最左推导和最右推导。
解:
0127的最左推导N=>
ND=>
NDD=>
NDDD=>
DDDD=>
0DDD=>
01DD=>
012D=>
0127
0127的最右推导N=>
N7=>
ND7=>
N27=>
ND27=>
N127=>
D127=>
34的最左推导N=>
DD=>
3D=>
34
34的最右推导N=>
N4=>
D4=>
568的最左推导N=>
DDD=>
5DD=>
56D=>
568
568的最右推导N=>
N8=>
ND8=>
N68=>
D68=>
P4123.设有文法如下:
目标>
=V1
V1:
=V2|V1iV2
V2:
=V3|V2+V3|iV3
V3:
=)V1*|(
试分析句子(,)(*,i(,(+(,(+(i(,(+)(i(*i(。
解<
=>
V1=>
V2=>
V3=>
(
)V1*=>
)V2*=>
)V3*=>
)(*
iV3=>
i(
V2+V3=>
V3+V3=>
(+V3=>
(+(
V1iV2=>
V1iV3=>
V1i(=>
V2i(=>
V2+V3i(=>
V2+(i(=>
V3+(i(=>
(+(i(
V2iV2=>
V2+V3iV2=>
V3+V3iV2=>
(+V3iV2=>
(+)V1*iV2
(+)V1iV2*iV2=>
(+)V2iV2*iV2=>
(+)V3iV2*iV2=>
(+)(iV2*iV2=>
(+)(iV3*iV2=>
(+)(i(*iV2=>
(+)(i(*iV3=>
(+)(i(*i(
P4124.下面文法那些是短语结构文法,上下文有关文法,上下文无关文法,及正规文法?
1.S:
=aBB:
=cBB:
=bC:
=c
2.S:
=bcC:
=cC:
=ε
3.S:
=aAbaA:
=aBaA:
=aaAB:
=bA:
=a
4.S:
=aCdaC:
=BaC:
=b
5.S:
=ABA:
=aB:
=bCB:
6.S:
=bCC:
7.S:
=aAS:
=εA:
=aAA:
=aBA:
8.S:
=bAbA:
正规文法1
上下文无关文法25678
上下文有关文法3
短语结构文法4
P4126.给出产生下列语言L(G)={W|W∈{0,1}+且W不含相邻1}的正规文法。
G=({S,A,B},{0,1},P,S)
P:
S:
=0|1|0B|1A
A:
=0|0S
B:
=0|1
P4127.给出一个产生下列语言L(G)={W|W∈{a,b}*且W中含a的个数是b个数两倍的前后文无关文法。
文法G=({S,A,B},{a,b},P,S)
=AAB|ABA|BAA|ε
=aS
=bS
或者
=Saab|aSab|aaSb|aabS|Saba|aSba|abSa|abaS|Sbaa|bSaa|baSa|baaS|ε
P4229.用扩充的BNF表示以下文法规则:
1.Z:
=AB|AC|A
2.A:
=BC|BCD|AXZ|AXY
3.S: