好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

编译原理第8章作业及习题参考答案.doc

5页
  • 卖家[上传人]:ni****g
  • 文档编号:549120305
  • 上传时间:2022-10-06
  • 文档格式:DOC
  • 文档大小:89.01KB
  • / 5 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 编译原理作业参考答案 - 3 -第八章 语法制导翻译和中间代码生成1.给出下面表达式的逆波兰表示(后缀式):(1) a*(-b+c) (4) (A∧B) ∨(ØC ∨ D)(7) if(x+y)*z=0 then s∶=(a+b)*c else s∶=a*b*c解(1) ab-c+* (4) AB∧CØD∨∨(7) xy+z*0=sab+c*:=sab*c*:=¥(注:¥表示if-then-else运算)¥=:=*0:=+xyzs+cxabs*c*ab2. 请将表达式-(a+b)*(c+d)-(a+b+c)分别表示成三元式、间接三元式和四元式序列答案:三元式   (1) (+ a, b)   (2) (+ c, d)   (3) (* (1), (2))   (4) (- (3), /)  (5) (+ a, b)(6) (+,(5),c)(7) (- (4), (6))  间接三元式  间接三元式序列   间接码表  (1) (+ a, b)    (1)  (2) (+ c, d)    (2)   (3) (* (1), (2))  (3)   (4) (- (3), /)    (4)  (5) (- (4), (1))  (1) (6) (- (4), (5))  (5)(6)  四元式  (1) (+, a, b, t1)  (2) (+, c, d, t2)  (3) (*, t1, t2, t3)   (4) (-, t3, /, t4) (5) (+, a, b, t5)(6) (+, t5, c, t6)  (6) (-, t4, t6, t7)3. 采用语法制导翻译思想,表达式E的"值"的描述如下:  产生式      语义动作  (0) S′→E    {print E.VAL}   (1) E→E1+E2    {E.VAL∶=E1.VAL+E2.VAL}   (2) E→E1*E2    {E.VAL∶=E1.VAL*E2.VAL}  (3) E→(E1)    {E.VAL∶=E1.VAL}   (4) E→n      {E.VAL∶=n.LEXVAL}如果采用LR分析法,给出表达式(5 * 4 + 8) * 2的语法树并在各结点注明语义值VAL。

      S’*E1E2E0E32E5.VAL=585*E5E6+E44E6.VAL=4E4.VAL=8E3.VAL=20E1.VAL=28E2.VAL=2E0.VAL=56Print(56)4. 假如习题3中表达式E的“值”有两种类型:整型和实型语义处理增加"类型匹配检查",请给出相应的语义描述解:  (0) S′→E { if error≠1 then print E.VAL}   (1) E→E1+E2 { if E1.TYPE=int AND E2.TYPE=int then           begin            E.VAL:=E1.VAL + E2.VAL;            E.YTPE:=int;           end          else if E1.TYPE=real AND E2.TYPE=real then              begin               E.VAL:=E1.VAL + E2.VAL;              E.YTPE:=real;              end            else error=1          }   (2) E→E1*E2 { if E1.TYPE=int AND E2.TYPE=int then            begin            E.VAL:=E1.VAL * E2.VAL;;             E.YTPE:=int;            end          else if E1.TYPE=real AND E2.TYPE=real then            begin             E.VAL:=E1.VAL * E2.VAL;;              E.YTPE:=real;            end            else error=1         }   (3) E→(E1) { E.VAL:=E1.VAL;         E.TYPE:=E1.TYPE }   (4) E→n { E.VAL:=n.LEXVAL;        E.TYPE:=n.LEXTYPE }5. 令综合属性 val 给出在下面的文法中的 S 产生的二进制数的值 ( 如,对于输入 101.101 ,则S.val=5.625)。

      S -> L.L | L L -> LB | B B -> 0 | 1 解1:提示画出对应于输入101.101的语法树,然后设置相应的属性进行语义规则的创立产生式 语义规则 S ->L 1.L2 S->L S.val:=L.val L -> L1B L.val:=L1.val*2+B.val L.length:=L1.length+1 L -> B L.val:=B.val L.length:=1 B -> 0 B.val:=0 B -> 1 B.val:=1 S.LLBLBBLBLLBB解2:产生式语义规则          S -> L S.val:=L.val;           S -> L1.L2 S.val:=L1.val+L2.val*L2.p;           L -> B L.val:=B.val;    L.p:=2-1;           L -> L1B L.val:=L1.val*2+B.val; L.p:=L.p*2-1;          B -> 0 B.val:=0;           B -> 1 B.val:=1; 。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.