编译原理复习题集docxWord格式文档下载.docx
《编译原理复习题集docxWord格式文档下载.docx》由会员分享,可在线阅读,更多相关《编译原理复习题集docxWord格式文档下载.docx(20页珍藏版)》请在冰豆网上搜索。
其中第一部分(device:
)和第三部分(.extension)口J缺省,device,name和extension都是字母串,长度不限,但至少为1,画出识别这种文件名的确定有限自动机。
9.构造一个DFA,它接受Z={0,1}±
0和1的个数都是偶数的字符串。
10.设有非确定的有自限动机NFAM二({A,B,C},{0,1},5,{A},{C}),其中:
5(A,0)={C}5(A,1)二{A,B}6(B,1)={C}5(C,1)={C}。
请画出状态转换距阵和状态转换图。
11.设匕{a,b,c}*是满足下述条件的符号串构成的语言:
(1)若出现a,则其后至少紧跟两个c;
(2)若出现b,其后至少紧跟一个co
试构造识别L的最小化的DFA,并给出描述L的正规表达式。
12.写出字母表刀二{a,b}上语言L二{w|w的最后两个字母是竝或bb}的正规式,并画出接受该语言的最简DFAo
13.有穷自动机M接受字母表工={0,1}上所有满足下述条件的串:
串中至少包含两个连续的0或两个连续的1。
请写出与M等价的正规式。
14.有正规式b*abb*(abb*)*,
(1)构造该正规式所对应的NFA(|fflj出状态转换图)。
(2)将所求的NFA确定化(画出确定化的状态转换图)。
(3)将所求的NFA最小化・(画出最小化后的状态转换图)。
15.求出下列文法所产生语言对应的止规式.
STbSlaA
AFAIbB
BFAIbClb
CTbSlaA
16.给出与下图的NFA等价的正规式。
17・把下面的NFA确定化。
19.将下面的DFA化成最简形式。
20.为语言
L={w\we(a\/?
)*并且在w的任何前缀中,a的个数不少于b的个数}写一个LR
(1)文法,不准超过6个产生式。
21.写一个文法,使其语言是奇数集,且每个奇数不以0开头。
22.考查文法G(s):
S->
(T)|a+S|aT-*T,S|S
(1)消除文法的左递归;
(2)提取公共左因子;
(3)对毎个非终结符,写岀不带冋朔的递归子程序。
23.设文法G(S):
S-*(L)|aS|a
L->
L,S|S
(1)消除左递归和冋溯;
(2)计算每个非终结符的FIRST和FOLLOW;
(3)构造预测分析表。
24.消除下列文法的左递归.
S^SaPISflP
PTQbPIQ
QTcSdle
25・已知文法G:
A^aABela
BTBbld
给出与上述文法等价的LL
(1)文法Gfo
26.已知文法G[A]:
AfaABIa
B->
Bbld
(1)构造与G[A]等价的LL
(1)文法;
(2)构造G‘[A]的预测分析表。
27.程序的文法如下:
P—D
Iid:
TIprocid;
D;
S
(1)写一个语法制导定义,打印该程序一共声明了多少个id。
(2)写一个翻译方案,打卬该程序毎个变量id的嵌套深度。
28.构造下面文法的LL
(1)分析表。
DtTL
T->
int|real
L—idR
Rt,idR|£
29.考虑下文法:
DTTV
TTintIfloat
VTid,VIid
a.在该文法中提取左公因子。
b.为所得文法的非终结符构造First和Follow集合。
c.说明所得的文法是LL
(1)文法。
d.为所得文法构造LL
(1)分析表。
e.假设有输入串
intx,y,z
写出相应LL
(1)分析程序的动作。
30.说明如下文法是否是LL
(1)文法,若不是,将其转换为LL
(1)文法。
最后给出该文法的LL
(1)分析表。
ATBe
BBbla
31・设有文法:
P-^beginXYend
X->
Xd;
X-d;
Y->
Y;
s
Yfs
(1)该文法含有左递归吗?
若有,消除它。
(2)改造后的文法是LL
(1)文法吗?
若是,给出其预测分析表。
(3)写出句了begind;
send的分析过程。
32.已给文法G[S]:
S-SaPISfIP
P—qbPIq
将G[S]改造成LL
(1)文法,并给出LL
(1)分析表。
33・设文法G(S):
(L)laSla
L,SIS
(1)消除左递归和回溯;
34.给定文法G[S]:
S-AaldAbIBbldBa
Ac
Bfc
构造文法G[S]的LR
(1)分析表。
35.已知文法G(S)
S-a|A|(T)T-T,S|S写出句子((a,a),a)的规范归约过程及每一步的句柄。
36.已知文法G(E)
E-T|E+T
T->
F|T*F
F->
(E)|i
给出句型(T*F+i)的最右推导及画出语法树;
37.说明下而的文法不是SLR(l)文法,并重写一个等价的SLR(l)文法。
S^MalbMcldcIbda
MTd
S'
tSS^MalbMcldcIbdaMid
因为3是M的后继符号之一,因此在上面最右边一个项目集中有移进-归约冲突。
等价的SLR(l)文法是
S—>
dalbdcldclbda
38.在PASCAL语言中,简单类型的变量的声明例举如下:
m,n:
integer
p,q,r:
real
为这样的声明写一个LR
(1)文法(为简单起见,变量标识符都用id表示),并根据你的文法写一个语法制导定义(或叫做为你的文法加上语义动作),它将变量的类型填入符号表。
39・一个非LR
(1)的文法如下:
LtMLbIa
MT£
请给出所冇冇移进一归约冲突的LR
(1)项目集,以说明该文法确实不是LR
(1)的。
40.若冇文法G(S)的产生式如下:
S—R
STR
L»
r
LTi
RTL,
构造识别所有项目集规范族的DFA.,判断该文法是否是SLR(l)文法,说明理由。
41.现有句型ybal/3和产生式A^ba,分别指出LL
(1)方法和LR
(1)方法在扫描到此句型的什么位置决定用此产生式?
42.为下面的算术表达式文法写一个语法制导的翻译方案,它将每个了表达式E的符号
(即值大于零还是小于零)记录在屈性E.sign屮(屈性值分别用POS或NEG表示)。
你可以假定所有的整数都不为零,这样就不用担心零的符号。
ETE*E丨+EI-EIunsignedjnteger
43.一个文法如下:
St(S)
S—>
a请给出该文法111对活前缀(((有效的LR
(1)项口。
44.为下面文法添加语义规则(或叫动作了程序),输出S,产生的二进制数的值,如输入是101时,输出5o
SJS
SSB|B
Bt0|1
45.写出表达式(a+bM/(a+b)-d的逆波兰表示及三元式序列。
46.把表达式
-(a+b)*(c+d)+(a+b+c)
翻译成三地址码序列。
47.设布尔表达式的文法为
E-*EiVE2
EEiAE?
E-i
假定它们将用于条件控制语句中,请
(1)改写文法,使之适合进行语法制导翻译;
(2)写出改写后的每个产生式的语义动作。
48.将语句if(A<
XaB>
0)while(C>
0)C=C+D;
49.设有基本块如下:
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)画出中间代码的流图;
(2)设A、B是出基本块后的活跃变量,请给出优化后的三地址码序列。
50.设已构造出文法G(S):
(1)StBB
(2)BTaB
(3)BTb
的LR分析表如卜
状态
ACTION
GOTO
a
b
#
S
B
s3
s4
1
2
acc
s6
s7
5
3
8
4
r3
rl
6
9
7
r2
假定输入串为abab,请给出LR分析过程(即按照步骤给出状态,符号,输入串的变化过程)。
51.给出活动记录空间结构。
并给出各部分的存储对象。
52.将下而程序段翻译成四元式序列。
while(A<
CAB<
D){if(A==l)C=C+1;
elsewhile(A<
D){
A二A+2;
53・冇一语法制导翻译如下所示:
S->
bAb{printC<
r,)}
A(B{print(“2”)}
A->
a{printC3)}
Aa){print(“4"
)}
若对输入序列b(((aa)a)a)b进彳亍自底向上分析,请写出输出序列。
54•画出IFa>
0THENx:
=x+lELSEx:
二4*(x-1)的翻译方案图。
55.下面是一个C语言程序:
main()
{
longi;
longa[0][4];
longj;
(1)按照数组size的计算公式,sizeof(a)的值一定是0。
(2)a[0][0]的值是4。
虽然a的size是0,但它仍然有起始地址,并.fta[0][0]的地址等于a的起始地址。
由于X86/Linux机器上,活动记录栈向低地址方向增长,另外由于低地址放低位字节,因此a[01[0]的地址和i的地址一致,其值和i的值一样,等于4。
56.将下面的条件语句表示成三地址码序列:
if(a>
b)x=a+