编译原理作业集--修订精选
编译原理作业集 第六章 属性文法和语法制导翻译 第六章第六章 属性文法和语法制导翻译属性文法和语法制导翻译 本章要点本章要点 1. 属性文法,基于属性文法的处理方法; 2. S-属性文法的自下而上计算; 3. L-属性文法的自顶向下翻译; 4. 自下而上计算继承属性; 本章目标本章目标 掌握和理解属性方法、基于属性文法的处理方法、 S-属性文法和自下而上计算、L-属性文法 和自顶向下翻译、自下而上计算继承属性等内容。 本章重点本章重点 1.语法制导翻译基本思想。 2.语义规则的两种描述方法语法制导的定义和翻译方案。语法制导的定义没有指明语义 规则的计算次序,而翻译方案显式给出语义规则(或叫语义动作)的计算次序和位置。 3.基于属性文法的处理方法,综合属性定义(S 属性定义)和 L 属性定义。 4.设计简单问题的语法制导定义和翻译方案,这是本章的重点和难点。这种设计可看成是 一种程序设计,是一种事件驱动形式的程序设计, 因此它比一般的编程要难得多。 这里的事 件是句子中各种语法结构的识别。 5.语义规则的三种计算方法分析树方法、基于规则的方法和忽略规则的方法。 6.S 属性的自下而上计算(边语法分析边属性计算,忽略规则的方法) 。 7.L 属性的自上而下计算(边语法分析边属性计算,忽略规则的方法) 。 8.递归计算(先语法分析后属性计算,基于规则的方法) 。 本章难点本章难点 1. 设计简单问题的语法制导定义和翻译方案; 作业题作业题 一、单项选择题一、单项选择题 1. 文法开始符号的所有________作为属性计算前的初始值。 word.word. 编译原理作业集 第六章 属性文法和语法制导翻译 a. 综合属性b. 继承属性c. 继承属性和综合属性d. 都不是 2. 对应于产生式 A→XY 继承属性 Y.y 的属性计算,可能正确的语义规则是________。 a. A.afX.x,Y.y;b. Y.yfA.a,Y.y;c. Y.yfX.x;d. A.afY .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 指示,假设综合属性刚好在每次归约前 计算的。假定产生式为AXYZ,相应的语义规则为A.afX.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 {printaddop.lme} R1|ε T→num {printnum.val} addop→|- 该文法的作用是。 a. 把一个带加号和减号的前缀表达式翻译成相应的后缀表达式 word. 编译原理作业集 第六章 属性文法和语法制导翻译 b. 把一个带加号和减号的后缀表达式翻译成相应的前缀表达式 c. 把一个带加号和减号的后缀表达式翻译成相应的中缀表达式; d. 把一个带加号和减号的中缀表达式翻译成相应的后缀表达式; 12. 有一语法制导翻译如下所示(第 8 章) S→bAb{print “1” } A→B{print “2” } A→a{print “3” } B→Aa{print “4” } 若输入序列为 baaaab,则采用自下而上的分析方法,则输出是。 a. 32224441b. 34242421 c. 12424243d. 34442212 13. 在属性文法中,终结符只具有属性。 a. 传递b. 继承c. 抽象d. 综合 14. 设,有以下左递归翻译模式 A→A1Y {A.agA1.a,Y.y} A→X {A.afX.x} 它的每一个文法符号都有一个综合属性,用相应的小写字母表示,g 和 f 是任意函数。消除 左递归,再考虑语义动作,翻译模式变为 A→X{ R.ifX.x } R{ A.aR.s } R→Y{ R1.igR.i, Y.y } R1 R→ε a. { R.sR1.s } ,{ R.sR.i };b. { R.sR.i },{ R.sR1.s }; c. { R.sR1.i } ,{ R.sR.s };d. { R.sR.s },{ R.sR1.i }; 15. ________________可用于一遍扫描的自上而下分析,而________________则适合于一遍 扫描的自下而上分析。 a. S-属性文法,L-属性文法; b. 继承属性文法,综合属性文法; c. L-属性文法,S-属性文法; d. 综合属性文法,继承属性文法; 一.答案1. b;2. c;3.c,d; 4. a, c;5. b;6. e;7. b,a;8. c;9. b;10. a;11. d;12. b; 13. d;14. a;15. c; 二、填空题二、填空题 1. ________属性用于“自下而上”传递信息;而________属性用于“自上而下”传递信息。 2. 如果一属性文法不存在属性之间的________,那么称该文法为良定义的。 3. 按照______