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

    越努力越幸运!
  • 相关阅读:
    angular2怎么使用第三方的库(jquery等)
    线性代数:方程组的几何解释
    2016新的计划
    ES+Hbase对接方案概述
    sparkR操作HDFS上面的CSV文件
    spark1.6配置sparksql 的元数据存储到postgresql中
    spark读写Sequoiadb
    Spring Boot与Docker部署
    Docker中使用Tomcat并部署war工程
    CentOS7安装使用Docker
  • 原文地址:https://www.cnblogs.com/Littlejiajia/p/13533647.html
Copyright © 2011-2022 走看看