广工编译原理精选题集+必考大题.docx
- 文档编号:25793437
- 上传时间:2023-06-14
- 格式:DOCX
- 页数:45
- 大小:404.51KB
广工编译原理精选题集+必考大题.docx
《广工编译原理精选题集+必考大题.docx》由会员分享,可在线阅读,更多相关《广工编译原理精选题集+必考大题.docx(45页珍藏版)》请在冰豆网上搜索。
广工编译原理精选题集+必考大题
《编译原理》期末试题
(二)
1、描述由正规式b*(abb*)*(a|)定义的语言,并画出接受该语言的最简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|)定义的语言是字母表{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如下:
start
2
a
b
b
1
0
a
b
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):
S
b
M
(
T
M
a
b
L
)
答:
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
<>
c
>
>
由于在优先关系中同时出现了aa以及bb,所以该文法不是算符优先文法。
2.消除左递归和提取左公因子后的文法为:
S→aSb|P
P→bP’
P’→Pc|Qc
Q→aQ’
Q’→aQ’|ε
求具有相同左部的两个产生式的Select集的交集:
Select(S→aSb)∩Select(S→P)={a}∩First(P)={a}∩{b}=Ф
Select(P’→Pc)∩Select(P’→Qc)=First(P)∩First(Q)={b}∩{a}=Ф
Select(Q’→aQ’)∩Select(Q’→ε)={a}∩Follow(Q)={a}∩{c}=Ф
所以修改后的文法是LL
(1)文法。
七已知文法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)分析表
如下:
r4
11
S10
6
r2
10
r3
9
r1
8
S11
r5
7
r5
S9
5
S8
4
6
S7
3
4
S5
2
acc
1
A
#
S3
b
e
d
c
1
S
goto
a
S2
action
0
状态
八已知源程序如下:
prod:
=0;
i:
=1;
whilei≤20do
begin
prod:
=prod+a[i]*b[i];
i:
=i+1
end;
试按语法制导翻译法将源程序翻译成四元式序列(设A是数组a的起始地址,B是数组b的起始地址;机器按字节编址,每个数组元素占四个字节)。
【答案:
】
十一对PL/0语言的while语句while条件BDO语句S的编译程序,
请在空缺处填空,完成该语句的编译算法:
switch(SYM){……
caseWHILESYM:
CX1=CX;
GetSym();
CONDITION(SymSetAdd(DOSYM,FSYS),LEV,TX);
CX2=CX;
GEN(JPC,0,0);
if(SYM==DOSYM)
GetSym();
elseError(18);
STATEMENT(FSYS,LEV,TX);
GEN(JMP,0,CX1);
CODE[CX2].A=CX;
break;
……}
《编译原理》期末试题(六)
一、回答下列问题:
(30分)
1.什么是S-属性文法?
什么是L-属性文法?
它们之间有什么关系?
解答:
S-属性文法是只含有综合属性的属性文法。
(2分)
S-属性文法是L-属性文法的特例。
(2分)
3.划分程序的基本块时,确定基本块的入口语句的条件是什么?
解答:
(1)程序第一个语句,或
(2)能由条件转移语句或无条件转移语句转移到的语句,或
(3)紧跟在条件转移语句后面的语句。
4.(6分)运行时的DISPLAY表的内容是什么?
它的作用是什么?
答:
DISPLAY表是嵌套层次显示表。
每当进入一个过程后,在建立它的活动记录区的同时建立一张嵌套层次显示表diaplay.假定现在进入的过程层次为i,则它的diaplay表含有i+1个单元,自顶向下每个单元依次存放着现行层、直接外层、…、直至最外层(主程序,0层)等每层过程的最新活动记录的起始地址。
通过DISPLAY表可以访问其外层过程的变量。
二、设={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
三、写一个文法使其语言为L(G)={anbmambn|m,n≥1}。
(6分)
答:
文法G(S):
SaSb|B
BbBa|ba
四、对于文法G(E):
(8分)
ET|E+T
TF|T*F
F(E)|i
E
T
F
(
E
)
E
+
T
F
i
T
T
*
F
1.写出句型(T*F+i)的最右推导并画出语法树。
2.写出上述句型的短语,直接短语、句柄和素短语。
答:
1.(4分)
ETF(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
六、设某语言的do-while语句的语法形式为(9分)
SdoS
(1)WhileE
其语义解释为:
针对自下而上的语法分析器,按如下要求构造该语句的翻译模式:
(1)写出适合语法制导翻译的产生式;
(2)写出每个产生式对应的语义动作。
答:
(1).适合语法制导翻译的文法(3分)
G(S):
Rdo
URS
(1)While
SUE
(2).(6分)
Rdo
{R.QUAD:
=NXQ}
URS
(1)While
{U.QUAD:
=R.QUAD;
BACKPATCH(S.CHAIN,NXQ)}
SUE
{BACKPATCH(E.TC,U.QUAD);
S.CHAIN:
=E.FC}
答案二:
(1)SdoM1S
(1)WhileM2E
Mε(3分)
(2)Mε{M.QUAD:
=NXQ}(6分)
SdoM1S
(1)WhileM2E
{
BACKPATCH(S
(1).CHAIN,M2.QUAD);
BACKPATCH(E.TC,M1.QUAD);
S.CHAIN:
=E.FC}
七、(8分)将语句
if(A
=C+D
翻译成四元式。
(8分)
答:
100(j<,A,X,102)
101(j,-,-,109)
102(j>,B,0,104)
103(j,-,-,109)
104(j>,C,0,106)
105(j,-,-,109)
106(+,C,D,T1)
107(:
=,T1,-,C)
108(j,-,-,104)
109
(控制结构3分,其他5分)
八、(10分)设有基本块如下:
T1:
=S+R
T2:
=3
T3:
=12/T2
T4:
=S/R
A:
=T1-T4
T5:
=S+R
B:
=T5
T6:
=T5*T3
B:
=T6
(1)画出DAG图;
(2)设A,B是出基本块后的活跃变量,请给出优化后的四元式序列。
T1,T5,B
3
T2
4
S
R
+
/
*
_
T3
T4
A
T6,B
n4
n5
n1
n2
n3
n6
n8
n7
答:
(1)DAG如右图:
(6分)
(2)四元式序列:
(4分)
T1:
=S+R
T4:
=S/R
A:
=T1-T4
B:
=T1*4
九、(9分)设已构造出文法G(S):
(1)SBB
(2)BaB
(3)Bb
的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.(10分)处于/*和*/之间的串构成注解,注解中间没有*/。
画出接受这种注解的DFA的状态转换图。
2.为语言L={ambn|0m2n}(即a的个数不超过b的个数的两倍)
写一个LR
(1)文法,不准超过6个产生式。
(若超过6个产生式,不给分。
若所写文法不是LR
(1)文法,最多给5分。
)
3.(10分)构造下面文法的LL
(1)分析表。
DTL
Tint|real
LidR
R,idR|
4.(15分)就下面文法
S(L)|aLLS|S
给出一个语法制导定义,它输出配对括号的个数。
给出一个翻译方案,它输出每个a的嵌套深度。
如句子(a,(a,a)),第一小题的输出是2,第二小题的输出是122。
参考答案
1.
1
2
4
start
5
2
others
others
/
*
*
*
/
2.LR
(1)文法LR
(1)文法二义文法
SAB|aABbSABSAASb|
AaaAb|AaaAb|ab|Aa|
BBb|BBb|
3.intrealid,$
DDTLDTL
TTintTreal
LLidR
RR,idRR
4.SSprint(S.num)
S(L)S.num:
=L.num+1
SaS.num:
=0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理 精选 必考