- 0
- 0
- 约6.27千字
- 约 6页
- 2026-02-01 发布于北京
- 举报
1实验描述
在开始实验之前,请务必花足够时间阅读完本文档关于实验的描述与约定!
1.1实验目的
学生在完成帮助掌握Java语言开发过程和面向对象设计的预备实验后,本实验是进入编译原理课程实
验的第一个实验。
借助于对一个已有的简单语言处理程序的改进,学生可对语言处理程序有一个初步的认识,并且更深入
地理解DragonBook第2版(DBv2)第2章ASimpleSyntax-DirectedTranslator的内容。
1.2实验环境
本实验基于当前主流的面向对象开发平台,编码风格遵循主流的参考规范。
1.2.1编程语言
Java语言,JDK1.5版本。
1.2.2开发工具
学生可Eclipse、JBuilder等IDE环境,也可直接采用UltraEdit、EditPlus等编辑器在命令行工
作。但提交的实验结果必须独立于特定的IDE,可直接运行在JDK上。
1.2.3编码规范
学生在实验过程中应注意培养规范的编码风格。本实验要求所有源代码严格遵循Sun公司关于Java程
序设计语言的编码规范,参见:
。
完成后的代码应使用JDK附带的文档工具javadoc根据源程序中的文档化注释生成相应的文档。
1.3实验内容
DBv2第2章了一个完整的Java程序,它处理的对象是一种简单的中缀表达式:表达式中的运算量
只能是0~9的单个数字,仅支持加、减运算,且表达式中不允许任何空格、制表符等空白符号。该程
序的惟能是将终端用户输入的一个中缀表达式转换为等价的后缀表达式后输出;若用户输入的表达
式有误,则程序的输出是无意义的,但该程序不会提示用户输入有误。
本文档第2部分详细给出了该程序的源代码,并介绍了为便于学生开展本实验而的一个简单的
实验软装置。
1.3.1实验过程
请按以下步骤改进在本实验的实验软装置中的源程序代码。
Step1、静态成员与非静态成员
DBv2将类Parser中的数据成员(又称域,Field)intlookahead定义为静态的(static),为什
么要这样定义?尝试将lookahead定义为非静态的(即删除之前的修饰符static),看看这是
否会影响程序的正确性。
Step2、消除程序中的尾递归
所谓尾递归(TailRecursion),是指在方法体的最后一条语句是一条直接递归调用语句,即在方法体最
后直接调用了方法自身。原程序中的rest()方法显然是一个含尾递归的递归程序。
试消除原程序中rest()方法的尾递归,即将该程序转换为一个不带尾递归的等价程序,因为将递归转
换为循环通常都会提高程序的执行效率。将一个任意的递归程序转换为循环程序并不简单,但尾递归的
消除往往是很容易的。
Step3、为程序扩展错误处理功能
实验软装置中的程序未处理用户输入的中缀表达式出错的情况,譬如表达式中含有空格、两个运算量之
间缺少运算符、或运算符缺少左(或右)运算量等。
请为你的程序扩展错误处理功能,最低要求是当输入表达式有错时,给出一个报错信息。一个做得更好
的错误处理功能应该能够准确地给出错误的位置和类别(属词法错误亦或属语法错误)。
学有余力的学生还可考虑尝试如何实现出错恢复(ErrorRecovery),即当程序发现一个错误时不是立马
停下来,而是能够从跌倒的地方爬起来,继续分析下去,从而一次运行即可发现的错误。
Step4、为程序增加文档化注释
根据本文档规定的Java编码风格,为你的源代码撰写文档化注释(DocumentationComments),并利用
JDK的javadoc工具生成源程序的HTML文档,并存放在一个名为doc的目录中。
Step5、程序的单元测试(可选)
学有余力的同学可Java开发平台上使用最广泛的开源(OpenSource)单元测试工具JUnit,并使用
该工具完成对改进后程序的单元测试。
可从JUnit的版本。关于JUnit的知识可参见以下URL:
⚫junit.pdf
⚫dept/junit/juni
您可能关注的文档
- 八级上册外研版英语Unit 3:比较级形容词教学设计.pdf
- 会计制度高频考点精讲:会计机构与人员设置及管理.pdf
- 小升初专项训练:行程问题试题.pdf
- 河北齿轮泵性能特点及应用范围.pdf
- 名校真题:行程问题与应用.pdf
- 大咖对话:优秀技术人特质与管理心得.pdf
- 素质教育与未成年人保护对策分析.pdf
- 无线网络系统工程施工.pdf
- 2015年山东省考试申论真题及答案.pdf
- 深基坑支撑结构施工质量通病防治手册.docx
- 人教版九年级英语Unit 4曾害怕课件3a-4c.pdf
- 雅思口语考题回顾:朗阁海外考试研究中心2019年10月10日Part 1考题总结.pdf
- 2026届高三地理一轮复习课件小专题河流袭夺.pptx
- 【名师原创】复习专题5 三角函数 作者:合肥市第八中学 蒲荣飞名师工作室.docx
- 高中数学一轮复习 微专题2 抽象函数.docx
- 高中数学——复习专题4 空间向量与立体几何.docx
- 高中数学一轮复习 微专题3 空间几何体中的截面、轨迹问题.docx
- 高中数学一轮复习 微专题4 空间几何体的最值、范围问题.docx
- 导流洞施工质量通病防治手册.docx
- 江苏省徐州市第一中学、徐市第三中学等五校2026届高三上学期12月月考历史试题含答案.docx
原创力文档

文档评论(0)