编译过程划分

- 1.词法分析

  • 对构成源程序的字符串进行扫描和分解,识别出一个个的单词,如基本字(begin、end、if、for、while),标识符、常数、运算符和界符(标点符号、左右括号)

- 2.语法分析

  • 在词法分析的基础上,根据语言的语法规则,把单词符号串分解成各类语法单位,如“短语”、“句子”、“程序段”和“程序”等。
  • 自顶向下的语法分析包含 递归下降分析法 和 预测分析法

- 3.语义分析

  • 检查源程序上有没有语义错误,在代码生成阶段收集类型信息

- 4.中间代码生成阶段

  • 在进行了上述的语法分析和语义分析阶段的工作之后,有的编译程序将源程序变成一种内部表示形式,并分配寄存器。

    • 优点:有利于编译程序的可移植性
    • 常用的中间代码有:后缀式、三元式、四元式和树

- 5.代码优化

  • 对前一阶段产生的中间代码进行变换或进行改造,目的是使生成的目标代码更为高效,即省时间和省空间

- 6.目标代码生成

  • 这一阶段的任务是把中间代码变换成特定机器上的绝对指令代码或可重定位的指令代码或汇编指令代码,它和具体的机器相关

- 出错处理

  • 动态语义错误

    • 逻辑错误不会在编译阶段发现
  • 静态语义错误

    • 指在编译阶段发现的错误
原文地址:https://www.cnblogs.com/south-wood/p/12444501.html