JDK 8上的Nashorn Parser API

时间:2015-03-19 20:25:44

标签: java javascript nashorn

寻找用于解析JavaScript的Java / JDK API(包括Nashorn Extensions)我偶然发现this Gist,根据内联评论需要运行JDK 9。有没有可靠的方法在JDK 8的当前版本或计划版本上完成相同的工作?

2 个答案:

答案 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);