张增明-0543042176-编译原理课程设计 - 副本

  • 格式:doc
  • 大小:603.50 KB
  • 文档页数:46

编译原理课程设计报告课题名称: 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.1C-MINUS.L (15)3.2T OKEN T YPE.JAVA (18)3.3T OKEN P ROCESS.JAVA (19)3.4F IRST S ET.JAVA (20)3.5F OLLOW S ET.JAVA (22)3.6P ARSING T ABLE.JAVA (27)3.7P ARSING T REE.JAVA (29)3.8T REE F RAME.JAVA (32)3.9C ONTROLLER.JAVA (35)3.10P ARSING T REE N ODE 类 (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)文法的形式,第二个步骤是在第一个步骤的基础之上将间接的左递归和左因子转化,并最终形成标准的LL(1)文法。