我目前正在根据我设计的新语言规范生成自定义 AST。此自定义 AST 包含我设计的不同节点,其中包含我现在生成 JavaScript 代码所需的所有信息。例如:
假设我有一个 customExpressionNode,我希望将其转换为包含几个 if 条件的 JavaScript 函数。
我目前正在研究像 Babylon 和 Esprima 这样的库,以便从我的自定义 AST 生成新的 Javascript AST,但据我所知,这些库使用的 AST 非常复杂。我还想避免将 js 代码打印到几个文件中然后解析和编译它们,所以我的问题是:
有没有更好的方法以编程方式生成符合 JavaScript 的 AST,我可以使用它来生成 JavaScript 代码?
最佳答案
像这样的东西? https://github.com/estools/escodegen
A simple example: the program
escodegen.generate({
type: 'BinaryExpression',
operator: '+',
left: { type: 'Literal', value: 40 },
right: { type: 'Literal', value: 2 }
})
产生字符串
'40 + 2'
.
关于javascript - 如何将自定义 AST 转换为 JS 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49629651/