西安理工大学《编译原理》编译原理作业集-第六章.doc
文本预览下载声明
第六章 属性文法和语法制导翻译
本章要点
1. 属性文法,基于属性文法的处理方法;
2. S-属性文法的自下而上计算;
3. L-属性文法的自顶向下翻译;
4. 自下而上计算继承属性;
本章目标
掌握和理解属性方法、基于属性文法的处理方法、S-属性文法和自下而上计算、L-属性文法和自顶向下翻译、自下而上计算继承属性等内容。
本章重点
1.语法制导翻译基本思想2.语义规则的两种描述方法:语法制导的定义和翻译方案。语法制导的定义没有指明语义规则的计算次序,而翻译方案显式给出语义规则(或叫语义动作)的计算次序和位置。
3.基于属性文法的处理方法,综合属性定义(S属性定义)和L属性定义。
4.设计简单问题的语法制导定义和翻译方案,这是本章的重点和难点。这种设计可看成是一种程序设计,是一种事件驱动形式的程序设计,因此它比一般的编程要难得多。这里的事件是句子中各种语法结构的识别。
5.语义规则的三种计算方法:分析树方法、基于规则的方法和忽略规则的方法。
6.S属性的自下而上计算(边语法分析边属性计算,忽略规则的方法)。
7.L属性的自上而下计算(边语法分析边属性计算,忽略规则的方法)。
8.递归计算(先语法分析后属性计算,基于规则的方法)。
本章难点
1. 设计简单问题的语法制导定义和翻译方案;
一、单项选择题:
1. 文法开始符号的所有作为属性计算前的初始值。
a. 综合属性 b. 继承属性 c. 继承属性和综合属性 d. 都不是2. 对应于产生式A→XY继承属性Y.y可能正确的语义规则是。
A.a:=f(X.x,Y.y))Y.y:=f(A.a,Y.y)Y.y:=f(X.x);d. A.a:=f(Y.y);
3. 描述文法符号语义的属性有两种,一种称为另一种称为L-属性 R-属性 综合属性 继承属性4. 出现在产生式________和出现在产生式________不由所给的产生式的属性计算规则进行计算,而是由其他产生式的属性规则计算或者由属性计算器的参数提供。
a. 左边的继承属性;b. 左边的综合属性;c. 右边的综合属性;d. 右边的继承属性
5. 描述文法符号语义的属性值的计算依赖于分析树中它的的属性值;父结点 子结点 兄弟结点 父结点与子结点 父结点与兄弟结点描述文法符号语义的属性值的计算依赖于分析树中它的的属性值。父结点 子结点 兄弟结点 父结点与子结点 父结点与兄弟结点a. 综合属性 b. 继承属性 c. L-属性R-属性→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. b.
c. 12424243
显示全部