欢迎光临散文网 会员登陆 & 注册

379入门建议

2023-09-26 19:11 作者:降星驰  | 我要投稿

当你clone null哥给的资源后,打开文件大概是这个样子的。

里面有lecture,然后一个exe文件,milestone文件,许多压缩包,以及一个tan-S的文件。

项目实际上就是读入 .tan文件,然后把他们转化成 .asm,然后把 .asm交给一个叫做ASM的机器去跑。

这个exe我没有使用过,应该是模拟ASM的东西,然后milestone就是你要完成的人物,有时候milestone没有把之前版本的一些代码细节去掉,比如imm,所以用更新的就好。

lecture里面有一节(Lecture 7a)是介绍ASM的,那个看一下,其他的看不看随你。

然后点进tan-S,你会发现这个东西是用eclipse写的,你可以选择使用eclipse,也可以选择使用Intellij,如果是Intellij的话,记得用导入外部的那个选项,具体问GPT,我忘了。

测试文件需要自己写,然后null哥帮你写一个开源的emulator,这个可以帮你debug,然后帮你写了regression test,但是像什么token,parser阶段的,测试需要你自己写。

一开始老师给你就已经提供了一个可以用的编译器了,它支持tan-0,在milestone里面你可以找到他。你要做的,就是不断的拓展这个编译器。

下面大致介绍一下里面的东西。

ASM_Emulator,他是学生写的一个ASM模拟器。还有一些仅供你参考的示例代码。(他们实际上并不能工作,只是体现大致思想。)

然后这个bin好像是Java编译自动生成的,不管他。

input是你程序的测试集,不同阶段用的是不同的测试集,这个要自己调。

如果用eclipse可能会发现他已经帮你配好了。

output是你输出的地方,tan编译出来的asm会输出到这里。

runConfiguration 应该也是eclipse的,不管他。

src是你代码在的地方。

application是老师帮你debug写的一些辅助方法,比如打印AST,Token之类的,如果要知道这个项目的骨架,可以用debug跑一跑,看看都经历了什么。

这个tests从来没用过,不知道是干什么的。希望有人能补充。

之后的文件夹就比较符合编译器的流程了。大致是一个过程就有一个文件夹塞对应的代码,然后一个文件夹塞对应的类。相信你可以自己找出哪个是哪个,这也是阅读的一部分。命名还是很清晰的。

ps. 这个inputHandler 他在代码里面几乎不会被用到。我花了好久时间看也没看懂。也许以后会懂。

做完之后可以看看031最后一节。

379入门建议的评论 (共 条)

分享到微博请遵守国家法律