编译原理 作业答案

发布时间 : 星期四 文章编译原理 作业答案更新完毕开始阅读

计算机科学系 2010春季学期

(7) (8) (9) (10) (11) (12) (13) (14) (15) 0164 0163 0169 01695 01697 016978 01697 0169 01 E+a E+F E+T E+Tb E+TF E+TF* E+TF E+T E b*$ reduce by F?a b*$ reduce by T?F b*$ shift *$ reduce by F?b *$ shift $ reduce by F?F* $ reduce by T?TF $ reduce by E?E+T $ accept

~\\(≧▽≦)/~ ~\\(≧▽≦)/~ ~\\(≧▽≦)/~ ~\\(≧▽≦)/~ ~\\(≧▽≦)/~ ~\\(≧▽≦)/~ ~\\(≧▽≦)/~ ~\\(≧▽≦)/~

《编译原理》第八次作业参考答案

一、 考虑以下语法制导定义(Syntax Directed Definition):

语法规则 S ? ABCD A ? gBa B ? B1b B ? b C ? C1c C ? c D ? d 语义规则 S.val = A.val + B.val + C.val + D.val A.val = B.val * 5 B.val = B1.val * 2 B.val = 2 C.val = C1.val * 3 C.val = 3 D.val = 1 对于输入串gbbabbccd构造带注释的分析树(annotated parse tree). 最终答案:34 二、 以下文法定义了二进制浮点数常量的语法规则:

S ? L.L | L L ? LB | B B ? 0 | 1

试给出一个S属性的语法制导定义,其作用是求出该二进制浮点数的十进制值,并存放在开始符号S相关联的一个综合属性value中。例如,对于输入串101.101,S的value属性值结果应该是5.625。要求在编写语法制导定义时,不得改写文法! 参见05级期末考答案.

9

计算机科学系 2010春季学期

三、 选做课本Exercise 5.3.2和Exercise 5.3.3中的一题.

Exercise 5.3.2 产生式 E?E1+T E?T T?T1*F 语义规则 E.expr = E1.expr + ‘+’ + T.expr E.op = ‘+’ E.expr = T.expr E.op = T.op if (T1.op == ‘+’) if (F.op == ‘+’) T.expr = ‘(‘ + T1.expr + ‘)’ +’ *’ + ‘(‘ + F.expr + ‘)’ else T.expr = ‘(‘ + T1.expr + ‘)’ +’ *’ + F.expr else if (F.op == ‘+’) T.expr = T1.expr +’ *’ + ‘(‘ + F.expr + ‘)’ T.op = ’*’ T.expr = F.expr 10

T->F 计算机科学系 2010春季学期

T.op = F.op F ?(E) F?letter

Exercise 5.3.3 产生式 E?E1+T E?T T?T1*F T->F F ?(E) F?id F?x 语义规则 E.expr = E1.expr + ‘+’ + T.expr E.deri = E1.deri + ‘+’ + T.deri E.expr = T.expr E.deri = T.deri T.expr = T1.expr +’*’ +F.expr T.deri = ‘(’ + T1.expr +’*’ +F.deri + ‘+’ + T1.deri + ‘*’ + F.expr + ‘)’ T.expr = F.expr T.deri = F.deri F.expr = E.expr F.deri = ‘(‘ + E.deri + ‘)’ F.expr = id F.deri = ‘0’ F.expr = E.expr F.op = E.op F.expr = letter.lexval F.op = ‘n’ F.expr = x.val F.deri = ‘1’

11

联系合同范文客服:xxxxx#qq.com(#替换为@)