UML课程SNL编译器程序设计文档对毕业论文有很大的帮助哪儿都下不到自己珍藏的_第1页
UML课程SNL编译器程序设计文档对毕业论文有很大的帮助哪儿都下不到自己珍藏的_第2页
UML课程SNL编译器程序设计文档对毕业论文有很大的帮助哪儿都下不到自己珍藏的_第3页
UML课程SNL编译器程序设计文档对毕业论文有很大的帮助哪儿都下不到自己珍藏的_第4页
UML课程SNL编译器程序设计文档对毕业论文有很大的帮助哪儿都下不到自己珍藏的_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、snl编译器程序设计文档项目组长:陈 亮 (软件学院06级 1291406006)项目组员:汤 源 (软件学院06级 1291406) 吕 浩 (软件学院06级 1291406)李春娟 (软件学院06级 1291406)党雪迎 (软件学院06级 1291406)开发日期:2009年5月1日2009年6月21日第一章 引言31.1 编写目的31.2背景31.3参考资料3第二章 项目概述42.1 工作内容42.2主要参加人员42.3产品42.3.1程序42.3.2文件42.4 验收标准52.5 完成项目最迟期限5第三章 实施计划53.1 接口人员53.2 工作任务的分解、人物分工及进度63.3 关

2、键问题6第四章 程序系统的结构74.1 用例图设计74.2 类图设计84.3 包图设计94.4 构件图设计94.5 活动图设计104.6 顺序图设计104.7 状态图设计114.8合作图设计11第五章 程序设计说明115.1 程序描述115.2 功能125.3 运行环境125.4 类及函数说明12第六章 程序测试说明21第七章 程序开发总结22第一章 引言1.1 编写目的该文档的阅读群体是该项目组的全部成员,一方面让所有成员能理解本程序的系统结构,另一方面明确自己的分工,方便在编程的过程中合理运用。1.2背景项目名称: snl编译器项目类型: java小程序任务提出者:陈亮开发者: 陈亮 汤源

3、 吕浩 李春娟 党雪迎用户: 对snl语言编译感兴趣者项目思路来源:随着社会的发展,编译器的开发程序层出不穷,如何让同学能更好的了解编译器的工作过程呢?于是就产生了用java语言编写一个snl编译器,可以让同学们更好的理解编译这门学科的内容,运用所学知识了解编译的过程,使所学的知识得到运用。1.3参考资料uml及建模北京 清华大学出版社 北京交通大学出版社郭宁 面向对象技术与工具 北京 电子工业出版社陈文宇 白忠建 白忠建编译程序的设计与实现北京 高等教育出版社刘磊 等网络资源:第二章 项目概述2.1 工作内容任务名称具体内容需求分析调研报告设计,调研总结,需求分析文档书写面向对象设计面向对象

4、的用例图、类图等设计程序设计程序实现功能函数的设计程序具体实现类的实现,功能函数的实现程序测试程序整体测试,用户测试,测试文档书写2.2主要参加人员项目组组长:陈亮备注:一直担任期末大作业的项目组组长,且具有一定开发经验。项目组成员:汤源 吕浩 李春娟 党雪迎备注: 汤源、吕浩 :成绩优异,具有开发经验。 李春娟、党雪迎:参加过面向对象网站架构的培训,初步学习structs架构的相关知识。2.3产品2.3.1程序程序名称:snl编译器编程语言:java存储程序的媒体形式:硬盘存储2.3.2文件文件夹名:snljava mycompiler说明:compiler.java 主程序cifa中包含词

5、法分析的creattoken.javayufa中包含语法分析的recursion.java备注:单击test.html即可运行本程序。2.4 验收标准根据上课教师对于期末大作业的要求,本项目做到了如下几点:1. 面向对象的设计思想,实现了词法分析的token生成、语法分析的语法树生成和错误的检测。2. 项目组成员分工明确。2.5 完成项目最迟期限本项目的最后完成期限是2009年6月21日第三章 实施计划3.1 接口人员本项目的接口人员为项目组组长陈亮,其主要工作只职能如下:负责确定项目需求。负责与郑晓娟老师交流,定期汇报项目的进展程度。负责与项目组其他成员联系,分配任务,协调各部门的工作。3.

6、2 工作任务的分解、人物分工及进度3.3 关键问题影响整个项目成败的关键问题及对项目的影响:面向对象的思想重新设计程序。影响:以前对于程序设计的思想还都停留在面向过程的思想,产生的问题是代码冗余,安全性欠缺的隐患。于是我们在原来项目的基础上进行重构,用面向对象的思想重寻规划。对于编译程序的实现原理还需重新巩固学习。技术难点:接口的设计。token的产生。语法树的生成风险:由于程序开发周期短,程序员本身开发经验尚浅,只能完成贬义词的词法分析和语法分析部分。第四章 程序系统的结构4.1 用例图设计4.2 类图设计4.3 包图设计4.4 构件图设计4.5 活动图设计4.6 顺序图设计4.7 状态图设

