我目前正在根据我设计的新语言规范生成自定义AST。这个自定义AST包含我设计的不同节点,其中包含我现在生成JavaScript代码所需的所有信息。例如:
假设我有一个customExpressionNode,我希望将其转换为包含几个if条件的JavaScript函数。
我目前正在研究像Babylon和Esprima这样的库来从我的自定义AST生成新的Javascript AST,但是从我所看到的这些库中使用的AST有很多复杂性。我还想避免将js代码打印成几个文件然后解析和编译它们,所以我的问题是:
是否有更好的方法以编程方式生成符合JavaScript的AST,我可以使用它来生成JavaScript代码?
答案 0 :(得分:2)
npm install --save-dev @babel/generator
const { default: generate } = require("@babel/generator");
Identifier(path) {
console.log(generate(path.node).code); // code string
},
答案 1 :(得分:0)
这样的东西? https://github.com/estools/escodegen
一个简单的例子:程序
escodegen.generate({
type: 'BinaryExpression',
operator: '+',
left: { type: 'Literal', value: 40 },
right: { type: 'Literal', value: 2 }
})
生成字符串'40 + 2'
。