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

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

ID:45588140

大小:48.30 KB

页数:11页

时间:2019-11-15

信息工程学院编译原理实习指导书(老版)_第1页
信息工程学院编译原理实习指导书(老版)_第2页
信息工程学院编译原理实习指导书(老版)_第3页
信息工程学院编译原理实习指导书(老版)_第4页
信息工程学院编译原理实习指导书(老版)_第5页
资源描述:

《信息工程学院编译原理实习指导书(老版)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、西北农林科技大学信息工程学院2017年3月7日实验二语法分析4实验三语义分析10实验四语义分析20实验五错误处理0附录实验环境和工具错误!未定义书签。错误!未定义书签。错误!未定义书签。MiniC语言实习一词法分析—、实验目的:1.熟悉Javacc工作原理,掌握词法分析相关的类:Token:表示单词的类。每个Token对象的主要成员:intkind表示单词的种别;Stringimage存储了token所代表的内容;intbeginLine表示单词所处的行;intbeginColumn表示单词所处的列。

2、TokenManager:词法分析器,用来识别源程序中的单词序列。SimpleCharStream:词法分析器的输入流。可以指定源程序来白于标准输入还是文件。TokenMgrError:词法错误类,当识别到非法单词吋,弹出的错误对象。Constants:保存已定义所有单词的接口,针对每种单词定义其对应的种别码。2.使用以上的类,编制一个读单词过程,从输入的源程序中,识别出各个具有独立意义的单词,即基本保留字、标识符、常数、运算符、分隔符五大类。并依次输出各个单词的内部编码及单词符号自身值。二、实验预习

3、提示1.词法分析器的功能和输出格式词法分析器的功能是读入源程序,输出单词序列。词法分析器的单词常表示成二元式:(单词种别码,单词在源代码中的字符串)。2.词法分析器需要把对象语言的词法规则全部描述出来,在这我们取C语言子集,它的词法定义如下:(1)关键字KEYWORD讦elseintreturnvoidwhile所有的关键字都是小写。(2)标识符IDENTIFIER标识符的定义采取正则表达式定义方式,标识符由字母、数字、下划线组成,并且首字母不能是数字。(3)分隔符SEPARATER;,{}[]()(

4、4)运算符0PERATOR+-*/><=(5)常数CONSTANT简化为只表示整型常数。(1)词法分析过滤的字符空格“”、制表符“t”、回车5”和换行符“”o三、实验过程和指导:1.准备编译原理的实习借助的javacc插件版本是1.5.33,要求jdk版本是1.7。请提前安装调试好。新建java项目建立一个词法分析包(例如:packagelexical)在lexical包内,“新建”•“其它”・“JavaCCTemplateFile”2.新建一个用于javacc编辑的jj模板文件:(1)(2)(

5、3)(4)创建一个“.jj”文件,如图1所示:令Creates.jj,.jjtor.jtbexamplefileNewJavaCC,JJTreeorJTBfileThiswizardcreatesanewJavaCC,JJTreeorJTBexamplefile.□XJJFolder:parser/srcBrowse...Package:lexicalBrowse...®JJfileQJJTfileOJTBfileType:Static/nonstatic:◎Static〔」NonstaticFile

6、name:Lexicalu上一步(B)下一步(N)>完成(F)图1新建jj模板文件3.在模板文件屮修改第三部分,将“二、实验预习提示”部分的词法规则写入。jj文件的结构/*第一部分*/JDK.VERSION=M1.5M;//JDK版本LOOKAHEAD=1;〃默认,LL(K)static=true;//语法分析霍是否静态〃可以添加一个包名PARSER_BEGIN(AAA)L2packagejjtfile;options5678}培法分析器的属性设置厂第二部分撫/培法分析器的类声明厂第三部分★/词法规毁

7、声明广第四部分*/培法现则实现L4-publicclassAAA5{16&publicstaticvoidmain(Stringargs[])35飼SKIP:/*jjt自动生成,空格和换行等vnB4®TOKEN/*LITERALS*/Q55^TOKEN/*KEY,先于标识符声明*/□嘗TOKEN/*IDENTIFIERS*/□乂PARSER_END(AAA).6*SimpleNodeStart():Q23void9*void11^void>4^void>1^void6*voidExpression()

8、:口AdditiveExpression():口MuitiplixativeExpression():[JUnaryExpression():□Identifier():口Integer():T图2jj模板文件格式1.在熟悉词法分析器工作原理的基础上,在main方法中编写词法分析程序,并输出单词序列。要求:准备好多组测试源程序。四、程序输入/输出示例:1voidmain()2{3while(a>45){4intx?xl;5x=xl+l;6}7}8图3测试

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。