编译原理_1

Posted by wzc on 2021-04-07

编译原理导论


1.什么是编译程序

  • 翻译程序:将一种语言程序等价的转换成另一种语言程序
  • 编译程序:将一种高级语言等价的转换为另一种低级语言程序
  • 编译程序分类
    • 诊断编译程序-帮助程序员调错
    • 优化编译程序
    • 交叉编译程序
    • 可变目标编译程序
  • 解释程序:将源程序作为输入,不产生目标程序,而是边解释边执行

编译程序和解释程序的区别:在编译方式下,机器上运行的是与源程序等价的目标程序,源程序和编译程序不再参与目标程序的执行过程,而在解释方式下,解释程序和源程序要参与到程序的运行过程中,运行控制权在解释程序。

2.计算思维

  • 抽象(Abstract)
  • 自动化(Automation)
    • 有限自动机
    • 预测分析程序
    • 算符优先分析
  • 分解(Decomposition)
  • 递归(Recursion)
  • 权衡/折衷(Tradeoff)

3.编译过程

  • 词法分析–扫描

    • 任务:输入源程序,对构成源程序的字符串进行扫描和分解,识别出单词符号,确定单词的类型,将识别出的单词转换成统一的机内表示——词法单元(token)形式

      token:<种别码,属性值>

    • 依循的原则:构词规则

    • 描述工具:有限自动机

  • 语法分析

    • 任务:在词法分析基础上,根据语法规则把单词符号串分解成各类语法单位,根据语法规则为输入句子构建语法分析树

    • 依循的原则:语法规则

    • 描述工具:上下文无关文法

  • 语义分析

    • 任务:收集标识符的属性信息
      • 种属
      • 类型
        • 整型、实型、字体型、布尔型、指针型。。。
      • 存储位置、长度
      • 变量值
      • 作用域
      • 参数和返回值信息
    • 语义检查
      • 变量或过程未经声明。。。
  • 中间代码产生

    • 任务:对各类语法单位按语言的语义进行初步翻译

    • 依循的原则:语义规则

    • 描述工具:属性文法

    • 中间代码:三元式、四元式,树,…

  • 优化

    • 任务:对前阶段产生的中间代码进行加工变换,以期在最后阶段产生更高效的目标代码
    • 依循的原则:程序的等价变换规则
  • 目标代码产生

    • 任务:把中间代码变换成特定机器上的目标代码
    • 依赖于硬件系统结构和机器指令的含义
    • 目标代码的三种形式
      • 汇编指令代码:需要进行汇编
      • 绝对指令代码:可直接运行
      • 可重定位指令代码:需要链接-(相对地址)