概念
程序语言随着计算机的诞生而产生。从最初的机器语言,到后来的汇编语言,再到后来的C语言,再到现在的Java语言,C#语言等等。计算机硬件的性能越来越强,语言的发展也越来越高级。语法越靠近机器,越能被机器理解的语言越低级;语法越靠近自然语言,越能被人理解的语言也就越高级。但是,每一个特定的机器都有特定的指令集,机器只认识属于自己的机器语言。如何将高级语言写出的程序,转换为机器认识的机器语言,需要借助编译器工具来实现。
「编译」的概念其实跟翻译的概念类似。但翻译是一个泛的概念,任何两种语言(比如英语和日语)之间的转换都能被称为是翻译。而「编译」专门是指计算机领域中,高级语言编写的源程序向机器语言目标程序翻译的过程。
一般认为,编译的过程主要有5步:
- 词法分析
- 语法分析
- 中间代码生成
- 代码优化
- 目标代码生成
其中,还有两个概念贯穿编译过程的始终:
- 表格管理
- 出错处理
编译过程
编译的过程就是将源程序转换为目标程序的过程。
词法分析
词法分析就是通过扫描源程序,将源程序中的一个个字符组成一个个有意义的单词符号。对每一个单词符号,要记录单词符号的类别(定义符、标识符、常量等等),还要记录单词符号本身的值。
语法分析
语法分析就是通过扫描单词符号&#x