使用Rhino的Javascript解析器,如何获取注释?

我有一些javascript文件,并使用Rhino的javascript解析器解析它。

但我无法得到评论。

我怎样才能收到评论?

这是我的代码的一部分。

运行此代码,“comment”变量为null。 另外,在运行“astRoot.toSource();”时,它只显示javascript代码。 没有评论。 它消失了!

[java code]

public void parser() { AstRoot astRoot = new Parser().parse(this.jsString, this.uri, 1); List statList = astRoot.getStatements(); for(Iterator iter = statList.iterator(); iter.hasNext();) { FunctionNode fNode = (FunctionNode)iter.next(); System.out.println("*** function Name : " + fNode.getName() + ", paramCount : " + fNode.getParamCount() + ", depth : " + fNode.depth()); AstNode bNode = fNode.getBody(); Block block = (Block)bNode; visitBody(block); } System.out.println(astRoot.toSource()); SortedSet comment = astRoot.getComments(); if(comment == null) System.out.println("comment is null"); } 

配置CompilerEnvirons并使用AstRoot.visitAll(NodeVisitor) :

 import java.io.*; import org.mozilla.javascript.CompilerEnvirons; import org.mozilla.javascript.Parser; import org.mozilla.javascript.ast.*; public class PrintNodes { public static void main(String[] args) throws IOException { class Printer implements NodeVisitor { @Override public boolean visit(AstNode node) { String indent = "%1$Xs".replace("X", String.valueOf(node.depth() + 1)); System.out.format(indent, "").println(node.getClass()); return true; } } String file = "foo.js"; Reader reader = new FileReader(file); try { CompilerEnvirons env = new CompilerEnvirons(); env.setRecordingLocalJsDocComments(true); env.setAllowSharpComments(true); env.setRecordingComments(true); AstRoot node = new Parser(env).parse(reader, file, 1); node.visitAll(new Printer()); } finally { reader.close(); } } } 

Java 6; 犀牛1.7R4