小编Leo*_*mes的帖子

如何使用Rhino构建PEG.js 0.7.0解析器(Java SE 6 ScriptEngine API)

我一直在使用PEG.js版本0.6.1使用Maven插件(即从Java代码调用PEG.js)构建解析器,但是现在在尝试升级到新版本时,它失败并显示错误消息:

sun.org.mozilla.javascript.internal.EcmaError: SyntaxError: missing ; before statement (#3213(eval)#1) in #3213(eval) at line number 1

调试时我注意到PEG.buildParser()函数调用出来的解析器看起来语法错误,当然从浏览器调用它时不会发生.

这是我如何称呼它:

ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine jsEngine = manager.getEngineByName("JavaScript");

jsEngine.eval(new InputStreamReader(this.getClass().getResourceAsStream(PEGJS_LIB)));

Invocable invok = (Invocable) jsEngine;
Object peg = jsEngine.get("PEG");

invok.invokeMethod(peg, "buildParser", grammarSource);
Run Code Online (Sandbox Code Playgroud)

其中,grammarSource在我的测试情况下,是作为基本语法的网站例如,和PEGJS_LIB = peg-0.7.0.js.

欢迎任何想法!我在这里用完了......

javascript rhino parser-generator scriptengine pegjs

2
推荐指数
1
解决办法
404
查看次数