如何将CoffeeScript AST编译为CoffeeScript而不是JavaScript?

时间:2011-11-24 09:33:05

标签: coffeescript abstract-syntax-tree

是否可以将AST转换为CoffeeScript而不是JavaScript?我正在工作的项目基本上需要将所有CoffeeScript转换为AST,分析AST,然后将部分AST转换回CoffeeScript。我知道关于原始代码的转换将是“有损的”,但这没关系。

我真的想避免将这些部分编译成JavaScript然后再回到CoffeeScript。

2 个答案:

答案 0 :(得分:4)

请参阅CoffeeCoffee项目中的round_trip.coffee(我是作者):

我没有涵盖所有案例,但这是一个开始。

答案 1 :(得分:3)

这是可能的,但它需要您使用Coffeescript的源代码。你需要熟悉Coffeescript执行标记化的方式,然后知道它如何将标记转换为AST。有问题的源代码位于Github上的coffee-script/src

如果你查看文件coffee-script/src/nodes.coffee,你会看到一堆Node子类,每个子类都有自己的编译功能(如compile()compileNode()等)。这些定义了树如何变成javascript代码。如果你想要生成Coffeescript代码,你需要在你自己的项目分支上覆盖所有这些代码。