### 编译原理知识点详解 #### 第一章 绪论 **1.1 名词解释** 1. **翻译程序**:是一种特殊的程序设计工具,它的主要功能是将一种编程语言(通常指源语言,如C++、Java等)编写的应用程序转化为另一种语言(目标语言,如汇编语言或机器语言)的等效程序。翻译过程完成后,生成的目标程序可以独立于原始源代码运行,不再需要原始的源代码或翻译程序本身。 2. **解释程序**:与翻译程序不同,解释程序不生成独立的目标程序。它直接逐行解释并执行源代码。这种方式避免了编译阶段,使得程序可以快速启动运行,适用于交互式编程环境。 3. **编译程序**:属于翻译程序的一种,其特定之处在于,它将高级语言编写的源代码转换成特定计算机系统的汇编语言或机器语言。编译后的程序可以直接在目标计算机上运行,无需再次转换。 4. **遍**:在编译过程中,对源程序或其中间形式进行的一次完整的扫描和处理过程称为“遍”。例如,词法分析器会对源代码进行一次遍历以识别出各个词法单元(如关键字、标识符等)。 5. **前端和后端**:在编译器的设计中,通常将其分为前端和后端两个部分。前端负责处理与源语言相关的任务,如词法分析、语法分析、语义分析等,并生成中间代码。而后端则关注于将中间代码转换为目标机器的特定格式,通常涉及优化技术以及与目标平台紧密相关的操作。 **1.2 名词辨析** 1. **翻译程序和解释程序的区别**:翻译程序先将源代码完全转换为目标代码,然后才能执行;而解释程序则是逐行读取并执行源代码,无需事先生成目标代码。 2. **编译程序和汇编程序的区别**:编译程序处理的是高级语言,并将其转换成低级语言(如汇编语言或机器语言),而汇编程序则处理汇编语言代码,将其转换成机器可以直接执行的二进制指令序列。 #### 第二章 文法和语言 **2.1 名词解释** 1. **字母表**:在编译原理中,字母表是指包含有限个符号的集合。这些符号可以是字符、数字或其他标记,用于构成更复杂的结构,如单词或句子。 2. **符号串**:由字母表中的符号按一定顺序组合而成的序列。它是构成句子的基础。 3. **句子**:在一个特定的文法中,如果一个符号串可以通过一系列规则从起始符号推导出来,那么这个符号串被称为该文法的一个句子。 4. **句型**:与句子类似,句型也是通过文法规则从起始符号推导出来的符号串。不过,句型允许包含非终结符。 5. **语言**:一个语言是由所有可能的句子构成的集合。在编译原理中,语言通常是指一种特定文法所能产生的所有句子的集合。 6. **文法**:是用来描述语言结构的一组规则。它定义了一种语言的语法,即描述哪些符号串是合法的。 7. **规则**:也称为产生式,是一条具体的文法规则,用于描述如何从一个符号(或符号串)推导出另一个符号(或符号串)。 8. **文法四元组**:一个文法通常用四元组(𝑉 𝑁,𝑉𝑇,P,S)表示,其中𝑉 𝑁是非终结符集合,𝑉𝑇是终结符集合,P是产生式集合,S是起始符号。 9. **0型文法**(短语文法):在0型文法中,产生式的左侧可以是终结符或非终结符的任意组合,右侧也可以是终结符或非终结符的任意组合。 10. **1型文法**(上下文有关文法):这类文法的特点是,除了起始符号可以生成空字符串之外,其他产生式的右侧总是比左侧长。 11. **2型文法**(上下文无关文法):在这种文法中,每个产生式的左侧必须是一个非终结符,而右侧可以是终结符或非终结符的任意组合。 12. **3型文法**(正规文法):3型文法是2型文法的特例,每个产生式要么是A→aB的形式,要么是A→a的形式,其中A和B是非终结符,a是终结符。 13. **二义文法**:如果一个文法存在某个句子具有两种或以上的不同语法树,则称该文法为二义的。这意味着同一个句子可以通过不同的方式被解释。 14. **文法描述的语言**:一个文法描述的语言是指该文法能生成的所有句子的集合。 15. **推导**:在文法中,从起始符号出发,按照文法规则逐步推导出一个符号串的过程。直接推导表示一步推导,而间接推导则表示多步推导。 16. **规约**:推导的逆过程,即从一个符号串回到起始符号的过程。 17. **规范推导**:规范推导是一种特殊的推导过程,其中每一步都是对当前符号串中最右边的非终结符进行替换。 18. **短语**:在某个句型中,如果一个符号串是通过非终结符替换产生的,那么这个符号串就是该句型的一个短语。 19. **直接短语**:如果一个符号串是通过一个非终结符的直接替换产生的,那么这个符号串就是该句型的一个直接短语。 20. **句柄**:在规范推导中,句型中最左边的直接短语被称为句柄。 21. **等价文法**:两个文法被认为是等价的,如果它们生成的语言相同。 **2.2 常见题型** - **找出一个文法中某一句型的短语、直接短语和句柄**:这通常涉及到构造文法的语法树,并从中找出相应的短语、直接短语和句柄。 - **等价文法如何判断**:可以通过构造语法树或者使用推导的方法来判断两个文法是否等价。 - **文法语言如何互换**:通过分析文法的产生式,可以确定文法所描述的语言的特性,从而实现文法与语言之间的转换。 - **文法的区别**:通过比较文法的类型、产生式和语言特性等,可以明确不同文法之间的差异。 - **如何证明二义文法**:通过构造两个不同的语法树来证明一个文法的二义性,表明相同的句子具有不同的语法解析。 #### 第三章 词法分析 **3.1 名词解释** 1. **正规表达式**:正规表达式是一种描述单词符号的工具,主要用于词法分析器的设计。通过递归定义,可以构建出描述各种单词模式的正规表达式。例如,可以定义一个正规表达式来匹配所有的数字或特定类型的标识符。
剩余18页未读,继续阅读
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助