信息工程学院编译原理实习指导书(老版).docVIP

信息工程学院编译原理实习指导书(老版).doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PAGE PAGE 1 编译原理实验指导书 西北农林科技大学信息工程学院 2017年3月7日 TOC \o 1-4 \h \z \u 实验一 词法分析 1 实验二 语法分析 3 实验三 语义分析1 4 实验四 语义分析2 4 实验五 错误处理 4 附录 5 实验环境和工具 5 MiniC语言 21 实习一 词法分析 一、实验目的: 1. 熟悉Javacc工作原理,掌握词法分析相关的类: Token:表示单词的类。每个Token对象的主要成员:int kind表示单词的种别; String image 存储了token所代表的内容;int beginLine表示单词所处的行;int beginColumn表示单词所处的列。 TokenManager:词法分析器,用来识别源程序中的单词序列。 SimpleCharStream:词法分析器的输入流。可以指定源程序来自于标准输入还是文件。 TokenMgrError:词法错误类,当识别到非法单词时,弹出的错误对象。 Constants:保存已定义所有单词的接口,针对每种单词定义其对应的种别码。 2. 使用以上的类,编制一个读单词过程,从输入的源程序中,识别出各个具有独立意义的单词,即基本保留字、标识符、常数、运算符、分隔符五大类。并依次输出各个单词的内部编码及单词符号自身值。 二、实验预习提示 1. 词法分析器的功能和输出格式 词法分析器的功能是读入源程序,输出单词序列。词法分析器的单词常表示成二元式:(单词种别码,单词在源代码中的字符串)。 2. 词法分析器需要把对象语言的词法规则全部描述出来,在这我们取C语言子集,它的词法定义如下: (1)关键字KEYWORD if else int return void while…….. 所有的关键字都是小写。 (2)标识符IDENTIFIER 标识符的定义采取正则表达式定义方式,标识符由字母、数字、下划线“_”组成,并且首字母不能是数字。 (3)分隔符SEPARATER ; , { } [ ] ( ) (4)运算符OPERATOR + - * / = (5)常数CONSTANT 简化为只表示整型常数。 (6)词法分析过滤的字符 空格“ ”、制表符“\t”、回车“\r” 和换行符“\n”。 三、实验过程和指导: 1. 准备 编译原理的实习借助的javacc插件版本是1.5.33,要求jdk版本是1.7。请提前安装调试好。 2. 新建一个用于javacc编辑的jj模板文件: (1)新建java项目 (2)建立一个词法分析包(例如:package lexical) (3)在lexical 包内,“新建”-“其它”-“JavaCC Template File” (4)创建一个“.jj”文件,如图1所示: 图1 新建jj模板文件 3. 在模板文件中修改第三部分,将“二、实验预习提示”部分的词法规则写入。 图2 jj模板文件格式 4. 在熟悉词法分析器工作原理的基础上,在main方法中编写词法分析程序,并输出单词序列。要求:准备好多组测试源程序。 四、程序输入/输出示例: 图3 测试源代码 图4 词法分析输出1 对照图3,图4显示了词法输出的二元组序列(单词种别码,单词在源代码中的字符串)。图4中最后一行提示词法错误的原因是 实验二 语法分析 一、实验目的: ??? 设计MiniC的上下文无关文法,利用JavaCC生成调试递归下降分析程序,以便对任意输入的符号串进行分析。本次实验的目的主要是加深对递归下降分析法的理解。 二、语法分析器: 按照MiniC语言的语法规则检查词法分析输出的记号流是否符合这些规则,并根据这些规则所体现出的语言中的各种语法结构的层次性。把规则写入到JavaCC的 .jjt文件中,可以生成树状的层次结构。 三、JavaCC: 在JavaCC的文法规范文件中,不仅可以描述语言的语法规范,而且可以描述词法规范,本次实习中,利用JavaCC以MiniC语言构造一个不含语义分析的编译器前端,包括词法分析、语法分析,并要考虑语法分析中的错误恢复问题。通过使用JavaCC, 可以体会LL(k)文法的编写特点,掌握编写JavaCC文法规范文件的方法。 内容:利用JavaCC生成一个MiniC的语法分析器; 要求: 用流的形式读入要分析的C语言程序,或者通过命令行输入源程序。 具有错误检查的能力,如果有能力可以输出错误所在的行号,并简单提示 如果输入的源程序符合MiniC的语法规范,输出该程序的层次结构的语法树 具体实施步骤如下: 1.把MiniC转换为文法如下 〈程序〉 → int main() {〈

文档评论(0)

3388813 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档