Rhino AST和嵌套在变量中的函数

问题描述 投票:1回答:1

我只是查看Rhino的AST部分以解析一个JS文件来检索所有函数名称。我的问题是这些函数都是变量的所有子元素(声明或初始化器不确定它们都具有相同的类型int,但是您无法将Declration转换为初始化器)。

因此脚本是:

  var myFuncs = {
       foo:function(){....}
       bar:function(){
          getFooBar:function(){
            var foobar = function(){};
            return foobar;
          }
       }
    }

 var somethingElse= {}

我的问题是如何获取myFuncs变量/对象中包含的所有函数的列表;

我还没有看到关于Rhino AST的很好的文档,也许我在某处缺少一些东西,但是我所拥有的只是Java Doc,它在某些地方非常不完整。如果有人对使用Rhino AST的教程有很好的链接,如果答案不简单,我将不胜感激。

这是我的解析代码

CompilerEnvirons compilerEnvirons = new CompilerEnvirons();
compilerEnvirons.setRecordingComments(true);
compilerEnvirons.setRecordingLocalJsDocComments(true);
compilerEnvirons.setStrictMode(true);

File scriptFile = new File("C:/myJsFile.js");
FileReader fr = new FileReader(scriptFile);
AstNode astNode = new Parser(compilerEnvirons).parse(fr, null, 1);
AstRoot astRoot = astNode.getAstRoot();

[使用astRoot,我尝试了各种get语句,例如getSymbols(),getStatements()和getFunctions(),但是这些并没有给我我要达到的功能。

我也尝试过使用NodeVisitor进行访问,但是当寻找函数时,这为我提供了文档中唯一在变量中[的函数,因此没有嵌套在变量中的内容,这正是我要寻找的。如果我访问变量,则可以找到VariableDeclaration / Initializers,但随后无法获取变量名称以检查是否具有myFuncs var。实在难以克服这种结构。感谢您的阅读。

javascript parsing rhino abstract-syntax-tree
1个回答
0
投票
遍历ASTNode,查找

FunctionDeclaration,并使用它的getName()获取标识符。

© www.soinside.com 2019 - 2024. All rights reserved.