欢迎来到天天文库
浏览记录
ID:14329165
大小:371.72 KB
页数:35页
时间:2018-07-28
《编译技术课程设计a实验报告(华北电力大学科技学院)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、科技学院课程设计报告(2011--2012年度第1学期)名称:编译技术课程设计A院系:科技学院信息工程系班级:软件09k2学号:091909020227学生姓名:闫雪峰指导教师:郭丰娟设计周数:2成绩:日期:2011年12月6日《编译技术课程设计A》任务书一、目的与要求1.理解和掌握编译程序设计原理及常用的技术,建立编译程序的整体概念;2.理解和掌握编译程序词法分析、语法分析、语义分析、中间代码生成和目标代码生成等几个关键环节原理和实现算法;3.掌握软件模块设计技能;熟悉并能较好地利用软件开发环境独立编程、调试和分析程序运行情况,逐渐形成创新思维和从事
2、系统软件的研究和开发能力。二、主要内容定义一个简化的类C语言—L语言作为源语言,重点针对词法分析、语法分析、语义分析、中间代码生成和目标代码生成等几个关键环节进行编程和调试训练,最终设计实现L语言的编译程序。通过调试L编译程序,了解一般编译程序的总体框架,掌握编译各阶段程序的构造,理解和掌握错误处理方法及符号表的组织方式,理解和掌握语法制导翻译方法。还可以适当扩展L语言成分,并对相应的编译程序进行扩充。可使用C、VC++等语言编程实现。具体内容包括:1.由单词的语法规则出发、画出识别单词的状态转换图,然后用程序实现扫描器设计。2.设计、编写和调试算法优
3、先分析程序,了解算法优先分析器的组成结构以及对文法的要求,掌握实现通用算法优先分析算法的方法。3.在算符优先分析文法的基础上进行翻译工作,生成四元式表;4.设计一个简单的代码生成器,该代码生成器以基本块为单位,依次将每条中间代码变换成相应的目标代码。5.综合以上实验的结果,并进行集成与设计,开发出一个小型编译程序。对于各项主要内容的实现细节描述和指导,请参考《计算机综合实践指导》编译技术的相关内容。三、进度计划序号设计(实验)内容完成时间备注1词法分析器设计2天2算符优先分析程序设计3天3语法制导翻译程序设计3天4简单代码生成器设计2天四、设计(实验)
4、成果要求至少完成简单变量定义语句及包含算术运算符的赋值语句的整个编译过程,统一使用课程设计报告书,文字清楚、工整。五、考核方式实验结果(60%)+实验报告(30%)+实验过程表现(10%)学生姓名:指导教师:年月日一、课程设计(综合实验)的目的与要求实验整体思想:a)词法分析总体概述:由单词的语法规则出发、画出识别单词的状态转换图,然后用程序实现扫描器设计。具体要求:设计一个扫描器,该扫描器是一个子程序,其输入是源程序字符串,每调用一次,就输出一个以内部形式表示的单词符号。(1)单词符号及其内部表示单词符号种别编码单词的属性值key0在变量表中的下标v
5、ar1变量名字的字符串const2常量的整型值operate3运算符在运算符表中的下标//能识别单行注视并过滤注:其中关键字保留,不支持将关键字作为变量名。(2)输入预处理1.词法分析器工作的第一步就是输入源程序文本。2.预处理工作会剔除源程序中多余的空格(将多个空格换行符合并成一个)。3.能识别//***这样的单行注视将其过滤掉。4.将固定字长的过滤过字节放到循环扫缓冲区,并记录扫描位置,下次继续从上次扫描结尾继续扫描取固定字长。5.本程序设计为255个字节,最大单个标识符长度不能超过255个字节。(3)输入缓冲区设计扫描缓冲去一分为二。起点指示器搜
6、索指示器每半个缓冲区可容纳256个字符,两个半区互补。如果搜索指示器从单词起点出发搜索到半区边缘尚未到达单词的终点,那么就调用预处理程序,另其把后序的256个字符装进另半区(4)缓冲区中字符的存放其中如下代码在缓冲区里的存放a=b+c;Aa==Bb++cc;;2(5)识别单词符号的状态装换图0空白数字=+*,()其他1312111053字母761字母或数字数字非字母与数字非数字**9842b)语法分析总体概述:采用自下而上规约过程,根据算符优先文法。具体要求:设计、编写和调试算法优先分析程序,了解算法优先分析器的组成结构以及对文法的要求,掌握实现
7、通用算法优先分析算法的方法。(1)算符优先文法定义算符优先文法是一种自下而上的分析方法,其文法的特点是文法的产生式中不含两个相邻的非终结符。自上而下的分析方法,通常要求文法的产生式不含左递归,如LL(I)文法就是一种可以自上而下分析的文法。假定G是不含ε-产生式的算符文法。对于任何一对终结符a、b,我们说: (1)a等于b当且仅当文法G中含有形如P→···ab···或P→···aQb···的产生式; (2)a小于b当且仅当G中含有形如P→···aR···的产生式,而R(+=>)b···或R(+=>)Qb···; (3)a大于b当且仅当G中含有形如
8、P→···Rb···的产生式,而R(+=>)···a或R(+=>)···aQ; 如果一个算符
此文档下载收益归作者所有