【发布时间】:2011-03-01 20:56:15
【问题描述】:
我已经在几个浏览器中成功地使用了ANTLR javascript target 中的javascript 库代码,但现在我想在服务器上使用Rhino,但遇到了一些问题。我有一些引用 Rhino 1.7R2 版本的 js-14.jar 文件的简单 java 代码。
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 提到 Rhino 是一个经过测试的平台,所以我想我可能只是在滥用 Rhino。有人有什么建议吗?
【问题讨论】:
标签: java javascript antlr rhino