07语义分析和中间代码产生.pptVIP

  • 15
  • 0
  • 约1.53万字
  • 约 97页
  • 2017-09-05 发布于重庆
  • 举报
7.1中间语言 7.2 说明语句 7.3 赋值语句的翻译 7.4 布尔表达式的翻译 7.5 控制语句的翻译 产生式 7.6 过程调用的处理 当生成某些转移语句时可能还不知道该语句的转移目标标号。 存在的问题: 在形成在自下而上的分析过程中,当生成某些跳转指令时暂时不确定跳转目标,而是建立一个链表,把转向这个目标的跳转指令的标号加入这个链表。一旦目标确定之后再把它添入有关的跳转指令中。这种技术称为回填。 问题的解决: E.truelist:E的“真出口”链表 引入的语义属性: E.truelist:E的“假出口”链表 借助于需要回填的四元式的第四区段构造链表 (p)(× , × , × ,0) (q)(× , × , × ,p) (r)(× , × , × ,q) 0为链末标志 地址r是TC链之首 例如,假定E的四元式中需回填“真”出口的有p,q,r三个四元式,这三个四元式可以连成如图所示的一条“真”链。 语义变量和过程: 变量nextquad:指向下一个将要形成但尚未形成的四元式的地址(标号)。初值为1,每当执行一次emit后,自动累增1。 函数makelist(i):创建一个仅含I的新链表,其中I是四元式数组的一个下标(标号);函数返回指向这个链的指针。 函数merge(p1,p2):把以p1和p2为链首的两条链合并为一,作为函数值,回送合并后的链首p2。 过程backpatch

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档