`esprima`AST树:如何轻松检测和添加函数参数?

`esprima`AST树:如何轻松检测和添加函数参数?,esprima,Esprima,TL;DR:我想做和那里一样的事情,但是当我用estraverse遍历AST树时,我想用esprima做同样的事情 ESPrima为以下代码提供相同的输出节点: !function (){}() 及 例如,我将遍历AST树。在函数表达式statement节点上,我要检查—如果该节点在函数周围没有paren—我要添加它 那么,如何检测函数参数,如何添加它们?我查看了令牌,但不知道如何将平面令牌对象与指定AST节点的对象相关联。似乎这项任务不是针对esprima,而是针对escodegen es

TL;DR:我想做和那里一样的事情,但是当我用
estraverse
遍历AST树时,我想用
esprima
做同样的事情

ESPrima为以下代码提供相同的输出节点:

!function (){}()

例如,我将遍历AST树。在函数表达式statement节点上,我要检查—如果该节点在函数周围没有paren—我要添加它


那么,如何检测函数参数,如何添加它们?我查看了令牌,但不知道如何将平面令牌对象与指定AST节点的对象相关联。

似乎这项任务不是针对esprima,而是针对escodegen

esprima主页上写着:“EStree项目标准化的合理语法树格式”,这似乎只包括f.e.的AST节点。括号没有典型的子表达式,只有解析器需要它(将包含在解析树中)。您可能需要自己的扩展或在重写时创建paren。似乎这项任务不是针对
esprima
,而是针对
escodegen
可能,但据我所知,没有任何选项可以轻松完成。如果
被调用方
函数表达式
(例如,通过修改
括号
优先级),则可以重写的
调用表达式
部分,并可能在其周围添加括号。不确定这是否会破坏其他东西,例如方法。文档主要涉及一些格式设置,似乎他们对添加括号表达式进行了一些毫无结果的讨论。祝你好运。
!(function (){})()