7、计4.8合作图设计第五章 程序设计说明5.1 程序描述snl编译器把snl源程序编译成虚拟目标机上的目标程序(现阶段只完成了词法分析和语法分析阶段),然后再由解释程序对该目标程序进行解释执行,才能得到最终的运行结果。5.2 功能功能结构框图(蓝色为已完成部分,红色为未完成部分):词法分析程序:词法分析是编译过程的第一阶段。它的任务是对输入的字符串形式的源程序按顺序进行扫描,根据snl语言的语法规则识别具有独立意义的单词(符号),并输出与其等价的token序列。语法分析程序: 语法分析是编译程序的第二阶段,也是编译程序的核心部分。它的任务是,根据snl语言的语法规则,对源程序进行语法检查,并识别

8、出相应的语法成分。按照snl编译程序的模型,语法分析的输入时从词法分析器输出的源程序的token序列的形式,然后根据语言的文法规则进行分析处理,输出无语法错误的语法成分,表示成语法树的形式。5.3 运行环境硬件: 个人电脑1台。操作系统类型:windows xp os。应用软件: myeclipse,jdk1.6,ie浏览器等主要适合中小型java程序开发的软件。5.4 类及函数说明一 compiler.javapiler 主函数init()结构布局actionperformed()接收操作事件的接口2.mywindow 窗体类二 creattoken.java1.tokentype 定义to

9、ken类型2.chainnodetype 定义指针3.creattoken 总程序处理函数名 creattoken(string s) 功 能 构造函数函数名 gettokenlist功 能 取得token序列函数说 明 函数从源文件字符串序列中获取所有token序列,使用确定性有限自动机dfa,采用直接转向法超前读字符,对保留字采用查表方式识别产生词法错误时候,仅仅略过产生错误的字符,不加改正函数名 getnextchar功 能 取得下一非空字符函数说 明 读取一个字节的数据,到达文件尾时,eof为true函数名 ungetnextchar功 能 字符回退函数说 明 回退一个字节的数据函数名

10、 isdigit功 能 检查参数c是不是数字函数名 isalpha功 能 检查参数c是不是字母函数名 reservedlookup功 能 保留字查找函数说 明 使用线性查找,查看一个标识符是否是保留字标识符,如果在保留字表中则返回相应单词,否则返回单词id 函数名 copy功 能 将b中的信息拷贝到a.token中。函数名 returntokenlist功 能 将token序列输出,显示在文件中。说 明 用于显示词法分析结果 三 recursion.javatreenode 语法树结点的定义attr 记录语法树节点其他属性arrayattr 记录数组类型的属性procattr 记录过程的属性e

11、xpattr 记录表达式的属性tokentype token序列的定义recursion 总程序的处理 函数名 program功 能 总程序的处理函数产生式 < program > := programhead declarepart programbody .说 明 函数根据文法产生式,调用相应的递归处理函数,生成语法树节点,语法树的根节点的第一个子节点指向程序头部分programhead,declarapart为programhead的兄弟节点,程序体部分programbody为declarepart的兄弟节点.函数头部分函数名 programhead 功 能 程序头的处理函数

12、产生式 < programhead > := program programname 说 明 函数根据文法产生式,调用相应的递归处理函数,生成语法树节点 声明部分函数名 declarepart功 能 声明部分的处理产生式 < declarepart > := typedec vardec procdec说 明 函数根据文法产生式,调用相应的递归处理函数,生成语法树节点类型声明部分函数名 typedec功 能 类型声明部分的处理产生式 < typedec > := | typedeclaration说 明 根据文法产生式,调用相应的递归处理函数,生成语法树节点

13、函数名 typedeclaration功 能 类型声明部分的处理函数产生式 < typedeclaration > := type typedeclist说 明 函数根据文法产生式,调用相应的递归处理函数,生成语法树节点 */函数名 typedeclist功 能 类型声明部分的处理函数产生式 < typedeclist > := typeid = typename ; typedecmore说 明 函数根据文法产生式,调用相应的递归处理函数,生成语法树节点函数名 typedecmore功 能 类型声明部分的处理函数产生式 < typedecmore > :=

14、 | typedeclist说 明 函数根据文法产生式,调用相应的递归处理函数,生成语法树节点函数名 typeid功 能 类型声明部分的处理函数产生式 < typeid > := id说 明 函数根据文法产生式,调用相应的递归处理函数,生成语法树节点函数名 typename功 能 类型声明部分的处理产生式 < typename > := basetype | structuretype | id说 明 函数根据文法产生式,调用相应的递归处理函数,生成语法树节点函数名 basetype功 能 类型声明部分的处理函数产生式 < basetype > := int

