欢迎来到天天文库
浏览记录
ID:30893492
大小:1.45 MB
页数:49页
时间:2019-01-04
《张增明-0543042176-编译原理课程设计-副本》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、编译原理课程设计报告课题名称:c-minus编译器提交文档学生姓名:张增明提交文档学生学号:0543042176同组成员名单:无指导教师姓名:杨秋辉指导教师评阅成绩:指导教师评阅意见:提交报告时间:2007年12月4日编译报告1.课程设计目标2.分析与谿・3・2.1斷设计思路・3・2.2系统体系结构-4-2.3数据结构设计-5-2.3.1各数据结棚吏用他-5-2.3.2程序中各数据结构的声明.・7・2.4设计类-8-•4.1TokenType.java・8-2.4.2TokenProcess.java-8-2.4.3FirstSet.java・8-*4.4FolIowSet.java
2、・9-4.5ParsingTable.java・9-4.6ParsingTreeNode.・10-4.7ParsingTree.java.・JO-2.4.8TreeFrame.java・11・Controller,java.・11・2.5重要函数洗灌图-12-2.5.1FirstSet类getFirstSet()函数.・12-2.5.2FolIowSet类getFollowSet()函数.・13-2.6册测砌濯设计-14-阴弋码实现-15-1C-MINUS.L-15-2TokenType.java-18-3TokenProcess.java-19-3.4FirstSet.java-2
3、0-*5FollowSet.java-22-3.6Parsingtable,java-27-3.7ParsingTree.java-29-•8TreeFrame.java-32-•Controller,java-35-•ParsingTreeNode类-39-4.1测试数据选择-39-42测试结果分析-41-5.1收获-46-5.2特色-46-5.3不足-46-1.课程设计目标本课程设计是实现-minus编译器的前两个部分,即词法分析和语法分析。要求能够掌握编译原理的基本理论,,理解了编译程序的基本结构,掌握了编译各阶段的基本理论和技术,掌握了编译程序设计的基本理论和步骤,增强编写和
4、调试高级语言源程序的能力。并且能够掌握词法分析、语法分析的基本概念和实现方法,能够用给定的c-minus语言文法变换成可以进行LL(1)分析的LL(1)文法,并自动由程序牛.成其对应的Fi/t集和Follow集,以及分析表,并且能够将给定的c-minus源程序进行词法和语法编译,并最终牛成英对应的分析树。2.分析与设计2.1餌设计思路系统采用面向对彖的设计思想,用Java语言实现。整个系统的实现分三个步骤:词法分析、文法转换和语法分析。•词劭析所谓词法分析就是将用C-minus语言编写好的源程序解析成一个个编译器可以识别的tokens,这部分「•作是由ParserGcncraloi•
5、软件实现的,我所做的只ParserGenerator的输入文你见3」节C-minus.I),然后通过ParserGenerator生成具体的Java语言的词法分析器。•文法转换文法转换是将所给的C-minus文法转化为可以进行LL⑴分析的LL(1)文法,这部分的转换分为两个步曝第一步是将原来非LL(1)文法中的直接的左递归和左因子转化为对应的LL⑴文法的形式,第二个步骤是在第一个步骤的基础Z上将间接的左递归和左因子转化,并最终形成标准的LL(1)文法。本部分手工完成并由程序检验是否变换成功。•语齣析语法分析第一步是将给定的LL(1)文法通过求Fi何集和Follow集,并最终形成文法的
6、分析表的过程,第二步结合词法分析产生的lokcn,并对照分析表建立分析树,这是本次课程设计的最后一步。木部分还会判断输入的文法文件是否有语法错误,比如出现了一个既不是非终结符号乂不是终结符号的符号等。以上三个过程的形象化表示和其Z间的关系见图2-1.图2-1词法分析、文法I专换、语法分析的过程和其之间关系示意图2.2系统体系结构木系统采用而向对象的思想进行设计和实现,如2.1节中阐述的那样,系统的实现分为三个部分,见图2-1.木系统在实现过程屮一共设计了十个类,各个类的名称和作用见表2-1.表2-1系统中各个类的说明类名功能备注TokenType提供文法中所有的终结符合的定义。是接口
7、TokenProcess提供对终结符合的处理功能,包括将int型的终结符号转化为Stiing型,以及判断一个Stiing型的符号是否终结符号。Parser将输入的源程/了;转化为tokens,并分为token和tokentype分另ij存放在两个文件中,以便使用。由ParserGenerator通过"C-minus.I”输入文件自动生成。FirstSet负责将文法转入数据结构(见23节数据结构设计),并目•判断文法是否有语法错误,以及求文法的FiiM集。F
此文档下载收益归作者所有