379入門建議
當(dāng)你clone null哥給的資源后,打開文件大概是這個(gè)樣子的。
里面有l(wèi)ecture,然后一個(gè)exe文件,milestone文件,許多壓縮包,以及一個(gè)tan-S的文件。
項(xiàng)目實(shí)際上就是讀入 .tan文件,然后把他們轉(zhuǎn)化成 .asm,然后把 .asm交給一個(gè)叫做ASM的機(jī)器去跑。
這個(gè)exe我沒有使用過,應(yīng)該是模擬ASM的東西,然后milestone就是你要完成的人物,有時(shí)候milestone沒有把之前版本的一些代碼細(xì)節(jié)去掉,比如imm,所以用更新的就好。
lecture里面有一節(jié)(Lecture 7a)是介紹ASM的,那個(gè)看一下,其他的看不看隨你。

然后點(diǎn)進(jìn)tan-S,你會(huì)發(fā)現(xiàn)這個(gè)東西是用eclipse寫的,你可以選擇使用eclipse,也可以選擇使用Intellij,如果是Intellij的話,記得用導(dǎo)入外部的那個(gè)選項(xiàng),具體問GPT,我忘了。

測(cè)試文件需要自己寫,然后null哥幫你寫一個(gè)開源的emulator,這個(gè)可以幫你debug,然后幫你寫了regression test,但是像什么token,parser階段的,測(cè)試需要你自己寫。
一開始老師給你就已經(jīng)提供了一個(gè)可以用的編譯器了,它支持tan-0,在milestone里面你可以找到他。你要做的,就是不斷的拓展這個(gè)編譯器。
下面大致介紹一下里面的東西。
ASM_Emulator,他是學(xué)生寫的一個(gè)ASM模擬器。還有一些僅供你參考的示例代碼。(他們實(shí)際上并不能工作,只是體現(xiàn)大致思想。)
然后這個(gè)bin好像是Java編譯自動(dòng)生成的,不管他。
input是你程序的測(cè)試集,不同階段用的是不同的測(cè)試集,這個(gè)要自己調(diào)。

如果用eclipse可能會(huì)發(fā)現(xiàn)他已經(jīng)幫你配好了。
output是你輸出的地方,tan編譯出來的asm會(huì)輸出到這里。

runConfiguration 應(yīng)該也是eclipse的,不管他。
src是你代碼在的地方。

application是老師幫你debug寫的一些輔助方法,比如打印AST,Token之類的,如果要知道這個(gè)項(xiàng)目的骨架,可以用debug跑一跑,看看都經(jīng)歷了什么。

這個(gè)tests從來沒用過,不知道是干什么的。希望有人能補(bǔ)充。
之后的文件夾就比較符合編譯器的流程了。大致是一個(gè)過程就有一個(gè)文件夾塞對(duì)應(yīng)的代碼,然后一個(gè)文件夾塞對(duì)應(yīng)的類。相信你可以自己找出哪個(gè)是哪個(gè),這也是閱讀的一部分。命名還是很清晰的。
ps. 這個(gè)inputHandler 他在代碼里面幾乎不會(huì)被用到。我花了好久時(shí)間看也沒看懂。也許以后會(huì)懂。
做完之后可以看看031最后一節(jié)。