Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Rhino AST和嵌套在变量中的函数_Javascript_Parsing_Rhino_Abstract Syntax Tree - Fatal编程技术网

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

Javascript Rhino AST和嵌套在变量中的函数,javascript,parsing,rhino,abstract-syntax-tree,Javascript,Parsing,Rhino,Abstract Syntax Tree,我只是查看Rhino的AST部分,以解析JS文件来检索所有函数名。 我遇到的问题是,这些函数都是变量的子元素(声明或初始值设定项不确定这两者的int类型是否相同,但不能将Declration强制转换为初始值设定项) 所以剧本是这样的: var myFuncs = { foo:function(){....} bar:function(){ getFooBar:function(){ var foobar = functi

我只是查看Rhino的AST部分,以解析JS文件来检索所有函数名。 我遇到的问题是,这些函数都是变量的子元素(声明或初始值设定项不确定这两者的int类型是否相同,但不能将Declration强制转换为初始值设定项)

所以剧本是这样的:

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

 var somethingElse= {}
我的问题是如何获得myFuncs变量/对象中包含的所有函数的列表

我还没有看到Rhino AST的很好的文档,也许我遗漏了一些东西,但我所拥有的只是Java文档,它在某些地方非常零散。 如果有人有一个很好的链接到使用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/初始值设定项,但是我无法获取要检查的变量名称,因为我有myFuncs变量。 真的很难跨越这个结构。
感谢阅读。

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

我想我离所有function()声明更近了一点,但我找不到命名foo:或bar:这正是我真正需要的。