资源描述
上海大学编译原理试卷
精品文档
一.填空题(10分)
1.符号表内容可作为上下文语义检查和作为目标代码生成阶段地址分配 的依据。
2.常见的中间代码形式有逆波兰式、三元式和 四元式 。
3.PL/0编译程序为过程活动记录分配的联系单元分别是动态链、静态链和 返回地址 。
4.寄存器分配的原则是通过对寄存器的有效利用提高 目标代码 的运行效率。
5.算符优先文法G的每一对终结符之间至多成立一种 优先关系 。
6.布尔表达式翻译的语义规则中使用了拉链和 回填 技术。
7.语法分析工作和目标代码生成工作分属于编译过程的前端和 后端 。
8.属性文法表示为A=(G,V,F),其中V和F分别是 属性的有穷集 和断言。
9.G是一个文法,S是G的开始符号,如果 符号串x是从识别符号推导出来的 则x是一个句子。
10.PL/0语言中表达式的语法分析部份由子程序 expression 、term和factor构成。
二、单项选择题(10 分)
1. yacc是一种常用的 自动构造工具。
a)语法分析器 b)词法分析器 c) 语法和词法分析器 d)语义分析器
2. 给定文法A→Aa | ab,下面的符号串中,为该文法句子的是 。
a) aaba b) aaab c) baaa d) abaa
3. 表达式 a + b*c / d对应的逆波兰式是 。
a) abc/*d+ b) abc*d/+ c) ab*c/d+ d) abc*/d+
4.算符优先分析法中对句型中的 进行归约。
a) 句柄 b) 直接短语 c) 素短语 d)最左素短语
5.设有文法G[S]:S→S*S |a+a | b ,该文法 。
a) 不含左递归 b)含公共左因子 c) 是OG文法 d) 是LL(1)文法
6.对于第5题中文法G[S],FIRSTVT(S)= 。
a) { *,+,b,a } b) { b,*,a} c) { b,a} d) { a,*,+ }
7.PL/0语言允许过程的递归调用,它的存储组织采用 方法。
a) 静态分块分配 b) 动态堆式分配 c) 动态栈式分配 d) 静态分配
8.2型文法又被称为 文法。
a) 上下文有关 b) 上下文无关 c) 正规 d) 短语
9.PL/0源程序中的单词“:=”和“end”经识别后对应的单词种类分别是 。
a) becomes和end b) eql 和endsym c) becomes和endsym d) eql和 end
10.若某变量A 在本基本块后不再被继续引用,则称A是 。
a) 活跃变量 b) 非活跃变量 c) 静态变量 d) 动态变量
三、是非题(10 分)
1. 正规式的描述能力强于正规文法的描述能力 (F )
2. 变量的待用信息指出了该变量值的后续引用的位置 (T )
3. PL/0编译程序的语法分析采用的是自顶向下的预测分析方法 (F )
4. 为了及时回填有关四元式的转移目标,可对文法作等价改写 (T )
5. 句型的句柄定义为该句型中位于最左边的短语 ( F)
6. 算符文法的句型中不含相邻的非终结符号 (T )
7. 一个二义文法所生成的语言一定也是二义的语言 ( F)
8. 语言:L={anbn|n≥1}可由一个正规文法产生。 (F )
9. 由开始符号出发,每步进行归约的方法称为自上而下语法分析方法 (T )
10.循环体内的不变运算不一定能提取到循环外执行 ( T)
四、设计题(第1题10分,第2题5分)
构造一个DFA,接受∑={a,b}上由正规式 (aa|ab)*(ab) 定义的字符串,
给出相应的正规文法。
1. DFA:
2.正规文法:
五、设计题(第1题8分,第2题5分)
对下列基本块B应用DAG进行优化,设只有V在基本块后面还要继续引用。
B: T1:= a + b
V:= 2 * T1
T2:= a - b
T3:=T1*T2
V:= T3
T4:= a + b
V= T4 / T3
1.基本块B的DAG
2.优化后的基本块B’
六、设计题(15分)
补充完整下列源语句通过语法制导翻译后生成的四元式序列。
源语句:
Read(a,b);
If (a<10 or b >50 )
While ( a < b) do
Begin
a:=a+1;
b=b-2*a;
End;
四元式序列:
1) Read(a)
2) Read(b)
3)
4)
5)
6)
7)
8)
9)
10)
11)
12)
13)
14)
15)
七. 证明题(第1题2分,第2,3题各5分)
设有文法G[S]:S→a A | a A B A→A b | d B→e
1) 证明G[S]是一个非LL(1)文法
2) 把 G[S]等价改写为LL(1)文法G1[S],并给出证明
3) 构造题2)中LL(1)文法G1[S]的预测分析表:
a
b
d
e
#
S
A
B
S′
A′
八.综合题(每小题5分)
设有文法G[S’]: (0) S’→S
(1) S→aAB
(2) A→bA
(3) A→b
(4) B→d
1. 构造G[S]的LR(0)项目规范族 C={I0,I1,…In},包括Go (I,x)
2. 说明G[S]属于哪一种LR文法,构造相应的LR分析表
状态 a b d # S A B
3. 对输入串 abdb# 给出分析过程:
步骤 状态 符号 输入串 动作
0. 0 # abbd#
1.
2.
3.
4.
5.
6.
7.
8.
收集于网络,如有侵权请联系管理员删除
展开阅读全文