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

    越努力越幸运!
  • 相关阅读:
    VUE动画Javascript钩子不生效问题记录
    vue-resource
    shell脚本 回顾 小练习
    mysql 回顾小练习
    jvm调优(二)
    jvm调优(一)
    性能调优笔记(二)
    性能调优笔记(一)
    mac 下 配置appium +ios真机环境
    pycharm中 unittests in xxxx 运行模式
  • 原文地址:https://www.cnblogs.com/Littlejiajia/p/13533647.html
Copyright © 2011-2022 走看看