Chr*_*mer 4 javascript java antlr rhino
我已经在一些浏览器中成功地使用我的代码与ANTLR javascript目标中的javascript库,但现在我想在服务器上使用Rhino,我遇到了一些麻烦.我有一些简单的java代码引用了Rhino 1.7R2版本的js-14.jar文件.
Context context = Context.enter();
Scriptable scope = context.initStandardObjects();
context.evaluateReader(scope, new FileReader("C:\\antlr3-all.js"), "antlr", 1, null);
Run Code Online (Sandbox Code Playgroud)
这失败EcmaError的消息是:
TypeError: Cannot call property namespace in object [JavaPackage org.antlr].
It is not a function, it is "object". (antlr#259)
Run Code Online (Sandbox Code Playgroud)
它所指的javascript行是:
org.antlr.namespace("org.antlr.runtime.tree");
Run Code Online (Sandbox Code Playgroud)
这org.antlr.namespace在文件的早期声明为函数,所以我不确定该怎么想.我也没有看到"命名空间"是javascript或Rhino中的保留字.
这是第org.antlr.namespace56行的声明:
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;
};
Run Code Online (Sandbox Code Playgroud)
在JavaScript的目标页面ANTLR提到Rhino是一个测试的平台,所以我想,我可能只是滥用犀牛.有人有任何提示吗?
TypeError:无法在对象[JavaPackage org.antlr]中调用属性名称空间.
它将您的org.antlr作为java包并尝试调用对象命名空间.所以定义这样的函数是行不通的.
定义函数名称空间的每个部分本身对我有用:
org = new function() {//Define the structure one piece at a time
this.antlr = new function(){
this.namespace = '';
return this;
};
return this;
};
org.antlr.namespace = function() {print('Help'); return 0;}
Run Code Online (Sandbox Code Playgroud)
对不起,我不能给出更详细的答案,我不知道有关javascript ^^的mutch.我想因为org和org.antlr是未定义的,所以你无法分配给它们.
| 归档时间: |
|
| 查看次数: |
2826 次 |
| 最近记录: |