我已经成功地将我的代码与
ANTLR javascript target
在一些浏览器中,但是现在我想在服务器上使用Rhino,我遇到了一些问题。我有一些简单的Java代码,引用了犀牛1.7R2版本的JS.14JAR文件。
Context context = Context.enter();
Scriptable scope = context.initStandardObjects();
context.evaluateReader(scope, new FileReader("C:\\antlr3-all.js"), "antlr", 1, null);
失败的原因是
EcmaError
其信息是:
TypeError: Cannot call property namespace in object [JavaPackage org.antlr].
It is not a function, it is "object". (antlr#259)
它所指的javascript行是:
org.antlr.namespace("org.antlr.runtime.tree");
这个
org.antlr.namespace
在文件的前面声明为函数,因此我不确定如何看待此问题。我也不认为“名称空间”是JavaScript中的保留字,特别是Rhino中的保留字。
这是声明
org.antlr.namespace名称空间
在第56行:
org.antlr.namespace = function() {
var a=arguments, o=null, i, j, d;
for (i=0; i<a.length; i=i+1) {
d=a[i].split(".");
o=org.antlr.global;
// ANTLR is implied, so it is ignored if it is included
for (j=0; j<d.length; j=j+1) {
o[d[j]]=o[d[j]] || {};
o=o[d[j]];
}
}
return o;
};
这个
ANTLR javascript target page
提到犀牛是一个测试平台,所以我想我可能只是误用了犀牛。有人有什么建议吗?