Rhino AST和函数嵌套在变量中

时间:2013-09-18 13:56:34

标签: javascript parsing rhino abstract-syntax-tree

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

因此脚本是:

  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。 真的很难走过这个结构。 谢谢你的阅读。

1 个答案:

答案 0 :(得分:0)

遍历ASTNode,查找 FunctionDeclaration ,并使用它的getName()获取标识符。