15、eger | char 说 明 函数根据文法产生式,调用相应的递归处理函数,生成语法树节点函数名 structuretype功 能 类型声明部分的处理函数产生式 < structuretype > := arraytype | rectype说 明 函数根据文法产生式,调用相应的递归处理函数,生成语法树节点函数名 arraytype功 能 类型声明部分的处理函数产生式 < arraytype > := array low.top of basetype说 明 函数根据文法产生式,调用相应的递归处理函数,生成语法树节点函数名 rectype功 能 类型声明部分的处理函数产

16、生式 < rectype > := record fielddeclist end说 明 函数根据文法产生式,调用相应的递归处理函数,生成语法树节点函数名 fielddeclist */功 能 类型声明部分的处理函数 */产生式 < fielddeclist > := basetype idlist ; fielddecmore | arraytype idlist; fielddecmore 说 明 函数根据文法产生式,调用相应的递归处理函数,生成语法树节点 函数名 fielddecmore功 能 类型声明部分的处理函数产生式 < fielddecmore &g

17、t; := | fielddeclist 说 明 函数根据文法产生式,调用相应的递归处理函数,生成语法树节点函数名 idlist功 能 类型声明部分的处理函数产生式 < idlist > := id idmore 说 明 函数根据文法产生式,调用相应的递归处理函数,生成语法树节点函数名 idmore 功 能 类型声明部分的处理函数产生式 < idmore > := | , idlist 说 明 函数根据文法产生式,调用相应的递归处理函数,生成语法树节点变量声明部分函数名 vardec功 能 变量声明部分的处理产生式 < vardec > := | varde

18、claration 说 明 函数根据文法产生式,调用相应的递归处理函数,生成语法树节点函数名 vardeclaration功 能 变量声明部分的处理函数产生式 < vardeclaration > := var vardeclist 说 明 函数根据文法产生式,调用相应的递归处理函数,生成语法树节点函数名 vardeclist功 能 变量声明部分的处理函数产生式 < vardeclist > := typename varidlist; vardecmore 说 明 函数根据文法产生式,调用相应的递归处理函数,生成语法树节点函数名 vardecmore功 能 变量声明部

19、分的处理函数产生式 < vardecmore > := | vardeclist 说 明 函数根据文法产生式,调用相应的递归处理函数,生成语法树节点函数名 varidlist功 能 变量声明部分的处理函数产生式 < varidlist > := id varidmore 说 明 函数根据文法产生式,调用相应的递归处理函数,生成语法树节点函数名 varidmore功 能 变量声明部分的处理函数产生式 < varidmore > := | , varidlist 说 明 函数根据文法产生式,调用相应的递归处理函数,生成语法树节点过程声明部分函数名 procdec

20、功 能 函数声明部分的处理产生式 < procdec > := | procdeclaration 说 明 函数根据文法产生式,调用相应的递归处理函数,生成语法树节点/函数名 procdeclaration功 能 函数声明部分的处理函数产生式 < procdeclaration > := procedure procname(paramlist); procdecpart procbody procdecmore说 明 函数根据文法产生式,调用相应的递归处理函数,生成语法树节点函数名 procdecmore功 能 更多函数声明中处理函数产生式 < procdecm

21、ore > := | procdeclaration 说 明 函数根据文法产生式,调用相应的递归处理函数,生成语法树节点函数名 paramlist功 能 函数声明中参数声明部分的处理函数产生式 < paramlist > := | paramdeclist 说 明 函数根据文法产生式,调用相应的递归处理函数,生成语法树节点函数名 paramdeclist功 能 函数声明中参数声明部分的处理函数/产生式 < paramdeclist > := param parammore 说 明 函数根据文法产生式,调用相应的递归处理函数,生成语法树节点函数名 parammore

22、功 能 函数声明中参数声明部分的处理函数产生式 < parammore > := | ; paramdeclist 说 明 函数根据文法产生式,调用相应的递归处理函数,生成语法树节点函数名 param功 能 函数声明中参数声明部分的处理函数产生式 < param > := typename formlist | var typename formlis 说 明 函数根据文法产生式,调用相应的递归处理函数,生成语法树节点函数名 formlist功 能 函数声明中参数声明部分的处理函数产生式 < formlist > := id fidmore 说 明 函数根据

