上传者: 37050329
|
上传时间: 2025-12-06 17:43:35
|
文件大小: 1.01MB
|
文件类型: DOC
一、概述
1. 编译方式与解释方式区别:是否生成目标代码
2. 编译程序总框架
二、词法分析
1.状态转换图的功能:识别(接受)一定的符号串(单词)
2.状态转换图的程序实现的思路:为每个状态结点都编写一个子程序
3.字母表的概念:一般用∑表示
4.闭包的概念:闭包V*中的每个字都是由V中的字经过若干次连接而成的
5.正则闭包V+的概念:是V上所有符号串的集合
6.∑*定义:表示∑上所有字的全体,空字ε也包括在其中
7.∑+空字ε不包含,非ε
8.ε,{ },{ε}之间的区别
9.ε所对应的正规集为{ε}
10.正规式与正规集的定义:知道如何用正规式表示一个正规集
11.简述NFA和DFA的定义与区别
12.若M的某些结点既是初态结点又是终态结点,或者存在一条从某初态结点到某个终态结点的ε通路,那么空字ε可为M所识别
13.正规式与优先自动机的等价性
14.定理2.对于∑上的每一个正规式V,存在一个∑上的DFA M,使得L(M)=L(V)
15.DFA M的化简的概念和方法:终态和非终态是可区别的,因为终态可以读出空字ε,而非终态不能读出空字ε
16.课后作业一个例题
17.构造一个DFA,它接受∑={x,y}上所有倒数第二个字符为y的字符串
编译原理是计算机科学中一个重要的分支,主要研究如何将高级编程语言转化为机器语言的过程。在复习这个领域时,我们需要掌握以下几个关键知识点:
1. **编译方式与解释方式的区别**:
- 编译方式:编译器将源代码整体转化为目标代码,然后再执行目标代码,产生一次性翻译的过程。
- 解释方式:解释器逐行读取源代码并直接执行,不需要生成目标代码。
2. **编译程序总框架**:
- 通常包括词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成等阶段。
3. **词法分析**:
- 状态转换图:用于识别符号串(单词),例如,状态0可以通过X进入状态1,通过Y进入状态2。
- 非确定有限自动机(NFA)和确定有限自动机(DFA):NFA允许ε转移,DFA则没有ε转移,且DFA更简单、效率更高。
- 正则闭包:V+表示V上所有符号串的集合,V*包含所有可能的连接,包括空字ε。
4. **正规式与正规集**:
- 正规式用来表示一组符号串,比如ε,{ },{ε}分别表示空字、空集和只包含空字的集合。
- 通过正规式可以构建DFA,反之亦然,两者之间有等价性。
5. **语法分析**:
- 上下文无关文法(CFG):定义编程语言的结构,句型和句子的概念,以及如何构造语言。
- 语法分析树:可视化地表示源代码的结构,用于检测二义性。
- 自上而下和自下而上的分析方法:递归下降分析法(避免左递归和回溯)、算符优先文法(寻找最左素短语)。
6. **语义分析**:
- 属性文法:用于描述程序的意义,分为综合属性和继承属性。
7. **中间代码生成**:
- 后缀式(逆波兰表示法):方便计算的中间表示,运算符在操作数之后。
- 四元式:一种中间代码形式,用于表达复杂的语句,通过临时变量连接。
8. **代码优化**:
- 目的是提高程序运行效率,常见的优化包括常量折叠、死代码消除、循环展开等。
- 基本块和流图是优化的基础,局部优化通常在基本块级别进行。
9. **目标代码生成**:
- 生成的代码可以直接被计算机执行,可能有几种不同的格式,如汇编代码或机器码。
这些基础知识是编译原理复习的重点,理解和掌握它们能帮助我们构建编译器,理解程序的编译过程,以及优化程序性能。在学习过程中,通过解决课后习题,如构造DFA来识别特定字符串,将有助于巩固理论知识并提高实践能力。