- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
智能化高级语言编译器的设计与实现
系统软件实践(编译原理课程设计)
小组成员名单 序号 班级 学号 姓名 完成功能简述 成绩 计科0502 200542054 张磊 Yacc实现、LALR语法分析 优 计科0502 200542049 初冲 语义分析全过程 优 计科0503 200542073 江志英 中间代码优化、JAVA界面总制作 优 计科0504 200542119 侯凯希 基于分析树的中间代码生成 优 计科0505 200542128 王玉莲 中间代码优化(基本块划分)、文档编写、界面美化 中 计科0502 200542063 黄维志 文档编写、界面设计 中 计科0502 200542043 叶青 语义分析、文档编写、界面制作 良 计科0502 200542060 闻翰 源文件预处理器、文档编写 中 计科0502 卢小丫 文档编写 及格 计科0502 200542038 王文庆 文档编写、界面制作、协助组织 良 计科0503 200542089 郭世东 中间代码优化(基于基本块)、文档编写、界面制作 良
北京化工大学
信息科学与技术学院计算机科学与技术专业
2007.12目录
一、功能描述 1
1.1 系统实现的目的和意义 1
1.2 系统实现的功能 1
1.3 系统开发的环境 1
二、总体结构 2
2.1 文件清单(按文件系统树型方式排列) 2
2.2 系统功能结构图(标明每个模块的文件名) 3
三、详细设计(均需注释) 3
3.1 数据结构 3
3.2 各模块(或算法)流程图(标明函数名) 7
四、系统实现 24
4.1 词法分析模块 25
4.2 语法分析模块 27
4.4 中间代码生成模块 29
4.5 代码优化模块 30
五、程序的过程展示 31
5.1 程序运行过程展示 31
六、软件的辅助说明 33
6.1 本软件的优点 33
6.2 本软件的缺点 33
6.3 本软件的BUG 33
七、课程设计结论(意见、建议、心得…) 33
八、附录——提交文档 35
8.1 书面形式清单 35
8.2 电子形式清单 35
8.3 文档名要求 35
一、功能描述
1.1 系统实现的目的和意义
本次课程设计我们组实现了基于非固定词法、语法的高级语言编译器的前端,并加以界面化输出。通过此次课程设计,提高了我们的编程能力,加强了交流能力、整体设计能力,加深了对“编译原理”课程的理解,对后续课程要求的动手能力得到了很大的提高。由于在近4天的时间内做出一个较为完整的编译器前端,靠一个人的努力是极难完成的,要靠组员共同的努力才能成为现实。这次课程设计是我们做过的最大的一个程序了,有众多功能模块组成,每个模块都由不同的人来完成,最后在接口、综合方面体会到了,一个大的项目在分成众多项目的时候,不但要考虑到功能的相对独立,还要注意相互的联系和沟通,要把所有人所有模块合成有机的整体,整个项目才能完成较好的功能。
1.2 系统实现的功能
本课程设计制作的编译器,功能模块有词法分析器生成器、词法分析器、LALR(1)分析表生成器、LALR(1)语法分析器、语义分析器、基于分析树的中间代码(三地址四元式)生成模块、中间代码优化模块、JAVA整合界面。
1.3 系统开发的环境
Dev-C++、Visual Studio 2005、JAVA(NetBeans5.0、JDK1.6)
说明:各个模块基本上都是用C++编写,生成exe文件,然后用JAVA编写界面调用模块EXE文件,完成输入输出的界面化。
二、总体结构
2.1 文件清单(按文件系统树型方式排列)
2.2 系统功能结构图(标明每个模块的文件名)
三、详细设计(均需注释)
3.1 数据结构
符号表的数据结构
符号表的数据结构:哈希链式结构
整个存储结构是一个数组,通过哈希函数映射到具体地址,如果产生冲突则通过该节点的NEXT指针指向一个新的节点来存储。
TOKEN序列的数据结构
用pairstring,string表示,first表示token的大类别,例如ID,NUM;second表示token的具体值。
NFA及DFA的数据结构
struct TokenNode
{
bool isAcceptable;//为可接受情况
vectorpairstring,int list;//用来记录输入字符时转向的状态,相当于邻接表
};
FIRST集的数据结构
bool **first=new bool*[ntCount];
表示非终极符号的FIRST集,对应行列下的值表示此非终极符号的FIRST集是否含有此终极符号。计算完FIRST集后,将其放到整型数组中来使用。
LR(1)识别活前缀状态机(项目集合)的数据结构
项目(item_
文档评论(0)