- 1、本文档共46页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编译原理课程设计报告
课题名称: c-minus 编译器__________
提交文档学生姓名: 张增明
提交文档学生学号: 0543042176
同组 成 员 名 单: 无
指导 教 师 姓 名: 杨秋辉
指导教师评阅成绩:
指导教师评阅意见:
.
.
提交报告时间: 2007 年 12 月 4 日
目录
编译原理课程设计报告 1
1. 课程设计目标 3
2. 分析与设计 3
2.1 程序设计思路 3
2.2 系统体系结构 4
2.3数据结构设计 5
2.3.1 各数据结构使用介绍 5
2.3.2 程序中各数据结构的声明 7
2.4 设计类 8
2.4.1 TokenType.java 8
2.4.2 TokenProcess.java 8
2.4.3 FirstSet.java 8
2.4.4 FollowSet.java 9
2.4.5 ParsingTable.java 9
2.4.6 ParsingTreeNode 10
2.4.7 ParsingTree.java 10
2.4.8 TreeFrame.java 11
2.4.9 Controller.java 11
2.5 重要函数流程图 12
2.5.1 FirstSet类 getFirstSet( ) 函数 12
2.5.2 FollowSet类 getFollowSet( ) 函数 13
2.6 程序测试流程设计 14
3. 程序代码实现 15
3.1 C-minus.l 15
3.2 TokenType.java 18
3.3 TokenProcess.java 19
3.4 FirstSet.java 20
3.5 FollowSet.java 22
3.6 ParsingTable.java 27
3.7 ParsingTree.java 29
3.8 TreeFrame.java 32
3.9 Controller.java 35
3.10 ParsingTreeNode 类 39
4. 测试结果 39
4.1 测试数据选择 39
4.2 测试结果分析 41
5. 总结 46
5.1 收获 46
5.2 特色 46
5.3 不足 46
1. 课程设计目标
本课程设计是实现c-minus编译器的前两个部分,即词法分析和语法分析。
要求能够掌握编译原理的基本理论,,理解了编译程序的基本结构,掌握了编译各阶段的基本理论和技术,掌握了编译程序设计的基本理论和步骤.,增强编写和调试高级语言源程序的能力。
并且能够掌握词法分析、语法分析的基本概念和实现方法,能够用给定的c-minus语言文法变换成可以进行LL(1)分析的LL(1)文法,并自动由程序生成其对应的First 集和Follow集,以及分析表,并且能够将给定的c-minus源程序进行词法和语法编译,并最终生成其对应的分析树。
2. 分析与设计
2.1 程序设计思路
系统采用面向对象的设计思想,用Java语言实现。整个系统的实现分三个步骤:词法分析、文法转换和语法分析。
词法分析
所谓词法分析就是将用C-minus语言编写好的源程序解析成一个个编译器可以识别的tokens ,这部分工作是由 Parser Generator软件实现的,我所做的只是编写Parser Generator的输入文件(见3.1节C-minus.l),然后通过Parser Generator生成具体的Java语言的词法分析器。
文法转换
文法转换是将所给的C-minus文法转化为可以进行LL(1)分析的LL(1)文法,这部分的转换分为两个步骤,第一步是将原来非LL(1)文法中的直接的左递归和左因子转化为对应的LL(1)文法的形式,第二个步骤是在第一个步骤的基础之上将间接的左递归和左因子转
文档评论(0)