1、 1 编译原理课程设计报告编译原理课程设计报告 题目题目 编译代码生成器设计编译代码生成器设计 学学 院院 信息科学与工程学院信息科学与工程学院 专专 业业 计算机科学与技术计算机科学与技术 班班 级级 * 学学 号号 * 学生姓名学生姓名 * 指导教师指导教师 * 课程成绩课程成绩 完成日期完成日期 * 2 题目题目 编译代码生成器设计 摘要摘要 使用过现代计算机的人都知道,多数用户是应用高级语言来实现他们所需要的计算 的。现在计算机系统一般都含有不只一个的高级语言的编译程序,对有些高级语言甚至 配置了几个不同性能的编译程序,供用户按不同需要进行选择。高级语言编译程序是计 算机系统软件最主要
2、的组成部分之,也是用户最直接关系的工具之一。 计算机上执行一个高级语言程序一般分为两步:第一,用一个编译程序把高级语言 翻译成机器语言程序;第二,运行所得的机器语言程序求得计算结果。 通常说的翻译程序是指能够把某一种语言程序转换成另一种语言程序(目标语言程 序)。如果源语言诸如 Fortran,Pascal,C,Ada 或 java 这样的高级语言,而目标程 序是诸如汇编语言或者机器语言这类的低级语言,这样的一个翻译程序就是称为编译程 序。 一个编译程序的工作过程一般可以划分为五个阶段:词法分析、语法分析、语义分 析与中间代码生成、优化、目标代码生成。每个阶段都是从上一个阶段得到结果,对他 进
3、行分析,并且根据一些外部环境(例如符号表等)得到最终的输出结果。要构造一个编 译程序,可以按照这样的阶段来分别构造,最后来连调。 现在人们已经建立了多种编制部分编译程序或整个编译程序的有效工具。有些能用 于自动生成扫描器(如 LEX),有些可以用于自动产生语法分析器(如 YACC),有些甚至可 以用来自动产生整个的编译程序。这些构造编译程序的工具成为编译程序编译程序、 编译程序产生器或翻译程序书写系统,他们是按照编译程序和目标语言的形式描述而自 动产生编译程序的。 编译程序是一极其庞大而又复杂的系统,掌握它比较苦难。但是一旦对其掌握,对 以后的程序语言设计,系统软件分析,系统软件设计,形式语言
4、研究等方面都是非常有 好处的。 关键字:C 语言、编译、扫描器、语法分析 一、课程设计的目的一、课程设计的目的 编译原理课程兼有很强的理论性和实践性,是计算机专业的一门非常重要的专业基 础课程,它在系统软件中占有十分重要的地位,是计算机专业学生的一门主修课。为了 让学生能够更好地掌握编译原理的基本理论和编译程序构造的基本方法和技巧,融会贯 通本课程所学专业理论知识,提高他们的软件设计能力,特设定该课程的课程设计,通 过设计一个简单的 PASCAL 语言(EL 语言)的编译程序,提高学生设计程序的能力,加 深对编译理论知识的理解与应用。 二、课程设计的要求二、课程设计的要求 1、明确课程设计任务
5、,复习编译理论知识,查阅复印相关的编译资料。 2、按要求完成课程设计内容,课程设计报告要求文字和图表工整、思路清晰、算法 3 正确。 3、写出完整的算法框架。 4、编写完整的编译程序。 三、课程设计的内容三、课程设计的内容 课程设计是一项综合性实践环节,是对平时实验的一个补充,课程设计内容包括课 程的主要理论知识,但由于编译的知识量较复杂而且综合性较强,因而对一个完整的编 译程序不适合平时实验。通过课程设计可以达到综合设计编译程序的目的。本课程的课 程设计要求学生编写一个完整的编译程序,包括词法分析器、语法分析器以及实现对简 单程序设计语言中的逻辑运算表达式、算术运算表达式、赋值语句、IF 语
6、句、While 语 句以及 dowhile 语句进行编译,并生成中间代码和直接生汇编指令的代码生成器。 四、总体设计方案及详细设计四、总体设计方案及详细设计 总体设计方案: 1.总体模块 2. 表 2.1 各种单词符号对应的种别码 单词符号 种别码 单词符号 种别码 bgin 1 : 17 If 2 := 18 Then 3 = 24 dight dight* 11 = 25 + 13 ; 26 14 ( 27 * 15 ) 28 / 16 # 0 详细设计:详细设计: 主程序 词法分析 程序 语法分析 程序 中 间 代 码 生成程序 4 4.14.1 界面导入设计界面导入设计 (1)一共三个选项: choice 1-cifafenxi choice 2-yufafenxi choice 3-zhongjiandaima (2)界面演示 图一 图