编译原理课程设计报告--MiniC编译器

编译原理课程设计报告--MiniC编译器

ID:35617857

大小:1.09 MB

页数:53页

时间:2019-04-02

编译原理课程设计报告--MiniC编译器_第1页
编译原理课程设计报告--MiniC编译器_第2页
编译原理课程设计报告--MiniC编译器_第3页
编译原理课程设计报告--MiniC编译器_第4页
编译原理课程设计报告--MiniC编译器_第5页
资源描述:

《编译原理课程设计报告--MiniC编译器》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、《编译原理课程设计》报告MiniC编译器分组序号:14设计地点:微机101电子邮件:breakout19891002@sian.com分组成绩:?指导教师:李村合(5人且一组不跨班模板,比例各组上交前填写好,成绩由老师评定)专业班级计算机08-班姓名学号成绩比例21%19%22%18%20%成绩97360*21/7888360*19/78100(101.2)83360*18/7892360*20/7850最多取100假设某人超过100分,最多得100,把多余的分数分给其它人:92*5-100=3602010年11月6日

2、目录1课程设计目的12课程设计内容13课程设计原理14系统需求分析24.1MiniC编译程序的结构图24.2MiniC编译程序总体流程图34.3功能需求34.4主要用到的关键词、虚拟机代码等:44.5虚拟机代码格式44.6MiniC语言的BNF文法55系统设计与实现55.1MiniC编译程序主要模块功能55.2词法分析子程序65.3语法语义分析子程序75.3.1分程序处理过程85.3.2常量定义过程125.3.3变量定义过程135.3.4语句处理过程135.3.5赋值语句的处理135.3.6read语句的处理155.3

3、.7write语句的处理155.3.8call语句的处理15505.3.9if语句的处理155.3.10begin/end语句的处理165.3.11while语句的处理165.3.12表达式、项、因子处理165.3.13逻辑表达式的处理165.3.14判断单词合法性与出错恢复过程分析:165.3.15类PCODE代码解释执行过程分析176系统测试与运行结果分析186.1.1测试程序:186.1.2测试结果197心得体会22501课程设计目的编写一个编译程序,将C语言转换成汉语,掌握编译原理课程的基本知识;加强编写和读程

4、序的能力;理解词法分析、语法分析和语义分析在编译程序中的作用;掌握词法分析、语法分析和语义分析程序的实现方法和技术。编制一个递归下降分析程序,实现对词法分析程序所提供的单词序列的语法检查和结构分析。2课程设计内容(1)仔细阅读PL/0编译程序文本(编译原理(第二版)张素琴吕映芝蒋维杜戴桂兰主编清华大学出版社),并上机调试通过。(2)对PL/0语言进行下列扩充①扩充一维整型数组。扩充var数组:VAR<数组标识名>(<下界>:<上界>)<下界〉和<上界〉可用常量标识名。②扩充条件语句的功能使其为:IF<条件>THEN<语

5、句>[ELSE<语句>]③增加repeat重复语句:REPEAT<语句>{;<语句>}UNTIL<条件>3课程设计原理PL/0语言可以看成PASCAL语言的子集,它的编译程序是一个编译解释执行系统。PL/0的目标程序为假想栈式计算机的汇编语言,与具体计算机无关。PL/0的编译程序和目标程序的解释执行程序都是用C语言书写的,因此PL/0语言可在配备C语言的任何机器上实现。其编译过程采用一趟扫描方式,以语法分析程序为核心,词法分析和代码生成程序都作为一个独立的过程,当语法分析需要读单词时就调用词法分析程序,而当语法分析正确

6、需要生成相应的目标代码时,则调用代码生成程序。用表格管理程序建立变量、常量和过程表示符的说明与引用之间的信息联系。当源程序编译正确时,PL/0编译程序自动调用解释执行程序,对目标代码进行解释执行,并按用户程序的要求输入数据和输出运行结果。501系统需求分析PL/0语言编译过程采用一趟扫描方式,以语法分析程序为核心,词法分析程序和代码生成程序都作为一个独立的过程,当语法分析需要读单词时就调用词法分析程序,而当语法分析正确需生成相应的目标代码时,则调用代码生成程序.此外,用表格管理程序建立变量、常量和过程标识符的说明与引用

7、之间的信息联系.用出错处理程序对词法和语法分析研究遇到的错误给出在源程序中出错的位置和错误性质.当源程序编译正确时,PL/0编译程序自动调用解释执行,并按用户程序要求输入数据和输出运行结果。1.1PL/0编译程序的结构图PL/0源程序语法语义分析程序表格管理程序出错处理程序目标程序代码生成程序程序词法分析程序程序图1PL/0编译程序的结构图501.1PL/0编译程序总体流程图启动置初值调用getsym取单词调用block过程是否为源程序结束符源程序是否有错误调用解释过程interpret解释执行目标执行目标程序结束出错

8、打印错误NNYY图2PL/0编译程序总体流程图1.2功能需求1、用C语言实现了类PASCAL语言,称为扩展的PL/0语言,即EPL/0语言的编译器。2、文法是LL(1)文法,采用递归子程序法实现语法分析,并用C语言实现了词法分析器、语法分析器、代码生成器和解释器。3、在声明中实现了对静态常量、变量、数组和过程的声明支持;在赋值语句

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

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

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