我在我的应用程序中实现了一个方法,它使用 Jessp 解析器类来打开一个文件并在其中获取 deftemplates 和 deffacts。问题是,当试图将结果获取到对象变量中时,它会向构造函数询问 JessTokenStream。我试图传递一个 JessToken,但它抱怨类型,它应该是 e8。搜索了 Jess 文档,但没有找到参数的解释,只有构造函数的语法。任何人都可以帮助?提前致谢!!!
问问题
38 次
1 回答
0
JessTokenStream 类不是公共的,因此您实际上不能调用这些parseXXX()
方法。由于历史原因,它们是公开的,但实际上并不能被客户使用。它们实际上应该从公共界面中删除。
相反,使用 的两个参数形式parseExpression()
,然后测试返回的对象以确定其类型。然后你可以用返回的对象做你想做的事:
Rete engine = ...
Jesp jesp = ...
Object o = jesp.parseExpression(engine.getGlobalContext(), false);
if (o instanceof Deffacts) {
Deffacts d = (Deffacts) o;
for (int i = 0; i<d.getNFacts(); ++i) {
Fact f = d.getFact(i);
Deftemplate t = f.getDeftemplate();
System.out.println("Fact name is " + f.getName();
System.out.println("Fact name is " + f.getName();
for (String name: t.getSlotNames())
System.out.println("Slot " + name + " contains " + f.getSlotValue(name));
}
}
于 2014-07-07T12:25:27.403 回答