前兩個周末寫了《手寫PHP轉(zhuǎn)Python編譯器》的詞法,語法分析部分,上個周末卡文了。

訪問器部分寫了兩次都不滿意,沒辦法,只好停下來,參考一下Python的實現(xiàn)。我實現(xiàn)的部分正好和Python是一個思路,就是生成CST(Concrete syntax tree)之后,再生成AST。由于我想創(chuàng)(tou)新(lan),所以未沒有詳細實現(xiàn)AST,而想繞過AST去生成代碼。這下有點欲速不達了。

先看看Python執(zhí)行代碼的過程:

1.     Tokenizer進行詞法分析,把源程序分解為Token

2.     Parser根據(jù)Token創(chuàng)建CST

3.     將CST轉(zhuǎn)換為AST

4.     將AST編譯為字節(jié)碼

5.     執(zhí)行字節(jié)碼

現(xiàn)在我們要實現(xiàn)第3步。參考一下Python源碼:

/* Transform the CST rooted at node * to the appropriate AST*/mod_ty
PyAST_FromNode(const node *n, PyCompilerF
        
		

網(wǎng)友評論