编译技术课程设计报告

编译技术课程设计报告

ID:25289920

大小:568.21 KB

页数:20页

时间:2018-11-19

编译技术课程设计报告_第1页
编译技术课程设计报告_第2页
编译技术课程设计报告_第3页
编译技术课程设计报告_第4页
编译技术课程设计报告_第5页
资源描述:

《编译技术课程设计报告》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、编译技术课程设计班级软件1001学号姓名指导老师2013年6月第19页目录一、目的2二、任务及要求2三、实验环境4四、实现过程说明41.词法分析器4(1)单词符号表4(2)数据结构4(3)函数说明5(4)流程图52.语法分析器7(1)分析方法说明7(2)文法7(3)数据结构9(4)函数说明103.中间代码生成器10(1)属性文法10(2)数据结构10(3)函数说明11(4)流程图11五、程序运行结果12六、总结19第19页一、目的<<编译技术>>是理论与实践并重的课程,而其课程设计要综合运用一、二年级所学的多门课程的内容,用来完成一个小型编译程序。从而巩固和加强对词法分析、语法分析、

2、语义分析、代码生成和报错处理等理论的认识和理解;培养学生对完整系统的独立分析和设计的能力,进一步培养学生的独立编程能力。二、任务及要求基本要求:1.词法分析器产生下述小语言的单词序列这个小语言的所有的单词符号,以及它们的种别编码和内码值如下表:单词符号种别编码助记符内码值while1while¾if2if¾else3else¾switch4switch¾case5case¾标识符6id符号表入口地址常数7num常数表入口地址=8=¾+9+¾*10*¾**11**¾-12-¾/13/¾>14relopMT>=14relopME<14relopLT<=14relopLE==14relop

3、EQ!=14relopUEQ;15;¾,16,¾(17(LB)17)RB&&18Op-

4、

5、19Op-第19页对于这个小语言,有几点重要的限制:首先,所有的关键字(如if﹑while等)都是“保留字”。所谓的保留字的意思是,用户不得使用它们作为自己定义的标示符。例如,下面的写法是绝对禁止的:if(5)=x其次,由于把关键字作为保留字,故可以把关键字作为一类特殊标示符来处理。也就是说,对于关键字不专设对应的转换图。但把它们(及其种别编码)预先安排在一张表格中(此表叫作保留字表)。当转换图识别出一个标识符时,就去查对这张表,确定它是否为一个关键字。再次,如果关键字、标识符和常数之间没有确定

6、的运算符或界符作间隔,则必须至少用一个空白符作间隔(此时,空白符不再是完全没有意义的了)。例如,一个条件语句应写为 ifi>0i=1;而绝对不要写成             ifi>0i=1;因为对于后者,我们的分析器将无条件地将ifi看成一个标识符。这个小语言的单词符号的状态转换图,如下图:第19页1.语法分析器能识别由加+乘*乘方**括号()操作数所组成的算术表达式,其文法如下:E→E+T

7、TT→T*F

8、FF→P**F

9、PP→(E)

10、i使用的算法可以是:预测分析法;递归下降分析法;LR分析法等。2.中间代码生成器产生上述算术表达式的中间代码(四元式序列)较高要求:1.扩充上述小语

11、言的单词;2.增加语法分析器的功能,能识别条件语句和循环语句等;3.增加中间代码生成器的功能,能产生条件语句和循环语句等的中间代码(四元式序列)4.报错基础上增加错误信息;5.将中间代码翻译成汇编语言。三、实验环境开发环境:VisualStadio2010语言:C++四、实现过程说明1.词法分析器(1)单词符号表&&18Op-

12、

13、19Op-/*若对单词扩充需给出单词符号表*/(2)数据结构词法分析程序主要通过使用scaner()函数对用户输入的语句进行单词符号的分析,然后以(单词符号,种别编码)的二元式形式输出,在函数中使用到的表主要有如下:符号表:list1;//存放标示符常数表:

14、list2;//存放数字/*单词的二元式、符号表、常数表等*//*若定义类,给出类图及说明*/第19页(3)函数说明Scaner函数从左到右依次对输入的语句进行分析,每次读员工字符,分析它是什么类型:如果是字母类型,则接着往下读,如果是字母或数字,则把第一个和第二个字符连起来放在token数组中,将他们依次对比关键字表中的元素,如果相同,把sny中置相应的种别编码,如果不同,则字符为标示符,则将标示符放入list1表中;若读到数字,首先分析第一个符号,接着读下一个字符串,直到读到一个不是数字的字符串位置,每读一个数字字符,就将他们转化为相应的数字,使用辗转相乘法,每次都让number

15、先自乘10,然后加上这个数字,这样就将字符串表示的数字转化成了相应的数,返回主函数输出,则将数字放入list2表中;如果是其他单词表的符号,则将他们的sny置为相应的种别码。(4)流程图开始主流程图定义关键字表请用户输入语句读入用户输入的字符串调用扫描程序调出单词二院组N输入串结束结束Y第19页变量初始化读取下一个字符标识符词法分析流程图Y是否为字母N拼成标示符Sny为6是否为关键字NNSny为对应关键字的种别编码返回变量初始化数字词法分析流程图读取下一个

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。