寻找用于解析JavaScript的Java / JDK API(包括Nashorn Extensions)我偶然发现this Gist,根据内联评论需要运行JDK 9。有没有可靠的方法在JDK 8的当前版本或计划版本上完成相同的工作?
答案 0 :(得分:9)
Nashorn Parser API(http://openjdk.java.net/jeps/236)是jdk9特定的API。在jdk8或jdk8更新中,支持脚本解析器功能。
负载( “犀牛:parser.js”);
并从脚本中调用“parse”函数。此函数返回一个JSON对象,该对象表示已解析脚本的AST。
请参阅此示例:http://hg.openjdk.java.net/jdk8u/jdk8u-dev/nashorn/file/bfea11f8c8f2/samples/astviewer.js
答案 1 :(得分:-1)
虽然你绝对可以通过Nashorn的JavaScript使用解析器,但在Java中使用它通过JAVA API更好
import jdk.nashorn.api.scripting.ScriptUtils;
import jdk.nashorn.internal.runtime.Context;
import jdk.nashorn.internal.runtime.ECMAException;
import jdk.nashorn.internal.runtime.ErrorManager;
import jdk.nashorn.internal.runtime.options.Options;
// set up the environment
Options options = new Options("nashorn");
options.set("anon.functions", true);
options.set("parse.only", true);
options.set("scripting", true);
ErrorManager errors = new ErrorManager();
Context contextm = new Context(options, errors, Thread.currentThread().getContextClassLoader());
Context.setGlobal(contextm.createGlobal());
// then for each bit of parsing
String parseTree = ScriptUtils.parse(some_code_string, "nashorn", false);