第五章。
练习5.1.1:
对于图5-1中的sdd,给出下列表达式对应的注释语法分析树:
1)(3+4)*(5+6)n
练习5.2.4:
这个文法生成了含“小数点”的二进制数:
s-> l->lb|b b->0|1
设计一个l属性的sdd来计算即输入串的十进制数值。比如,串101.101应该被翻译为十进制的5.625。提示:使用一个继承属性来指明一个二进制位在小数点的哪一边。
答:元文法消除左递归后可得到文法:
s-> l->bl’ l’->bl’|εb->0|1
使用继承属性指明一个二进制位数在小数点的哪一边,2表示左边,1表示右边。
使用继承属性m记录b的幂次。
非终结符号l和l’具有继承属性inh、side、m和综合属性syn
练习5.3.1:下面是涉及运算符+和整数或浮点运算分量的表达式文法。区分浮点数的方法是看它有无小数点。
e-〉e+t|t t-〉
1)给出一个sdd来确定每个项t和表达式e的类型。
2)扩展(1)中得到的sdd,使得它可以把表达式转换成为后缀表达式。使用一个单目运算符inttofloat把一个整数转换为相等的浮点数。答:
练习5.4.4:
为下面的产生式写出一个和例5.10类似的l属性sdd。这里的每个产生式表示一个常见的c语言中的那样的控制流结构。
你可能需要生成一个三地址语句来跳转到某个标号l,此时你可以生成语句goto l
1)s->if (c) s1 else s2
2)s->do s1 while (c)
3)s->’l ->ls|ε
请注意,列表中的任何语句都可以包含一条从它的内部跳转到下一个语句的跳转指令,因此简单地为各个语句按序生成**是不够的。
答:第六章。
练习6.1.1:为下面的表达式构造dag
(x+y)-(x+y)*(x-y)))x+y)*(x-y))
答:dag如下。
练习6.2.1:将算术表达式a+ -b+c)翻译成。
1)抽象语法树。
2)四元式序列。
3)三元式序列。
4)间接三元式序列。
答:(1)抽象语法树。
2) 四元式序列。
t1=b+c
t2=minus t1
t3=a+t2
3)三元式序列。
4)间接三元式序列。
instruction
练习6.4.3:使用图6-22中的翻译方案,来翻译下列赋值语句。
x=a[i][j]+b[i][j]
答:假定数组a,b均为2*3规模的整型数组,且一个整数的宽度为4
x=a[i][j]+b[i][j]的注释语法分析树如下。
20、对生活垃圾进行分类、分装,这是我们每个公民的义务。只要我们人人参与,养成良好的习惯,我们周围的环境一定会变得更加清洁和美丽。
7、对于生活中的一些废弃物,我们可以从垃圾中**它们并重新加工利用。这样做不但能够减少垃圾的数量,而且能够节省大量的自然资源。
答:无色无味,比空气重,不支持燃烧。
编译原理第5 7章作业 含答案
第5 7章课后作业 含答案 1 将文法g s 改写为等价的g s 使g s 不含左递归和左公共因子。g s s bsae ba a abd dc a 解 g s s bs s sae a a dc a a a bd a 2 有文法g s s abf a bbs e b dag 证明文法g是ll 1 ...
编译原理作业1答案
计算机科学系 2012春季学期。编译原理 第一次作业参 一 下列正则表达式定义了什么语言 用尽可能简短的自然语言描述 1.b ab ab 所有含有偶数个a的由a和b组成的字符串。2.c a a c b a b c c b b c a a b c 答案一 所有至少含有1个a和1个b的由a,b和c组成的...
编译原理作业7答案
软件学院 2012秋季学期。编译原理 第七次作业参 一 证明下列文法。s aa bac dc bdaa d是lalr 1 文法但不是slr 1 文法。构造lr 1 自动机 没有需要合并的状态 没有状态存在冲突,因而是lalr 1 文法。构造lr 0 自动机 在状态i6,由于 a follow a 因...