编译原理知识点.pdfVIP

  • 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)

1亿VIP精品文档

相关文档