是否可以将AST转换回CoffeeScript而不是JavaScript?我工作的一个项目基本上需要将所有CoffeeScript转换为AST,分析AST,然后将AST的部分内容转换回CoffeeScript。我明白,对于原始代码来说,转换会是'有损'的,但这没关系。如何将CoffeeScript AST编译为CoffeeScript而不是JavaScript?
我真的很想避免必须将这些部分编译成JavaScript,然后返回到CoffeeScript。
是否可以将AST转换回CoffeeScript而不是JavaScript?我工作的一个项目基本上需要将所有CoffeeScript转换为AST,分析AST,然后将AST的部分内容转换回CoffeeScript。我明白,对于原始代码来说,转换会是'有损'的,但这没关系。如何将CoffeeScript AST编译为CoffeeScript而不是JavaScript?
我真的很想避免必须将这些部分编译成JavaScript,然后返回到CoffeeScript。
见round_trip.coffee。
这是可能的,但它需要你玩Coffeescript的源代码。您需要熟悉Coffeescript进行标记化的方式,以及它如何将令牌转化为AST。有问题的源代码在Github的coffee-script/src。
如果您查看文件coffee-script/src/nodes.coffee,您会看到一些Node子类,每个子类都有自己的编译函数(如compile()
,compileNode()
等)。这些定义了树如何转换为JavaScript代码。如果您想要生成Coffeescript代码,则需要在项目的自己的分支上覆盖所有这些代码。
我并不涵盖所有情况,但它是一个开始:在CoffeeCoffee项目(我是作者)
这看起来很有希望!虽然我有点过头了,但是... 如何(在浏览器环境中)我能够输入部分AST并接收coffeescript代码?这甚至有可能吗?谢谢! – gkz