1.狭义的编译器概念
高级语言为程序员提供了比汇编语言更为方便的程序设计工具,使程序员的工作效率得到了极大的提高。然而,对于底层计算机硬件系统来说,CPU仍然只能执行由二进制指令序列表示的程序代码。这样一来,高级语言编写的程序只有被翻译为具有相同功能的汇编语言程序或被直接翻译为可执行指令序列后,才能被CPU真正地执行。由于高级语言程序和CPU指令系统在形式和内容上的差别远比汇编语言和二进制指令的差别大得多,因此需要更为复杂的技术将其翻译为等价的可执行指令序列(或先翻译为汇编程序,再由汇编器将其转换为可执行指令序列)。编译器就是实现这种把高级语言编写的程序翻译为具有相同功能的底层指令序列或汇编程序的软件系统。编译器设计时采用的各种技术统称为编译技术。
一般来说,编译器需要具有两个基本的功能。
判断程序的合法性。识别输入的源程序是否符合语言定义的要求。例如,对于C语言程序来说,变量是否以字母开头,if语句是否包含了合法的表达式等。
程序的等价翻译和错误提示。如果源程序合法,则可将其转换为另一种语言表示的程序(称为目标程序)。否则,将给出程序的出错提示,以方便软件开发人员查找和修改程序中的错误。
展开