编译原理试题集78677 下载本文

解答: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.

三.单项选择题

1. 文法开始符号的所有________作为属性计算前的初始值。 a. 综合属性 b. 继承属性 c. 继承属性和综合属性 d. 都不是

2. 对应于产生式A→XY继承属性Y.y的属性计算,可能正确的语义规则是________。 a. A.a:=f(X.x,Y.y);b. )Y.y:=f(A.a,Y.y);c. Y.y:=f(X.x);d. A.a:=f(Y.y);

3. 描述文法符号语义的属性有两种,一种称为_____,另一种称为______。 a. L-属性 b. R-属性 c. 综合属性 d. 继承属性

4. 出现在产生式________和出现在产生式________不由所给的产生式的属性计算规则进行 计算,而是由其他产生式的属性规则计算或者由属性计算器的参数提供。 a. 左边的继承属性;b. 左边的综合属性;c. 右边的综合属性;d. 右边的继承属性

5. 描述文法符号语义的属性,综合属性值的计算依赖于分析树中它的________的属性值; a. 父结点 b. 子结点 c. 兄弟结点 d. 父结点与子结点 e. 父结点与兄弟结点

6. 描述文法符号语义的属性,继承属性值的计算依赖于分析树中它的______的属性值。 a. 父结点 b. 子结点 c. 兄弟结点 d. 父结点与子结点 e. 父结点与兄弟结点

7. 一般来说,对出现在产生式右边的__________ 和出现在产生式左边的_______ 都必须提 供一个计算规则。

a. 综合属性, b. 继承属性, c. L-属性, d. R-属性

8. 考虑非终结符A、B和C,其中A有一个继承属性a和一个综合属性b,B有综合属性c,C有继

承属性d。产生式A→BC可能的属性计算规则中,_______属性要在其它地方计算,不是在本产

生式的属性计算规则中计算的。 a. C.d和A.b;b. A.a和A.b;c. A.a和B.c;d. C.d和A.a

9. 通常使用________ 的方法在每一个结点处使用语义规则计算综合属性的值。 a. 自顶向下,b. 自底向上,c. 从左到右,d. 从右到左;

10. S-属性文法的计算中,设当前的栈顶由指针top指示,假设综合属性刚好在每次归约前计

算的。假定产生式为A→XYZ,相应的语义规则为A.a:=f(X.x, Y.y,Z.z)。 在把XYZ归约成A 以前,属性Z.z的值放在val[top]中,Y.y的值放在val[top-1]中, X.x的值放在val[top-2] 中。归约以后,A的状态存放在 中(即X的位置)。综合属性A.a的值存放在 中。 a. state[top],val[top]; b. state[top-1],val[top-1]; c. state[top-2],val[top-2]; d. state[top-3],val[top-3];

11. 一个简单的翻译模式 E→TR R→addop T {print(addop.lexeme)} R1|ε T→num {print(num.val)} addop→+|- 该文法的作用是 。 a. 把一个带加号和减号的前缀表达式翻译成相应的后缀表达式 b. 把一个带加号和减号的后缀表达式翻译成相应的前缀表达式 c. 把一个带加号和减号的后缀表达式翻译成相应的中缀表达式; d. 把一个带加号和减号的中缀表达式翻译成相应的后缀表达式;

12. 有一语法制导翻译如下所示:(第8章) S→bAb {print “1” } A→(B {print “2” } A→a {print “3” } B→Aa) {print “4” } 若输入序列为b(((aa)a)a)b,则采用自下而上的分析方法,则输出是_________。 a. 32224441 b. 34242421 c. 12424243 d. 34442212

13. 在属性文法中,终结符只具有________ 属性。 a. 传递 b. 继承 c. 抽象 d. 综合

14. 设,有以下左递归翻译模式 A→A1Y {A.a:=g(A1.a,Y.y)} A→X {A.a:=f(X.x)} 它的每一个文法符号都有一个综合属性,用相应的小写字母表示,g和f是任意函数。消

除左递归,再考虑语义动作,翻译模式变为: A→X { R.i:=f(X.x) } R { A.a:=R.s }

R→Y { R1.i:=g(R.i, Y.y) }

R1_____________________

R→ε ______________________ a. { R.s:=R1.s } ,{ R.s:=R.i };b. { R.s:=R.i },{ R.s:=R1 .s }; c. { R.s:=R1.i } ,{ R.s:=R.s };d. { R.s:=R.s },{ R.s:=R1.i };

15. ________________可用于一遍扫描的自上而下分析,而________________则适合于一遍

扫描的自下而上分析。 a. S-属性文法,L-属性文法; b. 继承属性文法,综合属性文法; c. L-属性文法,S-属性文法; d. 综合属性文法,继承属性文法;

解答: 1. 2. 3. 4. 5. 6. 7. 8. 9.

10. 11. 12. 13. 14. 15.

四.名词解释

1. 属性,属性文法,综合属性,继承属性;

2. 语法制导翻译法;

3. 属性依赖图;

4. S-属性文法,L-属性文法;

5. 翻译模式;

解答: 1. 2. 3. 4. 5.

五.简答题

1. 一般情况下,为什么语义分析部分仅产生中间代码?

2. 什么是语法制导翻译?为什么把这种方法叫语法制导翻译?

3. 给定一个L-属性文法,建立翻译模式要满足哪些条件?

解答: 1. 2. 3.

六.应用题

1. 欲打印表达式(4*7+1)*2的值。写出属性文法,根据该属性文法建立一棵带注释的分析树 ,并在该分析树上用箭头标出属性计算次序。

2. 已知上下文无关文法: E→E+T E→E-T E→T T→(E) T→id