在c#中遍历JavaScript AST (Esprima.Net)到Tree
本文关键字:Net Esprima Tree AST 遍历 JavaScript | 更新日期: 2023-09-27 18:12:26
我用了Esprima。Net (https://github.com/Diullei/Esprima.NET)从JavaScript代码中获取AST(抽象语法键)。它返回一个包含许多子节点和子节点的List<Dynamic>
。我想知道如何在c#中遍历所有这些节点以进行分析。基本上我想要得到函数名,变量名&它所处的函数。
例如,在下面的JavaScript代码中:
var y = 45;
function fTest(d)
{
var key: Argument.Callee;
var cars = 'Hello';
for (i = 0; i < cars.length; i++)
{
text += cars[i];
}
}
我希望在结尾得到以下结果:
variable: 45
function:parameter:'d'
function:variable:argument.callee
function:variable:'Hello'
funtion:loop:variable:object
我很难遍历Esprima.Net给出的List<Dynamic>
。有什么想法来处理或遍历这个列表中的树或任何结构,以便我可以访问它们吗?谢谢。
我最终没有使用Esprima。. NET和Esprima JS (http://esprima.org/)。我在网页中添加了Esprima JS,并创建了一个名为Esprima解析器的外部javascript文件来创建AST。一旦我有了AST,我使用estraverse (https://github.com/estools/estraverse)来遍历AST以获得结果。
希望这对别人有帮助。
你可以使用Jint,它是。net中的一个JavaScript解释器,并且有一个Esprima (ES5)的内部端口。它返回与Esprima相同的AST。
或者你可以用另一个Esprima。