Nashorn Parser API on JDK 8



为了寻找一个用于解析JavaScript(包括Nashorn扩展)的Java/JDK API,我偶然发现了这个Gist,根据内联注释,它需要运行JDK9。有没有一种可靠的方法可以在JDK8的当前或计划版本上实现同样的功能?

Nashorn Parser API(http://openjdk.java.net/jeps/236)是特定于jdk9的API。在jdk8或jdk8更新中,支持脚本解析器函数。

load("nashorn:parser.js");

并从脚本中调用"parse"函数。此函数返回一个JSON对象,该对象表示解析的脚本的AST。

请参阅此示例:http://hg.openjdk.java.net/jdk8u/jdk8u-dev/nashorn/file/bfea11f8c8f2/samples/astviewer.js

虽然您可以通过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);

最新更新