javascript - 如何将自定义 AST 转换为 JS 代码

标签 javascript code-generation abstract-syntax-tree esprima babel-babylon

我目前正在根据我设计的新语言规范生成自定义 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/

相关文章:

static-analysis - 通过静态分析检测缺少 if/else 语句

javascript - 如何使用连接Servlet的jQuery AJAX更改JSP页面内容?

javascript - 在 Vue.js v2 中动态渲染子组件

c# - Roslyn 源生成器能否发现 IDE 的间距/等首选项?

eclipse - 自定义 eclipse 生成的代码

firefox - 如何在Firefox中查看 “generated HTML code”?

python - 成员变量的注解在哪里

c - 如何在 ANTLR 中为 C 解析器实现词法分析器 hack

javascript - 监视所有当前和 future 窗口+选项卡的窗口打开、关闭、DOMContentLoaded 事件

javascript - 唯一ID计数器