我需要使用 Java 和 Rhino 搜索 Javascript 文件中出现的所有特定 Javascript 函数。我已成功使用访问者模式浏览所有出现的函数调用(请参见下面的代码),但我无法检索被调用函数的名称。正确的做法是什么?
package it.dss.javascriptParser;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
import org.mozilla.javascript.Parser;
import org.mozilla.javascript.ast.AstNode;
import org.mozilla.javascript.ast.FunctionCall;
import org.mozilla.javascript.ast.NodeVisitor;
public class JavascriptParser {
public static void main(String[] args) throws IOException {
class Printer implements NodeVisitor {
public boolean visit(AstNode node) {
if (node instanceof FunctionCall) {
// How do I get the name of the function being called?
}
return true;
}
}
String file = "/dss2.js";
Reader reader = new FileReader(file);
try {
AstNode node = new Parser().parse(reader, file, 1);
node.visit(new Printer());
} finally {
reader.close();
}
}
}
最佳答案
FunctionCall类代表函数的调用,其目标是函数名称(org.mozilla.javascript.ast.Name)。
要获取调用函数的名称,请使用:
AstNode target = ((FunctionCall) node).getTarget();
Name name = (Name) target;
System.out.println(name.getIdentifier());
关于java - 如何使用 Java 和 Rhino 查找所有出现的 Javascript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14775697/