技术教育社区
www.teccses.org

小型编译器设计实践

封面

作者:苏孟晋

页数:356

出版社:电子工业出版社

出版日期:2024

ISBN:9787121471964

电子书格式:pdf/epub/txt

内容简介

本书主要着力于叙述编译器具体的设计和编程细节,并不侧重探究编译器的设计理论。本书以目前较为流行的两款微处理器(MCU)为例,设计、开发相应的C语言编译器工具包:(1) 加强型PIC16Fxxxx系列MCU、8位微处理器、RISC系统结构、小端式体系(little-endian)。(2) STM8系列MCU、8位微处理器、CISC系统结构、大端式体系(big-endian)。本书以实际目标处理器为对象,介绍和展现编译器设计的全部详细过程。

作者简介

苏孟晋,出生于上海,祖籍江苏常州。1978年考入浙江大学计算机专业就读,1982年获学士学位。同年开始在上海同济大学计算机专业供职,1987年获讲师职称。1990年赴美留学,于1992年获硕士学位。

目录

第一篇 PIC16Fxxxx编译器(cc16e.exe)的设计

第1章 工具准备和系统设置………………………………………………………………………………..2

1.1 GNU C/C 编译工具的选择……………………………………………………………………….2

1.1.1 MinGW ………………………………………………………………………………………….. 2

1.1.2 DJGPP ……………………………………………………………………………………………. 2

1.1.3 Cygwin …………………………………………………………………………………………… 2

1.2 解析工具构造器 ………………………………………………………………………………………… 3

1.3 工具的安装 ……………………………………………………………………………………………….. 3

1.4 目标编译器运行前的系统设置 …………………………………………………………………… 4

第2章 预处理器的设计………………………………………………………………………………………5

2.1 预处理器(C/C 版) ………………………………………………………………………………. 6

2.1.1 项目文件及其设置…………………………………………………………………………..6

2.1.2 任务和算法…………………………………………………………………………………….. 7

2.2 源程序预处理器(flex 版) ……………………………………………………………………… 11

2.2.1 正规表达式简介…………………………………………………………………………….12

2.2.2 预处理器设计实战…………………………………………………………………………14

2.3 本章小结 …………………………………………………………………………………………………. 20

第3章 编译器设计初步实践………………………………………………………………………………21

3.1 设计简介 …………………………………………………………………………………………………. 21

3.2 一个简单的 C 语言关键字识别器………………………………………………………………22

3.2.1 工程项目文件………………………………………………………………………………..22 3.2.2 项目运行主程序…………………………………………………………………………….23

小型编译器设计实践

3.2.3 词法解析自动机部分……………………………………………………………………..23

3.2.4 词法解析 C 语言部分 ……………………………………………………………………. 24

3.3 编译器雏形(flex 和 bison 的使用) ………………………………………………………… 25

3.3.1 问题的提出和任务…………………………………………………………………………25

3.3.2 工程文件 makefile………………………………………………………………………….26

3.3.3 词法解析规则部分…………………………………………………………………………26

3.3.4 词法解析的启动…………………………………………………………………………….27

3.3.5 语法解析器文本及其基本格式 ………………………………………………………. 27

3.3.6 语法解析器文本各区域的内容 ………………………………………………………. 28

3.4 语法解析和词法解析之间的数值传递 ………………………………………………………. 30

3.4.1 语法解析器文本的定义部分 ………………………………………………………….. 31

3.4.2 语法解析器识别规则部分 ……………………………………………………………… 32

3.4.3 词法解析器解析规则部分 ……………………………………………………………… 33

3.5 编译树的构建 ………………………………………………………………………………………….. 34

3.5.1 编译树中的数据类型和结构 ………………………………………………………….. 34

3.5.2 节点生成和处理函数……………………………………………………………………..35

3.5.3 语法解析器文本的定义部分 ………………………………………………………….. 36

3.5.4 语法解析器文本的语法解析识别规则部分 …………………………………….. 36

3.6 源程序语句代码的截取和嵌入 …………………………………………………………………. 38

3.6.1 缓冲区与相关函数…………………………………………………………………………38

3.6.2 截取源程序代码并送入缓冲区中 …………………………………………………… 38

3.6.3 读取源代码缓冲内容……………………………………………………………………..39

3.6.4 增加新定义并扩充 node 数据结构 …………………………………………………. 39

3.6.5 支持函数和程序…………………………………………………………………………….40

3.6.6 在源程序片段中嵌入节点 ……………………………………………………………… 41

3.7 编译树的显示 ………………………………………………………………………………………….. 41

3.7.1 用于显示编译树的函数 …………………………………………………………………. 42 3.7.2 编译树的显示操作…………………………………………………………………………42

第4章 编译器设计实战…………………………………………………………………………………….44 4.1 对 C 语言的词法解析………………………………………………………………………………..44

VIII

4.1.1 词法解析宏定义部分……………………………………………………………………..44

4.1.2 各种常数解析识别…………………………………………………………………………45

4.1.3 C 语言关键字和标识符解析 ………………………………………………………….. 46

4.1.4 C 语言各种操作运算符识别 ………………………………………………………….. 46

4.1.5 关于字符和字符串常数的处理 ………………………………………………………. 47

4.2 对 C 语言的语法解析……………………………………………………………………………….. 47

4.2.1 描述特征的 attrib 完整结构 …………………………………………………………… 48

4.2.2 各类 node 数据结构的完善 ……………………………………………………………. 48

4.2.3 语法解析定义部分的完善 ……………………………………………………………… 49

4.2.4 函数声明/定义的完善……………………………………………………………………. 51

4.2.5 运算语法和运算符优先确定 ………………………………………………………….. 52

4.2.6 变量定义语法规则的完善 ……………………………………………………………… 53

4.3 支持预处理等语句的语法解析 …………………………………………………………………. 56

4.3.1 用于预处理语句的新增变量 ………………………………………………………….. 56

4.3.2 用于预处理语句的新增解析状态 …………………………………………………… 57

4.3.3 用于预处理语句的解析 …………………………………………………………………. 57

4.3.4 用于预处理语句的节点和数据类型 ……………………………………………….. 58

4.4 支持结构化数据的语法解析 …………………………………………………………………….. 61

4.5 支持对 typedef 的语法解析 ………………………

下载地址

立即下载

(解压密码:www.teccses.org)

Article Title:《小型编译器设计实践》
Article link:https://www.teccses.org/1559192.html