3 回答

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超2個(gè)贊
看一下語(yǔ)言服務(wù)包,尤其是ast。
我的猜測(cè)是,如果您對(duì)解析和代碼生成技術(shù)都沒(méi)有足夠的了解,那么這將是一個(gè)困難的項(xiàng)目。
祝你好運(yùn)!

TA貢獻(xiàn)1982條經(jīng)驗(yàn) 獲得超2個(gè)贊
至于“我應(yīng)該繼續(xù)還是最好不要”的問(wèn)題:為什么首先要這樣做?
如果這是純粹的學(xué)習(xí)活動(dòng),那么您不需要詢(xún)問(wèn)我們是否值得。您想學(xué)習(xí),所以繼續(xù)前進(jìn)。
如果打算將其用作實(shí)用工具,那么我的建議是不要這樣做。具有行業(yè)實(shí)力的工具來(lái)執(zhí)行此類(lèi)轉(zhuǎn)換可能會(huì)很有用,但我想您不會(huì)走那么遠(yuǎn)??紤]到這一點(diǎn),在Go中手動(dòng)重寫(xiě)Python代碼可能更富有成果。
假定對(duì)Go進(jìn)行編譯有任何真正的好處;當(dāng)前的測(cè)試表明,使用Stackless Python可以獲得更好的性能和類(lèi)似的代碼結(jié)構(gòu)。

TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超8個(gè)贊
Boo解決方案
您是否正在嘗試制作一種可以編譯成Go的類(lèi)似python的語(yǔ)言?這似乎是最明智的做法,因?yàn)槟鷮⑾胍鎏囟ㄓ贕o的事情(以利用Go功能)。
看看pyparsing。它包括一個(gè)完整的python解析器的示例,但您可能不想這樣做。
您想增量地構(gòu)建轉(zhuǎn)換器/轉(zhuǎn)換器,所以要增量地構(gòu)建解析器,否則可能會(huì)阻塞AST。好的,您可以解析所有內(nèi)容,而忽略不了解的內(nèi)容,但這不是編譯器的好行為。
您可以從解析基本算術(shù)開(kāi)始。
派熱克斯解決方案
這類(lèi)似于Boo解決方案,但難度更大。首先使Boo解決方案生效。然后學(xué)習(xí)生成包裝器代碼,以便您的Go和python部分可以一起工作。
PyPy解決方案
完整的Python-Go編譯器?祝你好運(yùn)。您將需要它。
- 3 回答
- 0 關(guān)注
- 345 瀏覽
添加回答
舉報(bào)