2011-11-24 67 views
5

是否可以將AST轉換回CoffeeScript而不是JavaScript?我工作的一個項目基本上需要將所有CoffeeScript轉換爲AST,分析AST,然後將AST的部分內容轉換回CoffeeScript。我明白,對於原始代碼來說,轉換會是'有損'的,但這沒關係。如何將CoffeeScript AST編譯爲CoffeeScript而不是JavaScript?

我真的很想避免必須將這些部分編譯成JavaScript,然後返回到CoffeeScript。

回答

4

見round_trip.coffee。

+0

這看起來很有希望!雖然我有點過頭了,但是... 如何(在瀏覽器環境中)我能夠輸入部分AST並接收coffeescript代碼?這甚至有可能嗎?謝謝! – gkz

3

這是可能的,但它需要你玩Coffeescript的源代碼。您需要熟悉Coffeescript進行標記化的方式,以及它如何將令牌轉化爲AST。有問題的源代碼在Github的coffee-script/src

如果您查看文件coffee-script/src/nodes.coffee,您會看到一些Node子類,每個子類都有自己的編譯函數(如compile(),compileNode()等)。這些定義了樹如何轉換爲JavaScript代碼。如果您想要生成Coffeescript代碼,則需要在項目的自己的分支上覆蓋所有這些代碼。

我並不涵蓋所有情況,但它是一個開始:在CoffeeCoffee項目(我是作者)