机器语言:能够被计算机的硬件系统直接执行的指令程序
编译语言:将硬件指令用一些助记符表示,即符号化的机器语言“ADD,MOV”
高级语言:从程序员的角度,对汇编语言进一步抽象,使用便于理解的自然语言表述
高级语言的编译实现:

高级语言的解释实现:

解释器和编译器
解释器是执行系统,编译器是转换系统
基于解释执行的程序可以动态修改自身,基于编译执行的程序不易胜任
基于解释方式有利于人机交互
解释器执行速度比编译器慢
解释器需要保存的信息多,空间开销大
二者的实现技术相似
高级语言的实现
转换方式:已经有B语言的编译器,可以把A语言转换为B语言,用B语言已有的编译器去编译执行

编译程序的组成
词法分析:识别由字符组成的高级语言中的单词,并将其转换成一种内部表示的形式,同时检查是否存在词法错误。
语法分析:根据语言定义的语法规则来验证程序是否存在语法错误。
语义分析:检查源程序有无语义错误,为代码生成阶段收集类型信息。
中间代码生成:将源程序转换成一种称为中间代码的内部表示形式,便于优化和移植
中间代码优化:变换或者改造中间代码,使生成的目标代码更为高效,节省空间和时间。
目标代码生成:将中间代码转换为特定机器上的指令代码或者汇编指令代码
错误处理:当编译阶段出现错误时,由相应的错误处理模块给出解决方案,使编译器能够继续进行下去
表格管理:为了合理的管理表格,设立一些专门子程序称为表格管理程序。

编译程序的设计
编译程序的分遍,对源程序或源程序的中间表示形式从头到尾扫描一次,并作加工处理,生成新的中间结果或目标程序
分遍:对源程序或源程序的中间表示形式,从头到尾扫描几次。
分遍的原因,本课的分遍策略
注意的问题
准确的理解源语言
确定编译要求
确定目标语言
分遍
具体设计
Comments NOTHING