我一直在使用 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);
其中,grammarSource
在我的测试用例中,是网站中用作示例的基本语法,而PEGJS_LIB = peg-0.7.0.js
.
欢迎任何想法!我这里已经用完了...