广工编译原理精选题集+必考大题汇编.docx
《广工编译原理精选题集+必考大题汇编.docx》由会员分享,可在线阅读,更多相关《广工编译原理精选题集+必考大题汇编.docx(35页珍藏版)》请在冰豆网上搜索。
广工编译原理精选题集+必考大题汇编
《编译原理》期末试题
(二)
1、描述由正规式b*(abb*)*(a|e)定义的语言,并画出接受该语言的最简DFA。
2、证明文法EE+id|id是SLR
(1)文法。
3、下面是表达式和赋值语句的文法,其中and的类型是boolboolbool,+的类型是intintint,=的类型是intintbool,:
=要求id和E的类型都是int或者都是bool。
为该文法写一个语法制导定义或翻译方案,它完成类型检查。
Sid:
=E
EEandE|E+E|E=E|id
6、描述由正规式ba(bba)b定义的语言,并画出接受该语言的最简DFA。
7、下面的文法产生代表正二进制数的0和1的串集:
BB0|B1|1
下面的翻译方案计算这种正二进制数的十进制值:
BB10{B.val:
=B1.val2}
|B11{B.val:
=B1.val2+1}
|1{B.val:
=1}
请消除该基础文法的左递归,再重写一个翻译方案,它仍然计算这种正二进制数的十进制值。
编译原理试卷二答案
1、由正规式b*(abb*)*(a|e)定义的语言是字母表{a,b}上不含子串aa的所有串的集合。
最简DFA如下:
2、先给出接受该文法活前缀的DFA如下:
I0和I3都只有移进项目,肯定不会引起冲突;I2和I4都无移进项目并仅含一个归约项目,也肯定不会引起冲突;在I1中,E¢的后继符号只有$,同第2个项目的展望符号“+”不一样,因此I1也肯定不会引起冲突。
由此可以断定该文法是SLR
(1)的。
3、语法制导定义如下。
Sid:
=E{S.type:
=if(id.type=boolandE.type=bool)or(id.type=intandE.type=int)thentype_okelsetype_error}
EE1andE2{E.type:
=ifE1.type=boolandE2.type=boolthenboolelsetype_error}
EE1+E2{E.type:
=ifE1.type=intandE2.type=intthenintelsetype_error}
EE1=E2{E.type:
=ifE1.type=intandE2.type=intthenboolelsetype_error}
Eid{E.type:
=lookup(id.entry)}
6、正规式ba(bba)b体现的特点是,每个a的左边都有若干b,除非a是第一个字母。
该正规式定义的语言是:
至少含一个a,但不含子串aa的所有a和b的串集。
最简DFA如下:
7、消除左递归后的文法:
B1B
B0B|1B|
相应的翻译方案如下:
B1{B.i:
=1}B{B.val:
=B.val}
B0{B1.i:
=B.i2}B1{B.val:
=B1.val}
|1{B1.i:
=B.i2+1}B1{B.val:
=B1.val}
|{B.val:
=B.i}
《编译原理》期末试题(三)
1、从优化的范围的角度,优化可以分哪两类?
对循环的优化可以有哪三种?
答:
从优化的范围的角度,优化可以分为局部优化和全局优化两类;
对循环的优化有三种:
循环不变表达式外提、归纳变量删除与计算强度削减。
2、写出表达式a=b*c+b*d对应的逆波兰式、四元式序列和三元式序列。
答:
逆波兰式:
abc*bd*+:
=
四元式序列:
三元式序列:
OPARG1ARG2
(1)(*,b,c,t1)
(1)(*b,c)
(2)(*,b,d,t2)
(2)(*b,d)
(3)(+,t1,t2,t3)(3)(+
(1),
(2))
(4)(:
=,t3,/,a)(4)(:
=(3),a)
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→aA|bQ;A→aA|bB|b;B→bD|aQ;Q→aQ|bD|b;D→bB|aA;E→aB|bF
F→bD|aE|b
构造相应的最小的DFA。
解:
先构造其NFA:
用子集法将NFA确定化:
a
b
S
A
Q
A
A
BZ
Q
Q
DZ
BZ
Q
D
DZ
A
B
D
A
B
B
Q
D
将S、A、Q、BZ、DZ、D、B重新命名,分别用0、1、2、3、4、5、6表示。
因为3、4中含有z,所以它们为终态。
a
b
0
1
2
1
1
3
2
2
4
3
2
5
4
1
6
5
1
6
6
2
5
令P0=({0,1,2,5,6},{3,4})用b进行分割:
P1=({0,5,6},{1,2},{3,4})再用b进行分割:
P2=({0},{5,6},{1,2},{3,4})再用a、b进行分割,仍不变。
再令{0}为A,{1,2}为B,{3,4}为C,{5,6}为D。
最小化为右上图。
《编译原理》期末试题(四)
一、简述编译程序的工作过程。
(10)
①词法分析②语法分析③语义分析④代码优化⑤目标代码生成
三、给出下面语言的相应文法:
(15)
L1={anbn|n≥1}L2={anbm+nam|n≥1,m≥0}
四、对下面的文法G:
S→a|b|(T)
T→T,S|S
(1)消去文法的左递归,得到等价的文法G2;
(2)判断文法G2是否LL
(1)文法,如果是,给出其预测分析表。
(15)
G2:
S→a|b|(T)
T→ST’
T’→,ST’|ε
G2是LL
(1)文法。
a
b
(
)
,
#
S
S→a
S→b
S→(T)
T
T→ST’
T→ST’
T→ST’
T’
T’→ε
T’→,ST’
五、设有文法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)文法。
七、有定义二进制整数的文法如下:
L→LB|B
B→0|1
构造一个翻译模式,计算该二进制数的值(十进制的值)。
(15)
引入L、B的综合属性val,翻译模式为:
S→L{print(L.val)}
L→L1B{L.val=L1.val*2+B.val}
L→B{L.val=B.val}
B→0{B.val=0}
B→1{B.val=1}
《编译原理》期末试题(五)
三有穷自动机M接受字母表={0,1}上所有满足下述条件的串:
每个1都有0直接跟在右边。
构造一个最小的DFAM及和M等价的正规式。
【】【】
四证明正规式(ab)*a与正规式a(ba)*等价(用构造他们的最小的DFA方法)。
【答案:
】
五写一个文法,使其语言是:
L={1n0m1m0n|m,n≥0}
【】【】五文法G:
S→1S0|A
A→0A1|ε
六对文法G[S]
S→aSb|P
P→bPc|bQc
Q→Qa|a
(1)它是否是算符优先文法?
请构造算符优先关系表
(2)文法G[S]消除左递归、提取左公因子后是否是LL
(1)文法?
请证实。
【】【】1.求出G[S]的FIRSTVT集和LASTVT集:
FIERSTVT(S)={a,b}LASTBVT(S)={b,c}
FIERSTVT(P)={b}LASTBVT(P)={c}
FIERSTVT(Q)={a}LASTBVT(Q)={a}
构造优先关系表为:
a
b
c
a
<>
<
>
b