大作业实验要求
更新记录
实验要求
将2-6次lab的内容进行整合,完成从读文件到执行指令序列的完整过程,并通过测试。
你可以在提供的框架上进行魔改,修改已有类的内部实现以及增加新的包新的类,但是因为平台技术原因请谨记以下巨坑。
不要修改已有类名!!!不要修改已有类名!!!不要修改已有类名!!!
不要改动已有的包结构!!!不要改动已有的包结构!!!不要改动已有的包结构!!!
不要删除已有类!!!不要删除已有类!!!不要删除已有类!!!
实验输入
通过调用测试接口runTest来执行不同的class文件,mainClassName是全限定名,使用了.
作为分隔符而不是/
,而cp则是用户classpath
。
此接口的行为类似于java -cp [cp] [mainClassName]
任何情况下都不要改动这个接口,包括不要在此方法声明中抛出checked Exception,请自己在实现中解决。
实验输出
打印输出结果,实验输出中都包含了hack TestUtil的内容,具体要求请查看关于TestUtil
我们提供的支持
class文件解析以及到JClass的转换,其余全部自行完成
更多具体设计的指令参考大作业测试用例涉及指令
其他注意事项
尽量保留你开发过程中的一些中间产出,例如你的草稿、你记录设计的笔记。
使用git来进行版本控制,每完成一部分就提交一下。
评分规则参见《评分规则》文档
关于TestUtil
TestUtil需要大家在invokestatic中hack如下三个方法,具体操作和lab6类似。
TestUtil.reach(int x)
把参数的值打印出来并换行,效果类似于下面这段代码。
TestUtil.equalInt(int a, int b)
如果参数a和b相等,则返回true,否则抛出异常,其中异常的信息为"[参数1]!=[参数2]"
效果类似于下面这段代码
TestUtil.equalFloat(float a, float b)
效果&规则与 equalInt
类似,只是参数类型为float
尽管我们希望避免无聊的规格化输出,但由于技术原因我们还是不得不作出一些约定。
请注意一次reach要且仅要打印一个换行符
equal的输出中,
!=
的两侧注意不要加空格
最后更新于