编译原理知识点汇总
第一章 概述
第一章因为是概述,就是统领整本书的部分,这部分只考小题没有大题。主要就是概念的理解。

1.翻译程序
输入的是源程序,转换为目标程序。
包括汇编程序(源程序是汇编语言,目标语言是机器语言)和编译程序(源程序是高级语言,目标程序是机器语言或者汇编语言)
编译程序:1.源程序和数据在不同时间处理
2.解释方式
同时处理源程序和数据,这种翻译程序叫做解释程序,不生成目标程序(根本区别)
BASIC在解释环境下运行
2.编译程序
分析阶段:词法分析,语法分析,语义分析和中间代码生成
综合阶段:代码优化,目标代码生成
词法分析
读入源程序,输出单词
语法分析
读入单词,输出语法树,进行语法归类
如a=10+c*20
语义分析及中间代码生成
语义分析:确定源程序的语义是否正确,能识别的语义错误有变量未经声明就使用,变量重复声明,运算对象类型是否匹配。
中间代码:
代码优化
首选在中间代码进行
目标代码生成
目标代码形式:绝对指令代码(可立即执行),可重定位的机器指令代码,汇编指令代码(需要经过汇编程序的翻译,然后才能运行)
可重定位的机器指令代码:运行前必须借助一个连接装配程序把各个目标模块连接在一起,确定程序中的变量在内存中的位置,装入内存中指定起始位置,使之成为一个可以运行的绝对指令代码程序。
符号表管理(贯穿编译整个过程)
标识符的各种属性是在编译的不同阶段填入符号表的。
错误处理(贯穿编译整个过程)
编译的各个阶段都能发现源程序的错误。
单遍编译程序
只对源程序进行一次扫描,不产生中间代码,以语法分析程序为中心
多遍编译程序
分几遍来完成,每遍完成部分任务
分遍的优缺点:
优点:(1)减少内存容量的需求
(2)使各遍程序相互独立,结构清晰(主要)
(3)能够进行充分优化,产生高质量的目标程序
(4)将编译程序分为"前端"和"后端",有利于编译程序的移植
缺点:增加重复性工作,降低效率
选B
端的概念
前端:与源语言有关,包括词法分析,语法分析,语义分析和中间代码生成,符号表的建立,相应的错误处理和符号表操作
后端:与目标机器有关,包括代码优化,目标代码生成,以及相应的错误处理和符号表操作
分端优点:便于移植和编译程序构建
比如:有m种高级语言,n种机器语言,不分前后端需要建立M*N套编译程序。
若分前后端,可以先建立M套前端编译程序将M种高级语言翻译成相同的中间语言,再建立N套后端翻译程序将中间语言翻译成N种机器的目标语言,这样只需要建立M套前端编译程序和N套后端编译程序。
编译程序的前后处理器












