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

编译原理 备课 课件 4_2.ppt

15页
  • 卖家[上传人]:清晨86****784
  • 文档编号:208056285
  • 上传时间:2021-11-06
  • 文档格式:PPT
  • 文档大小:194KB
  • / 15 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 4.2 S属性定义的自下而上计算n语法树(Abstract Syntax Tree)可以作为一种中间语言表示,在分析树中去掉那些对翻译不必要的信息,从而获得更有效的源程序中间表示,在语法树中,操作符和关键字都不作为叶节点出现,而是把它们作为内部节点,即这些叶节点的父节点if-then-elseBS1S2+*2584.2.2 构造语法树的语法制导定义nmknode(op,left,right) 建立一个运算符号节点,标号是op,两个域left和right分别指向左子树和右子树nmkleaf(id,entry)建立一个标识符节点,一个域entry指向标识符在符号表中的入口nmkleaf(num,val) 建立一个数节点,标号为num,一个域val用于存放数的值n为表达式建立抽象语法树的属性文法 产生式 语义规则 EE1+T E.nptr:=mknode(+,E1.nptr,T.nptr) ET E.nptr:=T.nptr TT1*F T.nptr:=mknode(*,T1.nptr,F.nptr) TF T.nptr:=F.nptr F(E) F.nptr:=E.nptr Fid F.nptr:=mkleaf(id,id.entry) Fnum F.nptr:=mkleaf(num,num.val)a+5*b idnum 5 id到 a的表项到 b的表项* +E.nptrT.nptrE.nptrT.nptrF.nptridT.nptr+*F.nptrF.nptridnumididnum 5*+指向符号表中a的入口指向符号表中b的入口4.2.3 S属性的自下而上计算nS-属性定义:仅仅使用综合属性的属性定义n分析器可以在栈中保存与栈中文法符号有关的综合属性值,每当进行归约时,新的属性值就由栈中正在归约的产生式右边符号的属性值来计算top. . .Z Z.zY Y.yX X.xstate val若产生式A XYZ的语义规则是A.a := f (X.x, Y.y, Z.z),那么归约后:. . . . . .AA.a. . . . . .top . . . . . .ZZ. zYY. yXX.x. . . . . .栈 state valtop产 生 式 语 义 规 则 L E n print (E.val) E E1 + T E.val :=E1 .val +T.val E T E.val := T.val T T1 * F T.val := T1.val * F.val T F T.val := F.val F (E) F.val := E.val F digit F.val := digit.lexval台式计算器的语法制导定义改成栈操作代码. . . . . .ZZ. zYY. yXX.x. . . . . .栈 state valtop产 生 式 代 码 段 L E n print (val top1 ) E E1 + T E.val :=E1 .val +T.val E T E.val := T.val T T1 * F T.val := T1.val * F.val T F T.val := F.val F (E) F.val := E.val F digit F.val := digit.lexval. . . . . .ZZ. zYY. yXX.x. . . . . .栈 state valtop产 生 式 代 码 段 L E n print (val top1 ) E E1 + T val top 2 :=val top 2+val top E T E.val := T.val T T1 * F T.val := T1.val * F.val T F T.val := F.val F (E) F.val := E.val F digit F.val := digit.lexval. . . . . .ZZ. zYY. yXX.x. . . . . .栈 state valtop产 生 式 代 码 段 L E n print (val top1 ) E E1 + T val top 2 :=val top 2+val top E T T T1 * F T.val := T1.val * F.val T F T.val := F.val F (E) F.val := E.val F digit F.val := digit.lexval. . . . . .ZZ. zYY. yXX.x. . . . . .栈 state valtop产 生 式 代 码 段 L E n print (val top1 ) E E1 + T val top 2 :=val top 2+val top E T T T1 * F val top 2 := val top 2val top T F T.val := F.val F (E) F.val := E.val F digit F.val := digit.lexval. . . . . .ZZ. zYY. yXX.x. . . . . .栈 state valtop产 生 式 代 码 段 L E n print (val top1 ) E E1 + T val top 2 :=val top 2+val top E T T T1 * F val top 2 := val top 2val top T F F (E) F.val := E.val F digit F.val := digit.lexval. . . . . .ZZ. zYY. yXX.x. . . . . .栈 state valtop产 生 式 代 码 段 L E n print (val top1 ) E E1 + T val top 2 :=val top 2+val top E T T T1 * F val top 2 := val top 2val top T F F (E) val top 2 :=val top 1 F digit F.val := digit.lexval. . . . . .ZZ. zYY. yXX.x. . . . . .栈 state valtop产 生 式 代 码 段 L E n print (val top1 ) E E1 + T val top 2 :=val top 2+val top E T T T1 * F val top 2 := val top 2val top T F F (E) val top 2 :=val top 1 F digit 。

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