编译原理随笔1

Posted 野生学霸

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编译原理随笔1相关的知识,希望对你有一定的参考价值。

<!doctype html>

编译原理

 

编译原理概述

1、编译概念:

  • 从高级语言->目标代码的过程(汇编语言or机器码)

2、编译器的结构:

  • 分析部分/前端(front end)->与源语言相关

    1. 词法分析>>词法单元流
    2. 语法分析>>语法分析树parse tree
    3. 语义分析>>语法树
    4. 中间代码生成>>中间表示形式
    5. 机器无关的代码优化
  • 综合部分/后端(back end)->与目标语言相关

    1. 目标代码生成>>目标机器语言
    2. 机器相关代码优化>>目标机器语言

3、词法分析

  • 主要任务:

    • 扫描源程序->识别每个单词->确定单词类型->将识别的单词换成机内表示(即:词法单元token)

    • token:<种别码:属性值>

      • 单词类型种别种别码
        关键字 if 等 一词一码
        标识符 变量、数组名、过程名…… 多词一码
        常量   多词一码
        运算符 算术运算符:+-
        关系运算符:> < ==
        逻辑运算符:& ! ||
        一词一码
        一型一码
        界限符 ;{}()=…… 一词一码

       

4、语法分析

  • 概念:语法分析器Parser从词法分析器输出的token中,识别各类短语,构造语法分析树parse tree
  • 技术图片
  • 技术图片

 

5、语义分析

  • 主要任务:

    • 收集标识符的属性信息->>>存放在符号表Symbol Table

      1. 种属kind
      2. 类型type
      3. 存储位置、长度
      4. 作用域
      5. 参数和返回值信息
      6. 技术图片
    • 语义检查:

      1. 变量or过程未经声明便使用
      2. ……重复声明
      3. 运算分量类型不匹配(强制类型转换or报错)

6、中间代码生成

  • 中间表示形式:

    • 三地址码Three-address Code

      • 技术图片

      • 三地址指令的表示形式:

        • 三元式

        • 间接三元式

        • 四元式

          • 技术图片
          • 技术图片
    • 语法结构树/语法树Syntax Tree

7、目标代码生成:

  • 中间表示形式作为输入,映射到目标语言

    • 重要作用:为程序变量使用分配寄存器

8、代码优化

  • 等价程序变换,使其运行快,占内存少。

 

以上是关于编译原理随笔1的主要内容,如果未能解决你的问题,请参考以下文章

编译原理随笔

编译原理随笔4(自下而上的语法分析-递归法)

随笔看法

编译原理

编译原理题目关于判断LL(1)文法的

GCC编译器原理------编译原理三:编译过程(2-1)---编译之词法分析