文档详情

编译原理课程设计任务书--一个简单的编译器的设计与分析.doc

发布:2018-05-11约1.53万字共19页下载文档
文本预览下载声明
课程设计任务书及成绩评定 课程设计的任务和具体要求 设计任务 选择一种常见高级语言为背景,对其进行简化,设计一个简单的c编译器。例如只包括整型常数和其四则运算以及相应的赋值语句,转移语句,条件语句和最简单的输入输出语句等.编制一个包括必要处理阶段(词法分析、语法分析、语义分析、代码生成)简化又完整的编译程序。 设计要求 写出符合分析方法要求的文法,给出分析方法的思想,完成分析程序设计;编制好分析程序后,设计若干用例,上机测试并通过所设计的分析程序。 指导教师签字: 日期: 指导教师评语 成绩: 指导教师签字: 日期: 课程设计所需软件、硬件等 PC机 Microsoft Visual C++6.0 课程设计进度计划 起至日期 工作内容 备注 2010.5.1---2010.5.15 2010.5.16---2010.6.1 2010.6.2---2010.6.15 收集资料 编写代码 运行、调试 参考文献、资料索引 序号 文献、资料名称 编著者 出版单位 1 程序设计语言编译原理 陈火旺、刘春林等 国防工业出版社 2 数据结构(C语言版) 严蔚敏、吴伟民 清华大学出版社 3 C程序设计 谭浩强 清华大学出版社 4 程序设计语言编译方法 肖军模 大连理工大学出版社 目 录 课程设计的任务和具体要求................................1 课程设计进度计划........................................2 目录....................................................3 正文 1、设计题目………………………………………………………… 4 2 、 算法设计的思想………………………………………………4 3 、 算法设计分析…………………………………………………5 4、 源代码…………………………………………………………6 5 、 运行结果分析…………………………………………………6 结束语………………………………………………………………20 正文 1、设计题目 一个简单编译器的设计与分析 2、算法设计的思想 编译程序的工作过程一般可以分为五个阶段:词法分析、语法分析、语义分析与中间代码产生、优化、目标代码生成。每一个阶段在功能上是相对独立的,它一方面从上一个阶段获取分析的结果来进行分析,另一方面由将结果传递给下一个阶段。由编译程序的五个阶段就对应了编译系统的结构。 其中词法分析器利用超前搜索、状态转换等方法,将源程序转化成为一个一个的单词符号二元式。一般程序语言的单词符号包括关键字、运算符、常数、标识符和界符。语法分析器将这些单词符号作为输入,对它进行语法分析。语法分析分为两种方法:自上而下分析法和自下而上分析法。针对不同程序语言的语法规则可以采取不同的分析方法,当然两种方法也可以同时使用。语法分析器把语法单元作为输入供语义分析器使用。一般的语义分析器主要采用的是语法制导方法,即在语法分析的同时进行语法分析,并产生一定的语义动作,来生成中间代码。上面三个过程可以与硬件无关,而接下来的优化器和目标代码生成器是针对某一种处理器而言的。代码优化是将语义分析生成的中间代码进行优化,产生执行效率更高的代码。目标代码生成器最终生成可以在某种机器上运行的机器语言或者汇编语言。在整个编译过程中还包括对表格的操作和对错误的处理,这些也都是非常重要的环节。 下图给出了编译系统的结构框图: 3、算法设计分析 使用的数据结构和关键变量 struct Stack { // 栈结构体: 序号、内容、连接下一结点指针 int num; char name; struct Stack *next; }; struct Guiyue { // 规则集结构体:序号、规则长度、符号、连接下一结点指针 int num; int count; char name; struct Guiyue *next; }; struct Relation { // 分析表结构体:状态序号、对应符号列、操作类型的对应序号、操作类型、连接下一结点指针 int line_States ; char rank_Letter; int relationship; char name;
显示全部
相似文档