"北京工业大学编译原理考试一纸开卷【期末复习总结】"
本文档总结了编译原理的重要知识点,包括编译程序的工作过程、语法分析、语义分析、中间代码生成、目标代码生成等。同时还涉及到语法制导翻译、自顶向下的语法分析、左递归、回溯、交叉编译、自展、翻译程序、语义分析与中间代码产生等概念。
1. 编译程序的工作过程:
编译程序的工作过程可以分为五个阶段:词法分析、语法分析、语义分析与中间代码生成、代码优化、目标代码生成。每个阶段都有其特定的任务和目标。
2. 语法分析:
语法分析是指根据语言的语法规则,把单词符号串分解成各类语法单位。语法分析的主要问题是解决回溯和左递归。自顶向下的语法分析技术不能处理具有左递归的文法,因为在分析过程中,无法判断出替换的规则,造成无穷递归求解的过程。
3. 语义分析与中间代码生成:
语义分析与中间代码生成是指对各类语法单位,分析其含义并进行初步翻译。语义分析是对语法分析的结果进行分析,以确定其含义。中间代码生成是指将语义分析的结果转换成中间代码,以便于后续的代码优化和目标代码生成。
4. 语法制导翻译:
语法制导翻译是指在语法规则的制导下,通过计算语义规则,完成对输入符号的翻译。语法制导翻译使用属性文法时,把语法规则和语义规则分开,但在使用语义规则进行推导或归约的同时又使用这些语义规则来指导翻译与最终产生目标代码。
5. 高级程序设计语言参数传递方式:
高级程序设计语言参数传递方式有四种:传值、传地址、传值结果、传名。每种方式都有其特点和应用场景。
6. 自展和交叉编译:
自展过程是用低级语言先实现一个简单的编译器,然后用这个编译器的语言再去编写一个更高级的编译器。交叉编译是指编译器的运行环境与产生程序的运行环境不同的编译过程。
7. 计算机执行高级语言编写的程序途径:
计算机执行高级语言编写的程序有两种途径:解释和编译。解释不生成目标代码,而编译则生成目标代码。
8. 自顶向下的语法分析方法:
自顶向下的语法分析方法需要解决的主要问题是回溯和左递归。解决方法包括提取公共左因子、消除直接及间接左递归。
9. 翻译程序:
翻译程序是指能够把某种语言转换成另一种语言,而后者与前者在逻辑上是等价的。
10. 编译程序结构:
编译程序结构可以分为前端和后端。前端包括词法分析、语义分析、语义分析与中间代码生成,后端包括优化与目标代码生成。
11. 语义规则:
语义规则是指计算语义规则,完成对输入符号的翻译。
12. 二义性:
二义性是指如果一个文法存在某个句子对应两棵不同的语法树,则称这个文法是二义的。
13. LL(1):
LL(1)的含义是从左到右扫描输入串,第二个 L 表示最左推导,1 表示分析时每一步只需向前查看一个符号。
14. 回溯和左递归:
回溯是指匹配多个候选式无法快速匹配;左递归是指推导过程无休止。解决方法包括提取公共左因子、消除直接及间接左递归。
15. 标识符和名字:
标识符是一个最基本的符号,用于标识变量、函数、数组等。名字是指变量、函数、数组等的名称。两者的区别是标识符是符号本身,而名字是符号的名称。
- 1
- 2
- 3
- 4
- 5
- 6
前往页