minic编译器设计与开发

minic编译器设计与开发

ID:5452117

大小:642.11 KB

页数:21页

时间:2017-12-13

minic编译器设计与开发_第1页
minic编译器设计与开发_第2页
minic编译器设计与开发_第3页
minic编译器设计与开发_第4页
minic编译器设计与开发_第5页
资源描述:

《minic编译器设计与开发》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、《编译原理课程设计》报告MiniC编译器设计与开发分组序号:10设计地点:微601电子邮件:413959124@qq.com分组成绩:任课教师:李村合专业班级计算机11-2班姓名许薇伍依谭昭安帅李民王萌学号110712011107120411071208110712181107122011071231成绩比例(%)171619191415成绩2013年12月21日18目录1课程设计目的12课程设计内容13课程设计原理14系统需求分析44.1MiniC编译器总体流程图54.2功能需求64.3用到的

2、主要关键词:84.4汇编成可执行文件84.5MiniC语言的文法85系统设计与实现85.1C10编译器的主要功能模块85.2词法分析子程序85.3语法语义分析子程序86系统测试与运行结果分析96.1测试程序196.2测试程序296.3测试程序396.4测试结果1106.5测试结果2136.6测试结果3167心得体会19181课程设计目的(1)根据所掌握的编译原理课程的基本知识,编写出一个MiniC编译器;(2)增强阅读和编写程序的能力;(3)理解词法分析、语法分析和语义分析在编译程序中的作用;(

3、4)掌握词法分析、语法分析和语义分析程序的实现方法;(5)实现MiniC编译器的编辑、编译、连接和运行。2课程设计内容用MFC编写一个可视化的MiniC编译器,要求界面美观,使用方便,能够实现自定义MiniC语言的编译。ü支持的语句和运算:1)数据类型:int,char,void2)语句:cin,cout,if,while,for,return,printf,赋值3)数学运算:+,-,*,/4)关系运算:==,>,<,>=,<=,!=5)逻辑运算:&&,

4、

5、,!6)支持多重调用函数,不支持函数的

6、声明。7)支持双重循环。8)注释语句:C类型的/**/和C++类型的//9)支持数组传值10)支持复合语句3课程设计原理MiniC语言可以看成C语言的子集,它的编译程序是一个编译执行环境。词法分析程序语法语义分析程序代码生成程序目标程序表格管理程序出错处理程序源程序编译程序结构图MiniC的编译程序和目标程序的执行程序都是用C++语言编写的,因此MiniC语言可在配备C语言的任何机器上实现。它的编译过程采用从左到右扫描输入符号串,进行最左推导,再向右看一个符号的方式,以语法分析、语义分析程序为核

7、心,词法分析和汇编代码生成程序都是独立的过程。当语法分析需要读取输入符号串时就调用词法分析程序;而当语法分析正确后,需要生成相应的目标代码时,则调用汇编代码生成程序.用表格管理程序建立变量、常量和过程标识符的说明与引用之间的信息联系。用出错处理程序实现对词法和语法、语义分析遇到的错误给出在源程序中出错的位置和与错误性质有关的编号,并进行错误恢复。(1)运行C10程序,打开Exp.mc文件。18(2)选择菜单汇编(A)->生成汇编代码(G)文件test5.asm。18(3)运行test5.asm文

8、件,结果如下图所示。4系统需求分析MiniC语言编译过程采用从左到右扫描输入符号串,进行最左推导,再向右看一个符号的方式,对源程序分别进行词法分析、语法分析、语义分析、中间代码生成、目标代码生成和可执行程序生成,此外,用表格管理程序建立变量、常量和过程标识符的说明与引用之间的信息联系.用出错处理程序对词法和语法分析研究遇到的错误给出在源程序中出错的位置和错误性质,当源程序编译正确生成汇编代码时,利用汇编程序汇编、链接,并且运行。输入文件开始词法分析语法分析建立符号表类型检查代码生成结束语法树符号

9、表184.1MiniC编译程序总体介绍该编译器的运行过程是编辑源文件保存后,生成汇编代码时使用汇编代码生成程序CAsmCodeGenerator类,调用该类的成员函数genCodeSeg()来生成代码段和genPreSeg()来生成数据段,最后调用emitCode();当然我们在汇编代码生成时应该使用语义分析子程序CAnalyzer类对词法和文法出现的各种情况进行展开分析。4.2功能需求1)数据类型:int,char,void2)语句:cin,cout,if,while,for,return,p

10、rintf,赋值3)数学运算:+,-,*,/4)关系运算:==,>,<,>=,<=,!=5)逻辑运算:&&,

11、

12、,!6)支持多重调用函数,不支持函数的声明。7)支持双重循环。8)注释语句:C类型的/**/和C++类型的//9)支持数组传值10)支持复合语句4.3用到的主要关键词:关键字等用枚举类型囊括:enumTokenType18{//reservedKeyword_AUTO,_DOUBLE,_INT,_STRUCT,_BREAK,_ELSE,_LONG,_SWITCH,_CASE,_ENUM

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

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

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