zoukankan      html  css  js  c++  java
  • 第5章 语法制导翻译及中间代码生成

    语法制导翻译

    • 是以语法分析为主导的语义处理。语法分析过程中嵌入语义动作,即调用对应的语义子程序
    • 为每个文法规定相应的语义,即编写出相应语义处理子程序,整个分析是以语法分析为主导。

    中间语言

    逆波兰式(后缀表达式)

    中缀转后缀表达式

    赋值语句转后缀表达式

    <左部>:=<表达式>,把赋值号“:=”看成是一个赋值运算符,它的后缀式为<左部><表达式的后缀式>:=(相当于:=优先级最低)

    条件语句转后缀表达式

    • if e then S1 else S2可按后缀式写成e′  p1  JEZ  S1′  p2   JUMP   S2′
    • e′,S1′S2′分别是e、 S1S2的后缀式。此外, p1表示S2′在数组POST的起始位置, p2表示S2′之后那个符号位置。

    • JUMP表示无条件转:后缀式P JUMP表示无条件转移到下标P所指那个元素POST[p](即从该符号开始继续执行)
    • JLT表示小于转:后缀式e1e2 P JLT表示当后缀表达式e1小于后缀表达式e2时,则转移至POST[P]
    • JEZ表示零转:后缀式e P JEZ表示当后缀表达式e的值为零时,则转移至POST[P]

    三元式

    (i) (OP, ARG1, ARG2)

    (i)为三元式的编号,不同三元式不能有相同的编号。

    OP是运算符部分,ARG1ARG2是运算对象部分,它们指向运算对象的中间结果(i)直接指向运算对象

    树形表示

    • 在树表示中,叶子结点表示运算对象,即常量或变量,其它结点表示运算符。
    • 后序遍历二叉树可以得到该表达式的逆波兰表达式。

    四元式

    (OP,ARG1,ARG2,RESULT)
    OP是运算符;ARG1ARG2是运算对象;RESULT是运算结果,会生成中间结果Ti

    越努力越幸运!
  • 相关阅读:
    什么是 MyBatis?
    @RequestMapping 注解用在类上面有什么作用?
    如果你也用过 struts2.简单介绍下 springMVC 和 struts2 的区别有哪些?
    SpringMVC 流程?
    SpringMVC 工作原理?
    什么是 SpringMvc?
    依赖注入的三种实现方式?
    什么是IOC
    spring的作用
    什么是spring框架?
  • 原文地址:https://www.cnblogs.com/Littlejiajia/p/13533647.html
Copyright © 2011-2022 走看看