
编译原理(第三版)程序设计语言 课后习题答案 国防工业出版社
5星
- 浏览量: 0
- 大小:None
- 文件类型:PDF
简介:
《编译原理》(第三版)由国防工业出版社出版,该书提供了程序设计语言课程中重要概念和理论的深入解析,并包含丰富的课后习题答案,帮助学生巩固学习成果。
### 程序设计语言编译原理第三版课后习题解析
#### 一、概述
《程序设计语言编译原理》第三版是由陈火旺、刘春林、谭庆平、赵克佳、刘越等多位专家共同编写的一本专业教材,由国防工业出版社出版。本书详细介绍了编译器的工作原理及其设计方法,涵盖了词法分析、语法分析、语义分析与中间代码生成、优化技术以及目标代码生成等多个方面。这本书不仅适合计算机科学与技术及相关专业的本科生和研究生作为教材使用,也适合软件开发人员和技术研究人员参考。
#### 二、第二章习题解析
##### 2.1 P-36-6
**题目描述:**
L(G)是由0到9的数字串组成;给出了两个例子的最左推导和最右推导过程。
**解析:**
1. **最左推导**:
- 最左推导是指在每一步中总是选择当前字符串中最左侧的非终结符进行替换的过程。
- 示例:
例一: `N` ⇒ `ND` ⇒ `NDD` ⇒ `NDDD` ⇒ `DDDD` ⇒ `0DDD` ⇒ `01DD` ⇒ `012D` ⇒ `0127`
例二: `N` ⇒ `ND` ⇒ `3D` ⇒ `34`
2. **最右推导**:
- 最右推导是指在每一步中总是选择当前字符串中最右侧的非终结符进行替换的过程。
- 示例:
例一: `N` ⇒ `ND` ⇒ `N7` ⇒ `ND7` ⇒ `N27` ⇒ `D127` ⇒ `0127`
例二: `N` ⇒ `ND` ⇒ `34`
##### 2.2 P-36-7
**题目描述:**
给出了两个文法定义,未考虑正负符号问题。
**解析:**
1. **第一个文法**:
- 文法规则为:`S → P | AP`, `P → 1 | 3 | 5 | 7 | 9`, `A → AD | N`, `N → 2 | 4 | 6 | 8`
- 这个文法生成的是奇数和偶数交替出现的字符串。
2. **第二个文法**:
- 文法规则为:`S → A B C | C`, `A → 1 | 2 | 3 | ...|9`, `B → BA | B0 | ε`, `C → 1 | 3 | 5`
- 这个文法可以生成以奇数结尾的字符串,并且在中间可以有任意数量的数字。
##### 2.3 P-36-8
**题目描述:**
定义了一个表达式的文法,并给出了最左推导和最右推导的例子。
**解析:**
1. **文法定义**:
- `E → T | E + T | E - T`, `T → F | T * F | TF`, `F → (E) | i`
- 这个文法用于描述简单的算术表达式。
2. **最左推导示例**:
- 示例一: `E` ⇒ `E + T` ⇒ `T + T` ⇒ `F + T` ⇒ `i + T` ⇒ `i + F * F`
例如:`i + i * i`
3. **最右推导示例**:
- 示例二: `E` ⇒ `T * F` ⇒ `T * (E)` ⇒ `T * (E + T)`
例如:`i * (i + i)`
##### 2.4 P-36-9
**题目描述:**
分析句子“iiiei”的两个不同的语法树,并判断其是否具有二义性。
**解析:**
1. **句子分析**:
- 句子“iiiei”有两个不同的语法树。
示例一: `S` ⇒ `i Se S` ⇒ `i Se i`
示例二: 先推导最后一个‘i’,即先生成独立的‘i’
2. **结论**:
- 由于句子“iiiei”有两棵不同的语法树,因此它是二义性的。
##### 2.5 P-36-10
**题目描述:**
定义了一个文法,其中包含两个规则。
**解析:**
1. **文法定义**:
`S → TS | T`, `T → (S) | ()`
- 这个文法可以用来表示括号匹配的字符串。
####
全部评论 (0)


