最新编译原理期末试题及答案.docx
《最新编译原理期末试题及答案.docx》由会员分享,可在线阅读,更多相关《最新编译原理期末试题及答案.docx(24页珍藏版)》请在冰豆网上搜索。
最新编译原理期末试题及答案
这里有营业员们向顾客们示范着制作各种风格炯异的饰品,许多顾客也是学得不亦乐乎。
据介绍,经常光顾“碧芝”的都是些希望得到世界上“独一无二”饰品的年轻人,他们在琳琅满目的货架上挑选,然后亲手串连,他们就是偏爱这种DIY的方式,完全自助在现场,有上班族在里面精挑细选成品,有细心的小女孩在仔细盘算着用料和价钱,准备自己制作的原料。
可以想见,用本来稀奇的原料,加上别具匠心的制作,每一款成品都必是独一无二的。
而这也许正是自己制造所能带来最大的快乐吧。
“碧芝”隶属于加拿大的beadworks公司。
这家公司原先从事首饰加工业,自助首饰的风行也自西方,随着人工饰品的欣欣向荣,自制饰品越来越受到了人们的认同。
1996年'碧芝自制饰品店'在迪美购物中心开张,这里地理位置十分优越,交通四八达,由于是市中心,汇集了来自各地的游客和时尚人群,不用担心客流量问题。
迪美有300多家商铺,不包括柜台,现在这个商铺的位置还是比较合适的,位于中心地带,左边出口的自动扶梯直接通向地面,从正对着的旋转式楼拾阶而上就是人民广场中央,周边4、5条地下通道都交汇于此,从自家店铺门口经过的90%的顾客会因为好奇而进看一下。
(4)创新能力薄弱
朋友推荐□宣传广告□逛街时发现的□上网□
2003年,上海市人均GDP按户籍人口计算就达到46700元,是1995年的2.5倍;居民家庭人均月可支配收入为14867元,是1995年的2.1倍。
收入不断增加的同时,居民的消费支出也在增加。
2003年上海居民人均消费支出为11040元,其中服务性消费支出为3369元,是1995年的3.6倍。
(二)对“碧芝”自制饰品店的分析
beadorks公司成功地创造了这样一种气氛:
商店和顾客不再是单纯的买卖关系,营业员只是起着参谋的作用,顾客成为商品或者说是作品的作参与者,营业员和顾客互相交流切磋,成为一个共同的创作体
(五)DIY手工艺品的“价格弹性化”
四、影响的宏观环境分析
朋友推荐□宣传广告□逛街时发现的□上网□1、试为表达式w+(a+b)*(c+d/(e-10)+8)写出相应的逆波兰表示。
2、写出表达式a+b*(c-d)/e的逆波兰式和三元序列。
3、写出表达式a:
=(b+c)*e+(b+c)/f的逆波兰式和三元序列。
4、已知文法G(S)及相应翻译方案
S→aAb{print“1”}
S→a{print“2”}
A→AS{print“3”}
A→c{print“4”}
输入acab,输出是什么?
5、已知文法G(S)
S→bAa
A→(B|a
B→Aa)
写出句子b(aa)b的规范归约过程。
6、已知文法G[S]
S→S*aF|aF|*aF
F→+aF|+a
消除文法左递归。
1、设文法G(S):
S→^|a|(T)
T→T,S|S
⑴消除左递归;
⑵构造相应的FIRST和FOLLOW集合;
⑶构造预测分析表
2.语句ifEthenS
(1)改写文法,使之适合语法制导翻译;
(2)写出改写后产生式的语义动作。
4.设某语言的for语句的形式为
fori:
=E
(1)toE
(2)doS
其语义解释为
i:
=E
(1)
LIMIT:
=E
(2)
again:
ifi<=LIMITthen
Begin
S;
i:
=i+1
gotoagain
End;
(1)写出适合语法制导翻译的产生式;
(2)写出每个产生式对应的语义动作。
7.已知文法G(S)
S→a|^|(T)
T→T,S|S
(1)给出句子(a,(a,a))的最左推导;
(2)给出句型((T,S),a)的短语,直接短语,句柄。
8.对于C语言doSwhileE语句
(1)改写文法,使之适合语法制导翻译;
(2)写出改写后产生式的语义动作。
9.已知文法G(S)
S→aAcBe
A→Ab|b
B→d
(1)给出句子abbcde的最左推导及画出语法树;
(2)给出句型aAbcde的短语、素短语。
10.设文法G(S):
S→(T)|aS|a
T→T,S|S
⑴消除左递归和提公共左因子;
⑵构造相应的FIRST和FOLLOW集合;
⑶构造预测分析表。
12.已知文法G(S)
E→E+T|T
T→T*F|F
F→(E)|i
(1)给出句型(i+i)*i+i的最左推导及画出语法树;
(2)给出句型(E+T)*i+F的短语,素短语和最左素短语。
答案:
(1)消除左递,文法变为G’[S]:
S→^|a|(T)'
T→ST’|S
T’→,ST’|ε
此文法无左公共左因子。
(2)构造相应的FIRST和FOLLOW集合:
FIRST(S)={a,^,(},FOLLOW(S)={#,,,)}
FIRST(T)={a,^,(},FOLLOW(T)={}}
FIRST(T’)={,,ε},FOLLOW(F)={)}
(3)构造预测分析表:
a
^
(
)
#
S
S→a
S→^
S→(T)'
T
T→ST’
T→ST’
T→ST’
T’
T’→ε
T’→,ST’
2.
(1)
C→ifEthen
S→CS
(1)
(2)
C→ifEthen{BACK(E.TC,NXQ);C.chain:
=E.FC}
S→CS
(1){S.chain:
=MERG(C.Chain,S
(1).Chain)}
4.
(1)F→fori:
=E
(1)toE
(2)do
S→FS
(1)
(2)F→fori:
=E
(1)toE
(2)do
{GEN(:
=,E
(1).place,_,entry(i));
F.place:
=entry(i);
LIMIT:
=Newtemp;
GEN(:
=,E
(2).place,_,LIMIT);
Q:
=NXQ;
F.QUAD:
=q;
GEN(j≤,entry(i),LIMIT,q+2)
F.chain:
=NXQ;
GEN(j,_,_,0)}
S→FS
(1)
{BACKPATCH(S
(1).chain,NXQ);
GEN(+,F.place,1,F.place);
GEN(j,_,_,F.QUAD);
S.chain:
=F.chain
}
7.最左推导
S=(T)=>(T,S)=>(S,S)=>(a,S)=>(a,(T))=>(a,(T,S))=>(a,(S,S))=>(a,(a,S))=>(a,(a,a))
短语
((T,S),a)
(T,S),a
(T,S)
T,S
a
直接短语
T,S
a
句柄
T,S
9.
(1)S=>aAcBe=>AAbcBe=>abbcBe=>abbcde
(2)短语:
aAbcde,Ab,d
素短语:
Ab,d
10.
(1)S→(L)|aS’
S’→S|ε
L→SL’
L’→,SL’|ε
(2)FIRST(S)={a,(}FIRST(S’)={a,(,ε}
FIRST(L)={a,(}FIRST(L’)={,,ε}
FOLLOW(S)={,,),#}FOLLOW(S’)={,,),#}
FOLLOW(L)={)}FOLLOW(L’)={)}
(3)
(
)
a
#
S
S→(L)
S→aS’
S’
S’→S
S’→ε
S’→S
S’→ε
S’→ε
L
L→SL’
L→SL’
L’→,SL’
L’
L’→ε
12.
(1)E=>E+T=>T+T=>T*F+T=>F*F+T=>(E)*F+T=>(E+T)*F+T=>(T+T)*F+T=>(F+T)*F+T=>(i+T)*F+T=>(i+F)*F+T=>(i+i)*F+T=>(i+i)*i+T
=>(i+i)*i+F=>(i+i)*i+i
(2)短语i,F,E+T,(E+T),(E+T)*i,(E+T)*i+F
素短语i,E+T
最左素短语E+T
《编译原理》期末试题
(二)
对于函数f2,由于局部变量x的作用域只是函数体的一部分,不会出现上述问题,因而编译器不报错。
6、正规式b*a(bb*a)*b*体现的特点是,每个a的左边都有若干b,除非a是第一个字母。
该正规式定义的语言是:
至少含一个a,但不含子串aa的所有a和b的串集。
最简DFA如下:
7、消除左递归后的文法:
B→1B'
B'→0B'|1B'|ε
相应的翻译方案如下:
B→1{B'.i:
=1}B'{B.val:
=B'.val}
B'→0{B'1.i:
=B'.i⨯2}B'1{B'.val:
=B'1.val}
|1{B'1.i:
=B'.i⨯2+1}B'1{B'.val:
=B'1.val}
|ε{B'.val:
=B'.i}
《编译原理》期末试题(三)
2、写出表达式a=b*c+b*d对应的逆波兰式、四元式序列和三元式序列。
答:
逆波兰式:
abc*bd*+:
=
3、对于文法G(S):
答:
1)
2)短语:
Ma),(Ma),b(Ma)b
直接短语:
Ma)句柄:
Ma)
三、设有字母表{a,b}上的正规式R=(ab|a)*。
解:
(1)
(2)将
(1)所得的非确定有限自动机确定化
ε
a
b
-0
1
1
3
12
2
1
+3
a
b
-+013
123
+123
123
13
+13
123
(3)对
(2)得到的DFA化简,合并状态0和2为状态2:
(4)令状态1和2分别对应非终结符B和A
G:
A→aB|a|ε;B→aB|bA|a|b|ε;可化简为:
G:
A→aB|ε;B→aB|bA|ε
四、
设将文法G改写成等价的LL
(1)文法,并构造预测分析表。
G:
S→S*aT|aT|*aT;T→+aT|+a
解:
消除左递归后的文法G’:
S→aTS’|*aTS’
S’→*aTS’|ε
T→+aT|+a
提取左公因子得文法G’’:
S→aTS’|*aTS’
S’→*aTS’|ε
T→+aT’
T’→T|ε
Select(S→aTS’)={a}
Select(S→*aTS’)={*}
Select(S→aTS’)∩Select(S→*aTS’)=Ф
Select(S’→*aTS’)={*}
Select(S’→ε)=Follow(s’)={#}
Select(S’→*aTS’)∩Select(S’→ε)=Ф
Select(T→+aT’)={+}
Select(T’→T)=First(T)={+}
Select(T’→ε)=Follow(T’)={*,#}
Select(T’→T)∩Select(T’→ε)=Ф
所以该文法是LL
(1)文法。
预测分析表:
*
+
a
#
S
→*aTS’
→aTS’
S’
→*aTS’
→ε
T
→+aT’
T’
→ε
→T
→ε
6设文法G为:
S→A;A→BA|ε;B→aB|b
解:
(1)拓广文法G’:
(0)S’→S
(1)S→A
(2)A→BA(3)A→ε(4)B→aB(5)B→b;FIRST(A)={ε,a,b};FIRST(B)={a,b}
构造的DFA如下:
项目集规范族看出,不存在冲突动作。
∴该文法是LR
(1)文法。
(2)LR
(1)分析表如下:
(3)输入串abab的分析过程为:
五、对文法G(S):
S→a|^|(T);T→T,S|S
答:
(1)
a
^
(
)
#
a
>
>
>
^
>
>
>
(
<
<
<
=
<
)
>
>
>
<
<
<
>
>
#
<
<
<
=
(2)是算符优先文法,因为任何两个终结符之间至多只有一种优先关系。
(2分)
(3)给出输入串(a,a)#的算符优先分析过程。
步骤
栈
当前输入字符
剩余输入串
动作
1
#
(
a,a#
#<(移进
2
#(
a
a)#
(3
#(a
a)#
a>,归约
4
#(N
a)#
(<,移进
5
#(N,
a
)#
6
#(N,a
)
#
a>)归约
7
#(N,N
)
#
>)归约
8
#(N
)
#
(=)移进
9
#(N)
#
)>#归约
10
#N
#
接受
五、设有文法G[A]:
A→BCc|gDB
B→bCDE|ε
C→DaB|ca
D→dD|ε
E→gAf|c
(1)计算该文法的每一个非终结符的FIRST集和FOLLOW集;
(2)试判断该文法是否为LL
(1)文法。
(15)
FIRST
FOLLOW
A
B
C
D
E
A,b,c,d,g
b
A,c,d
D
C,g
A,c,d
C,d,g
A,b,c,g
是LL
(1)文法。
2.对于文法G[S]:
S→AB,A→Aa|bB,B→a|Sb求句型baSb的全部短语、直接短语和句柄?
句型baSb的语法树如图五
(2)所示。
解:
baSb为句型baSb的相对于S的短语,ba为句型baSb的相对于A的短语,Sb为句型baSb的相对于B的短语,且为直接短语,a为句型baSb的相对于B的短语,且为直接短语和句柄。
3.设有非确定的有自限动机NFAM=({A,B,C},{0,1},δ,{A},{C}),其中:
δ(A,0)={C}δ(A,1)={A,B}δ(B,1)={C}δ(C,1)={C}。
请画出状态转换距阵和状态转换图。
解:
状态转换距阵为:
δ
0
1
A
C
A,B
B
∅
C
C
∅
C
状态转换图为
七已知文法G为:
(1)S′→S
(2)S→aAd
(3)S→bAc
(4)S→aec
(5)S→bed
(6)A→e
试构造它的LR
(1)项目集、可归前缀图和LR
(1)分析表。
【】【答案:
】
构造LR
(1)分析表
如下:
二、设∑={0,1}上的正规集S由倒数第二个字符为1的所有字符串组成,请给出该字集对应的正规式,并构造一个识别该正规集的DFA。
(8分)
答:
构造相应的正规式:
(0|1)*1(0|1)(3分)
NFA:
(2分)
11
εεεε1
00
确定化:
(3分)
I
{0,1,2}
{1,2}
{1,2,3}
{1,2}
{1,2}
{1,2,3}
{1,2,3}
{1,2,4}
{1,2,3,4}
{1,2,4}
{1,2}
{1,2,3}
{1,2,3,4}
{1,2,4}
{1,2,3,4}
0
1
0100
01
11
四、对于文法G(E):
(8分)
E→T|E+T
T→F|T*F
F→(E)|i
1.写出句型(T*F+i)的最右推导并画出语法树。
2.写出上述句型的短语,直接短语、句柄和素短语。
答:
1.(4分)
E⇒T⇒F⇒(E)⇒(E+T)⇒(E+F)
⇒(E+i)⇒(T+i)⇒(T*F+i)
2.(4分)
短语:
(T*F+i),T*F+i,T*F,i
直接短语:
T*F,i
句柄:
T*F
素短语:
T*F,i
九、(9分)设已构造出文法G(S):
(1)S→BB
(2)B→aB
(3)B→b的LR分析表如下
ACTION
GOTO
状态
a
b
#
S
B
0
s3
s4
1
2
1
acc
2
s6
s7
5
3
s3
s4
8
4
r3
r3
5
r1
6
s6
s7
9
7
r3
8
r2
r2
9
r2
假定输入串为abab,请给出LR分析过程(即按照步骤给出状态,符号,输入串的变化过程)。
答:
步骤状态符号输入串
00#abab#
103#abab#
2034#abab#
3038#aBab#
402#Bab#
5026#Bab#
60267#Bab#
70269#BaB#
8025#BB#
901#S#acc
1.设有如下文法G(S),试消除其左递归。
G(S):
S—>Ac|c
A—>Bb|b
B—>Sa|a
解:
S→abcS′|bcS′|cS′,S′→abcS′|
2.试构造与下面G(S)等价的无左递归的文法。
G(S):
S—>Sa|Nb|c
N—>Sd|Ne|f
解:
S→fN′bS′|cS′,S′→aS′|dN′bS′|
N′→eN′|
3.设有文法G(S):
S—>aBc|bAB
A—>aAb|b
B—>b|ε
①求各产生式的FIRST集,FOLLOW(A)和FOLLOW(B),以及各产生式的SELECT集。
②构造LL
(1)分析表,并分析符号串baabbb是否是。
解:
(1)FIRST(aBc)={a},FIRST(bAB)={b}FIRST(aAb)={a},A→b:
FIRST(A→b)={b},B→b:
FIRST(b)={b},FIRST(ε)={ε}
FOLLOW(A)={b,#},FOOLOW(B)={c,#}
SELECT(S→aBc)={a},SELECT(S→bAB)={b},SELECT(A→aAb)={a},SELECT(A→b)={b},SELECT(B→b)={b},SELECT(B→
)={c,#}
因此,所得的LL
(1)分析表如表A-4所示。
表A-4LL
(1)分析表
输入
VN
输入符号
a
b
c
#
S
S→aBc
S→bAB
A
A→aAb
A→b
B
B→b
B→
B→
(2)分析符号串baabbb成功,baabbb是该文法的句子,如图A-16所示。
图A-16识别串baabbb的过程
4.已知文法G(S):
S—>a|(T)
T—>T,S|S
①给出句子((a,a),a)的最左推导并画出语法树;②给出句型(T,a,(T))所有的短语、直接短语、素短语、最左素短语、句柄和活前缀。
解:
(1)最左推导:
S
(T)
(T,S)
(S,S)
(a,S)
(a,(T))
(a,(T,S))
(a,(S,S))
(a,(a,S))
(a,(a,a))
语法树:
如图A-16所示。
图A-16(a,(a,a))的语法树
(2)句型(T,a,(T))的短语、直接短语、素短语、最左素短语、句柄、活前缀及语法树(图A-17)。
短语:
a||T,a||(T)||T,a,(T)||(T,a,(T))
直接短语:
a||(T)
素短语:
a||(T)
最左素短语:
a
句柄:
a
活前缀:
||(||(T||(T,||(T,a
图A-17(T,a,(T))的语法树
项目集族和DFA
1、wab+cde10-/+8+*+
2、abcd-*e/+
3、abc+e*bc+f/+:
=
4、4231
5、句子b(aa)b的规范归约过程:
步骤
符号栈
输入串
动作
0
#
b(aa)b#
预备
1
#b
(aa)b#
移进
2
#b(
aa)b#
移进
3
#b(a
a)b#
移进
4
#b(A
a)b#
归约
5
#b(Ma
)b#
移进
6
#b(Ma)
b#
移进
7
#b(B
b#
归约
8
#bA
b#
归约
9
#bAb
#
移进
10
#S
#
接受
6、消除左递归
S→aFS’|*aFS’
S’→*aFS’|ε
F→+aF|+a