23、文法产生式,调用相应的递归处理函数,生成语法树节点函数名 fidmore功 能 函数声明中参数声明部分的处理函数产生式 < fidmore > := | , formlist 说 明 函数根据文法产生式,调用相应的递归处理函数,生成语法树节点函数名 procdecpart功 能 函数中的声明部分的处理函数产生式 < procdecpart > := declarepart 说 明 函数根据文法产生式,调用相应的递归处理函数,生成语法树节点函数名 procbody功 能 函数体部分的处理函数产生式 < procbody > := programbody 说 明

24、 函数根据文法产生式,调用相应的递归处理函数,生成语法树节点函数体部分函数名 programbody功 能 程序体部分的处理/产生式 < programbody > := begin stmlist end 说 明 函数根据文法产生式,调用相应的递归处理函数,生成语法树节点函数名 stmlist功 能 语句部分的处理函数产生式 < stmlist > := stm stmmore 说 明 函数根据文法产生式,调用相应的递归处理函数,生成语法树节点函数名 stmmore功 能 语句部分的处理函数产生式 < stmmore > := | ; stmlist 说

25、明 函数根据文法产生式,调用相应的递归处理函数,生成语法树函数名 stm功 能 语句部分的处理函数产生式 < stm > := conditionalstm if | loopstm while | inputstm read | outputstm write | returnstm return | id asscall id 说 明 函数根据文法产生式,调用相应的递归处理函数,生成语法树节点函数名 asscall功 能 语句部分的处理函数产生式 < asscall > := assignmentrest :=,lmidparen,dot | callstmrest

26、 ( 说 明 函数根据文法产生式,调用相应的递归处理函数,生成语法树节点函数名 assignmentrest功 能 赋值语句部分的处理函数产生式 < assignmentrest > := varimore : = exp 说 明 函数根据文法产生式,调用相应的递归处理函数,生成语法树节点函数名 conditionalstm功 能 条件语句部分的处理函数产生式 <conditionalstm>:=if relexp then stmlist else stmlist fi 说 明 函数根据文法产生式,调用相应的递归处理函数,生成语法树节点函数名 loopstm功 能 循

27、环语句部分的处理函数产生式 < loopstm > := while relexp do stmlist endwh说 明 函数根据文法产生式,调用相应的递归处理函数,生成语法树节点函数名 inputstm功 能 输入语句部分的处理函数产生式 < inputstm > := read(id)说 明 函数根据文法产生式,调用相应的递归处理函数,生成语法树节点函数名 outputstm功 能 输出语句部分的处理函数产生式 < outputstm > := write(exp说 明 函数根据文法产生式,调用相应的递归处理函数,生成语法树节点函数名 returnst

28、m功 能 返回语句部分的处理函数产生式 < returnstm > := return(exp)说 明 函数根据文法产生式,调用相应的递归处理函数,生成语法树节点函数名 callstmrest功 能 函数调用语句部分的处理函数产生式 < callstmrest > := (actparamlist)说 明 函数根据文法产生式,调用相应的递归处理函数,生成语法树节点函数名 actparamlist功 能 函数调用实参部分的处理函数产生式 < actparamlist > := | exp actparammore 说 明 函数根据文法产生式,调用相应的递归处理

29、函数,生成语法树节点函数名 actparammore功 能 函数调用实参部分的处理函数产生式 < actparammore > := | , actparamlist说 明 函数根据文法产生式,调用相应的递归处理函数,生成语法树节点表达式部分函数名 exp功 能 表达式处理函数产生式 exp := simple_exp | 关系运算符 simple_exp说 明 函数根据文法产生式,调用相应的递归处理函数,生成语法树节点函数名 simple_exp功 能 表达式处理产生式 simple_exp := term | 加法运算符 term说 明 函数根据文法产生式,调用相应的递归处理函

30、数,生成语法树节点函数名 term功 能 项处理函数产生式 < 项 > := factor | 乘法运算符 factor说 明 函数根据文法产生式,调用相应的递归处理函数,生成语法树节点函数名 factor功 能 因子处理函数产生式 factor := intc | variable | ( exp )说 明 函数根据文法产生式,调用相应的递归处理函数,生成语法树节点函数名 variable功 能 变量处理函数产生式 variable := id varimore说 明 函数根据文法产生式,调用相应的递归处理函数,生成语法树节点函数名 varimore功 能 变量处理产生式 varimore := | exp | . fieldvar dot 说 明 函数根据文法产生式,调用相应的递归处理函数,生成语法树节点函数名 fieldvar功 能 变量处理函数产生式 fieldvar := id fieldvarmore 说 明 函数根据文法产生式,调用相应的递归处理函数,生成语法树节点函数名 fieldvarmore功 能 变量处理函数 产生式 fieldvarmore := | exp 说 明 函数根据文法产生式,调用相应的递归处理函数,生成语法树节点函数名 match功 能 终极符匹配处理函数说 明 函数参数e

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论