1、1 成绩:成绩: 课课 程程 设设 计计 题题 目:目: 简单编译器实现简单编译器实现 学学 院:院: 信息工程学院计算机系信息工程学院计算机系 专专 业:业: 计算机科学与技术计算机科学与技术 班班 级:级: 计科计科 11031103 班班 组组 长长: 小组成员:小组成员: 指导教师:指导教师: 2014 年 12 月 19 日 2 目录 1 概述 3 1.1 源、目标语言简介 3 1.2 实现平台与运行平台简介 3 1.3 其它 . 4 2 简单词法分析器的设计与实现 4 2.1 基础理论说明 4 2.2 需求分析 . 4 2.3 概要设计 . 5 2.4 详细设计 . 5 2.5 测
2、试数据与结果 . 7 2.6 心得体会 . 7 3 简单语法分析器设计与实现 . 8 3.1 基础理论说明 8 3.2 需求分析 . 8 3.3 概要设计 . 8 3.4 详细设计 . 8 3.5 测试数据与结果 . 9 3.6 心得体会 10 4 中间代码产生器的设计与实现.10 4.1 基础理论说明 .10 4.2 需求分析 10 4.3 概要设计 10 4.4 详细设计 11 4.5 测试数据与结果 12 4.6 心得体会 12 附录: .14 附录 A:主要源程序与系统截图14 附录 B: 任务分配表及个人完成的程序模块.33 附录 C: 小组讨论与研发记录34 3 1 概述概述 编译
3、程序的工作过程一般可以分为五个阶段:词法分析、语法分析、语义分析与中 间代码产生、优化、目标代码生成。每一个阶段在功能上是相对独立的,它一方面从上 一个阶段获取分析的结果来进行分析,另一方面由将结果传递给下一个阶段。由编译程 序的五个阶段就对应了编译系统的结构。 其中词法分析器利用超前搜索、状态转换等方法,将源程序转化成为一个一个的单词符 号二元式。一般程序语言的单词符号包括关键字、运算符、常数、标识符和界符。语法 分析器将这些单词符号作为输入,对它进行语法分析。语法分析分为两种方法:自上而 下分析法和自下而上分析法。针对不同程序语言的语法规则可以采取不同的分析方法, 当然两种方法也可以同时使
4、用。语法分析器把语法单元作为输入供语义分析器使用。一 般的语义分析器主要采用的是语法制导方法,即在语法分析的同时进行语法分析,并产 生一定的语义动作,来生成中间代码。上面三个过程可以与硬件无关,而接下来的优化 器和目标代码生成器是针对某一种处理器而言的。代码优化是将语义分析生成的中间代 码进行优化,产生执行效率更高的代码。目标代码生成器最终生成可以在某种机器上运 行的机器语言或者汇编语言。在整个编译过程中还包括对表格的操作和对错误的处理, 这些也都是非常重要的环节。 1.1 源、目标语言源、目标语言简介简介 使用 C 语言做简单语法分析器,C 语言是一门高级计算机编程语言,设计目标是提供 一种
5、能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环 境支持便能运行的编程语言 1.2 实现平台与运行平实现平台与运行平台台简介简介 在 win32 环境下进行编译,Win32 是指 Microsoft Windows 操作系统的 32 位环境, 是目前使用最多的操作系统。 实验环境:需要 TC、VC+ 6.0 等开发工具作为本次试验的环境。 4 1.3 其它其它 通过实现一个可以把类似 c 语言的源代码转变为中间代码的编译器,更好地理解编 译的过程,锻炼我们组的编程能力。 2 简单词法分析器的设计与实现简单词法分析器的设计与实现 2.1 基础理论说明基础理论说明 词法分析
6、负责对源程序的字符串进行扫描和分解,根据构词法将字符流(Character Stream)转化成单词流(Token Stream)。 2.2 需求分析需求分析 词法分析器 产生下述小语言的单词序列 这个小语言小语言的所有的单词符号,以及它们的种别编码和内部值 1如下表: 单词符号 种别编码 助记符 内码值 DIM IF DO STOP END 标识符 常数(整) = + * * , ( ) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 $DIM $IF $DO $STOP $END $ID $INT $ASSIGN $PLUS $STAR $POWER $COMMA $LPAR $RPAR - - - - - - 内部字符串 标准二进形式 - - - - - - 5 2.3 概要设计概要设计 首先,所有的关键字(如 IFWHILE 等)都是“保留字” 。所谓的保留字的意思是,用户 不得使用它们作为自己定义的标示符。例如,下面的写法是绝对禁止的: IF(5)=x 其次,由于把关键字