汇编、编译、解释系统
编译过程
-
词法分析
将源程序的字符串转换成单词符号序列,主要是针对词汇的检查。
有限自动机是词法分析的适当工具。
输入:源程序字符串
输出:记号流 -
语法分析
根据语言的语法规则将单词符号序列分解成各类语法单位,如表达式、语句、程序等。主要是针对结构的检查。
输入:记号流
输出:语法树
语法分析分两类:- 自上而下分析法:递归下降分析法、预测分析法
- 自下而上分析法:移进-规约分析法
-
语义分析
主要针对句子含义的检查,但不是所有的语义错误都能够在该阶段检出,比如死循环,除以0等。 -
中间代码生成
-
代码优化
-
目标代码生成
中间代码
中间代码可提高编译程序的可移植性。
中间代码不依赖于具体的机器。
不同的语言可以生成相同的中间代码。
常见的中间代码形式:逆波兰记号、四元式、三元式和树。
后缀式(逆波兰式)
根据运算优先级,将运算符放在算式的后面。
如(a + b)* c的后缀式为ab+c*