编译原理模拟试题六.docx
《编译原理模拟试题六.docx》由会员分享,可在线阅读,更多相关《编译原理模拟试题六.docx(9页珍藏版)》请在冰点文库上搜索。
编译原理模拟试题六
《编译原理》模拟试题六
一、是非题(请在括号内,正确的划√,错误的划×)(每个2分,共20分)
1.设r和s分别是正规式,则有L(r|s)=L(r)L(s)。
(×)
2.确定的自动机以及不确定的自动机都能正确地识别正规集。
(√)
3.词法分析作为单独的一遍来处理较好。
(×)
4.构造LR分析器的任务就是产生LR分析表。
(√)
5.规范归约和规范推导是互逆的两个过程。
(×)
6.同心集的合并有可能产生新的“移进”/“归约”冲突。
(×)
7.LR分析技术无法适用二义文法。
(×)
8.树形表示和四元式不便于优化,而三元式和间接三元式则便于优化。
(×)
9.程序中的表达式语句在语义翻译时不需要回填技术。
(√)
10.对中间代码的优化依赖于具体的计算机。
(×)
二、选择题(请在前括号内选择最确切的一项作为答案划一个勾,多划按错论)(每个4分,共40分)
1.编译程序绝大多数时间花在_____上。
A.()出错处理 B.()词法分析
C.()目标代码生成 D.()表格管理
2.编译程序是对_____。
A.()汇编程序的翻译 B.()高级语言程序的解释执行
C.()机器语言的执行 D.()高级语言的翻译
3.采用自上而下分析,必须_____。
A.()消除左递归 B.()消除右递归
C.()消除回溯 D.()提取公共左因子
4.在规范归约中,用_____来刻画可归约串。
A.()直接短语 B.()句柄
C.()最左素短语 D.()素短语
5.若a为终结符,则A->α·aβ为_____项目。
A.()归约 B.()移进 C.()接受 D.()待约
6.间接三元式表示法的优点为_____。
A.()采用间接码表,便于优化处理 B.()节省存储空间,不便于表的修改
C.()便于优化处理,节省存储空间 D.()节省存储空间,不便于优化处理
7.基本块内的优化为_____。
A.()代码外提,删除归纳变量 B.()删除多余运算,删除无用赋值
C.()强度削弱,代码外提 D.()循环展开,循环合并
8.在目标代码生成阶段,符号表用_____。
A.()目标代码生成 B.()语义检查
C.()语法检查 D.()地址分配
9.若项目集Ik含有A->α·,则在状态k时,仅当面临的输入符号a∈FOLLOW(A)时,才采取“A->α·”动作的一定是_____。
A.()LALR文法 B.()LR(0)文法
C.()LR
(1)文法 D.()SLR
(1)文法
10.堆式动态分配申请和释放存储空间遵守_____原则。
A.()先请先放 B.()先请后放
C.()后请先放 D.()任意
三、填空题(每空1分,共10分)
1.词法分析基于__正则___文法进行,即识别的单词是该类文法的句子。
2.语法分析基于__上下文无关___文法进行,即识别的是该类文法的句子。
语法分析的有效工具是__语法树___。
3.分析句型时,应用算符优先分析技术时,每步被直接归约的是__最左素短语___,而应用LR分析技术时,每步被直接归约的是___句柄__。
4.语义分析阶段所生成的与源程序等价的中间表示形式可以有__逆波兰___、___四无式表示__与___三元式表示__等。
5.按Chomsky分类法,文法按照___规则定义的形式__进行分类。
6.一个文法能用有穷多个规则描述无穷的符号串集合(语言)是因为文法中存在有___递归__定义的规则。
四、简答题(20分)
1.文法G[S]为:
S->Ac|aB
A->ab
B->bc
写出L(G[S])的全部元素。
解:
S=>Ac=>abc
或S=>aB=>abc
所以L(G[S])={abc}
2.构造正规式1(0|1)*101相应的DFA。
解:
先构造NFA:
确定化:
重新命名,令AB为B、AC为C、ABY为D得:
所以,可得DFA为:
3.文法
S->a|^|(T)
T->T,S|S
对(a,(a,a)和(((a,a),^,(a)),a)的最左推导。
解:
对(a,(a,a)的最左推导为:
S=>(T)=>(T,S)=>(S,S)=>(a,S)
=>(a,(T))=>(a,(T,S))=>(a,(S,S))
=>(a,(a,S))=>(a,(a,a))
对(((a,a),^,(a)),a)的最左推导为:
S=>(T)=>(T,S)=>(S,S)=>((T),S)
=>((T,S),S)=>((T,S,S),S)=>((S,S,S),S)
=>(((T),S,S),S)=>(((T,S),S,S),S)=>(((S,S),S,S),S)
=>(((a,S),S,S),S)=>(((a,a),S,S),S)=>(((a,a),^,S),S)
=>(((a,a),^,(T)),S)=>(((a,a),^,(S)),S)=>(((a,a),^,(a)),S)
=>(((a,a),^,(a)),a)
4.文法:
S->MH|a
H->LSo|ε
K->dML|ε
L->eHf
M->K|bLM
判断G是否为LL
(1)文法,如果是,构造LL
(1)分析表。
解:
各符号的FIRST集和FOLLOW集为:
预测分析表为:
由于预测分析表中无多重入口,所以可判定文法是LL
(1)的。
五.计算题(10分)
已知文法G[S]为:
S->a|^|(T)
T->T,S|S
(1)计算G[S]的FIRSTVT和LASTVT。
(2)构造G[S]的算符优先关系表并说明G[S]是否未算符优先文法。
(3)计算G[S]的优先函数。
(4)给出输入串(a,a)#的算符优先分析过程。
解:
(1)各符号的FIRSTVT和LASTVT:
(2)算符优先关系表:
(3)对应的算符优先函数为:
(4)句子(a,a)#分析过程如下:
一、选择题(每个选择题2分,共20分)
1.文法G产生的⑴的全体是该文法描述的语言。
A.句型B.终结符集C.非终结符集D.句子
2.若文法G定义的语言是无限集,则文法必然是⑵:
A.递归的B前后文无关的C二义性的D无二义性的
3.Chomsky定义的四种形式语言文法中,0型文法又称为⑶文法;1型文法又称为⑷文法;2型语言可由⑸识别。
A.短语结构文法B前后文无关文法C前后文有关文法D正规文法
E图灵机F有限自动机G下推自动机
4.一个文法所描述的语言是⑹;描述一个语言的文法是⑺。
A.唯一的B不唯一的C可能唯一,好可能不唯一
5.数组的内情向量中肯定不含有数组的⑻的信息
A.维数B.类型C.维上下界D.各维的界差
6.在下述的编译方法中,自底向上的方法有⑼,自顶向下的分析方法有⑽。
①简单优先分析②算符优先分析③递归下降分析④预测分析技术⑤LR(K)分析
⑥SLR(k)分析⑦LL(k)分析⑧LALR(K)分析
A.③④⑦B.③④⑧C.①②⑧D.③④⑤⑥⑦
E.①②⑤⑥⑦F.①②⑤⑥⑧
二、简答题(每小题5分,共20分)
1.LL
(1)分析法对文法有哪些要求
2.常见的存储分配策略有几种它们都适合于什么性质的语言
3.常见循环优化都有哪些项目
4.什么是活动记录它主要由哪些内容构成
三、(8分)化简文法G[S]:
S→ASe|BCaD|aD|AC
A→Cb|DBS
C→bC|d
B→Ac
D→aD
四、(12分)设Lí{a,b,c}*是满足下述条件的符号串构成的语言:
(1)若出现a,则其后至少紧跟两个c;
(2)若出现b,其后至少紧跟一个c。
试构造识别L的最小化的DFA,并给出描述L的正规表达式。
五、(12分)已给文法G[S]:
S→SaP|Sf|PP→qbP|q
将G[S]改造成LL
(1)文法,并给出LL
(1)分析表。
六、(12分)给定文法G[S]:
S→Aa|dAb|Bb|dBaA→cB→c
构造文法G[S]的LR
(1)分析表。
七、(8分)将下面的条件语句表示成逆波兰式和四元式序列:
ifa>bthenx:
=a+b*celsex:
=b-a;
八、(8分)给定基本块:
A:
=3*5
B:
=E+F
C:
=A+12
D:
=E+F
A:
=D+12
C:
=C+1
E:
=E+F
假定出基本块后,只有A、C、E是活跃的,给出用DAG图完成优化后的代码序列。
参考答案:
一、⑴D⑵A⑶A⑷C⑸G.⑹A⑺B⑻A⑼F⑽A
二、1.对于G中的每个产生式A→γ1|γ2|…|γm,其各候选式均应满足:
(1)不同的候选式不能推出以同一终结符号打头的符号串,即
FIRST(γi)∩FIRST(γj)=φ(1≤i,j≤m;i≠j)
(2)若有γjε,则其余候选式γi所能推出的符号串不能以FOLLOW(A)中的终结符号开始,即有
FIRST(γi)∩FOLLOW(A)=φ(i≤1,2,…,m;i≠j)
2.有三种分配存储空间的方式:
(1)静态分配若在编译阶段就能确定源程序中各个数据实体的存储空间大小,则可以采用较简单的静态存储管理。
适合静态管理的语言应具备条件:
数组上下界是常数、过程调用不允许递归、不允许动态建立数据实体。
(2)栈式分配适用于允许递归调用的程序设计语言;(3)堆式分配对于允许程序在运行时为变量动态申请和释放存储空间的语言,采用堆式分配是最有效的解决方案。
3.不变运算外提;运算强度削弱;消除归纳变量;下标变量地址计算优化。
4.一个过程的一次执行所需信息的管理,是通过称为活动记录的连续存储块来实现的。
活动记录的主要内容有:
(1)临时变量域存放目标程序临时变量的值;
(2)局部数据域存放过程本次执行时的局部数据、简单变量及数组内情向量等;(3)机器状态域保存在调用过程前有关机器状态的信息,包括各寄存器的当前值及返回地址等;(4)存取链为访问其它活动记录中所存放的非局部数据所提供的链地址;(5)控制链指向主调过程的活动记录;(6)实参存放主调过程为被调用过程所提供的实参信息;(6)返回值为主调过程存放被调过程的返回值
三、化简后:
S→ASe|ACA→CbC→bC|d
四、DFA如图所示。
相应的正规式为(c|acc|bc)*。
五、
改造后的文法:
S→PS'S'→aPS'|fS'|eP→qP'P'→bP|e
各候选式的FIRST集,各非终结符的FOLLOW集为
产生式
FIRST集
FOLLOW集
S→PS'
{q}
{#}
S'→aPS'
→fS'
→e
{a}
{f}
{e}
{#}
P→qP'
{q}
{a,f,#}
P'→bP
→e
{b}
{e}
{a,f,#}
LL
(1)分析表为
六、分析表如下图所示
七、
(1)逆波兰式:
其中,BLE表示汪或等于时的转向指令;[…]表示标号。
(2)四元式:
(1)(j>,a,b,(3))
(2)(j,,,(7))
(3)(*,b,c,T1)
(4)(+,a,T1,T2)
(5)(:
=,T2,,x)
(6)(j,,,(9))
(7)(-,b,a,T3)
(8)(:
=,T3,,x)
(9)(……)
八、化简后的的四元式序列为
A:
=D+12
E:
=E+F
C:
=28