- 0
- 0
- 约9.64千字
- 约 12页
- 2026-02-14 发布于河南
- 举报
编译原理知识点
第一章引言
1.从面向机器的语言到面向人类的语言
汇编指令:用符号表示的指令被称为汇编指令
汇编语言:汇编指令的集合称为汇编语言
2.语言之间的翻译
转换(也被称为预处理):高级语言之间的翻译,如FORTRAN到
ADA的转换
编译:高级语言可以直接翻译成机器语言,也可以翻译成汇编语
言,这两个翻译过程称为编译
汇编:从汇编语言到机器语言的翻译被称为汇编
交叉汇编:将一个汇编语言程序汇编成为可在另一机器上运行的
机器指令成为交叉汇编
反汇编:把机器语言翻译成汇编语言
反编译:把汇编语言翻译成高级语言
3.编译器与解释器
(1)语言翻译的两种基本形态
解释器与编译器的主要区别:运行目标程序时的控制权在解释器而
不在目标程序.
(2)各自特点
编译器:工作效率高,即时间快、空间省;交互性与动态性差,可移植
性差.
解释器:工作效率低,,即时间慢、空间费;交互性与动态性好,可移
植性好.
共同点:均完成对源程序的翻译.
差异:编译器采用先翻译后执行,解释器采用边翻译边执行.
4.编译器的工作原理与基本组成
(0)通用程序设计语言的主要成份声明+操作=完整定义
(1)以过程为基本结构的程序设计语言的组成
声明性语句:提供操作对象的性质,如数据类型、值、作用域等;
操作性语句:确定操作的计算次序,完成实际操作。
过程定义=过程头+过程体
(2)以阶段划分编译器
注:符号表管理器和出错处理贯穿编译器工作的各个阶段.
(3)编译器各阶段工作
1词法分析:词法分析的输入是源程序,输出是识别出的记号流.
目的是识别单词.至少分以下几类:关键字(保留字)、标识符、字面量、
特殊符号
2语法分析:输入是词法分析器返回的记号流,输出是语法树.目
的是得到语言结构并以树的形式表示.对于声明性语句,进行符号表的查
填,对于可执行语句,检查结构合理的表达式运算是否有意义.
3语义分析:根据语义规则对语法树中的语法单元进行静态语义
检查,如类型检查和转换等,目的在于保证语法正确的结构在语义分析上
也是合法的.
4中间代码生成(可选):生成一种既接近目标语言,又与具体机器
无关的表示,便于代码优化与代码生成.
(到目前为止,编译器与解释器可以一致)
5中间代码优化(可选):局部优化、循环优化、全局优化等;优
化实际上是一个等价变换,变换前后的指令序列完成同样的功能,但
在占用的空间上和程序执行的时间上都更省、更有效
6目标代码生成:不同形式的目标代码—汇编语言形式、可重定
位二进制代码形式、内存形式(Load-and-Go)
7符号表管理:合理组织符号,便于各阶段查找\填写等.
8出错处理:
动态错误:源程序中的逻辑错误,发生在程序运行的时候。也称
为动态语义错误
静态错误:静态错误分为语法错误和静态语义错误.1语法错误:
有关语言结构上的错误,如单词拼写错误、表达式缺少操作数、begin
和end不匹配2静态语义错误:分析源程序时可以发现的语言意义
上的错误,如加法的两个操作数一个是整形变量,另一个是数组名
(4)编译器的分析\综合模式
逻辑上把编译器分为分析(前端)部分和综合(后端)部分.
1分析(前端):语言结构和意义的分析;从词法分析到中间代码
生成各阶段的工作
2综合(后端):语言意义处理;从中间代码生成到目标代码生成
的各阶段的工作
3编译器和解释器的区别往往是在形成中间代码之后开始的.
5.编译器扫描的遍数
每个阶段将程序完整分析一遍的工作模式称为一遍扫描。
(将源程序或源程序的某种形式的中间表示完整分析一遍,亦称作
一遍扫描)
第二章词法分析
1.词法分析中的若干问题
(1)记号、模式与单词
单词的分类:关键字(保留字)、标识符、字面量、特殊符号
原创力文档

文档评论(0)