川大编译原理课程设计报告.doc

  1. 1、本文档共81页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
川大编译原理课程设计报告

编译原理课程设计报告 课题名称: C-Minus词法扫描器及语法分析器实现 提交文档学生姓名: 提交文档学生学号: 同组 成 员 名 单: 无 指导 教 师 姓 名: 金 军 指导教师评阅成绩: 指导教师评阅意见: . . 提交报告时间:2014年 6月 20日 目录 1 课程设计目标 3 2 分析与设计 3 2.1 程序结构 3 2.2 程序流程 4 3 词法分析 4 3.1 代码结构分析 5 3.2 Token定义 6 3.2.1 Token的定义和类型 6 3.2.2 Token的种别码 6 3.3 DAF分析 7 3.3.1 删除注释DFA 7 3.3.2 词法分析DFA 9 4 语法分析 13 4.1 代码结构分析 13 4.2 分析树节点定义 14 4.2.1 树节点定义和类型 14 4.2.2 各类型节点的描述 15 4.3 递归向下语法分析 16 4.3.1 C-Minus文法 16 4.3.2 递归向下分析过程 16 5 测试结果 33 5.1 流程 33 5.2 词法分析结果 34 5.3 词法分析出错 39 5.4 语法分析结果· 41 5.5 语法分析出错 44 6 创新与总结 45 6.1 程序创新点 45 6.1.1程序报错处理 45 6.1.2语法分析程序优化处理 45 6.1.3函数中数组参数改进 47 6.2 总结 50 7 附录 50 7.1 scanner.h源文件 50 7.2 scanner.cpp源文件 52 7.3 parser.h源文件 61 7.4 parser.cpp源文件 62 1 课程设计目标 结合各章节的构造编译程序的基本理论,用C或C++语言,实现一个 C-Minus 小编译程序(包括词法分析,语法分析等重要子程序)。 本编译器包括以下两个模块: 设计词法分析器: 利用手工实现方法实现,设计各类别单词的状态转换图,并为不同类别的单词设计种别码。将词法分析器设计成供语法分析器调用的子程序。功能包括: 将不翻译的注释等符号先滤掉,转换成一个没有注释的程序 能够分离并收集程序中字符串的各个单词,并保存与单词记号相关的信息; (2)语法分析 利用学习过递归向下的分析方法等,实现对表达式、各种说明语句、控制语句进行语法分析。若语法正确,则用语法制导翻译法进行语义翻译;生成并打印出语法树;若语法错误,要求指出出错性质和出错位置(行号)。 2 分析与设计 2.1 程序结构 本节主要分析程序的代码结构和代码工程文件的划分。(程序由两个类组成: Scanner类和Parser类,分别为词法分析和语法分析类。工程分为四个文件:scanner.h、scanner.cpp、parser.h、parser.cpp,分别对应 本程序采用C++语言以面向对象的思想编写,程序分为两部分:词法分析(Scanner)和语法分析(Parser),分别将两个处理阶段封装成Scanner类和Parser类,两个类各司其职,分别完成词法分析和语法分析的任务。Scanner类主要的工作是过滤注释、词法分析获取Token。Parser类的主要工作是根据Scanner类词法分析之后的Token进行语法分析,生成语法树,最后并输出语法树。在处理过程中,Scanner类的对象作为Parser类的一个成员变量,供Parser调用。 本程序myCompiler包含四个文件,其具体功能如下: 2.2 程序流程 在程序中,Scanner类的对象(scanner)作为Parser类中的一个成员变量,配合Parser类进行语法分析。它们的关系是这样的:Parser类的一个成员变量scanner首先对源程序删除注释,然后进行词法分析获取所有Token,并将获取的Token存储在scanner对象的tokenList(vector类型)中。然后Parser类的语法分析程序就根据tokenList中的Token进行语法分析,生成语法树,最后打印语法树。在这流程之间如果出现分析错误,怎输出相应的错误信息。本程序的流程图如下图: 3 词法分析 3.1 代码结构

文档评论(0)

小教资源库 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档