我正在我的应用程序中实现一个使用Jessp解析器类的方法,以便打开一个文件并获取其中的deftemplates和deffacts。问题是当尝试将结果获取到对象变量时,它会在构造函数上询问JessTokenStream。我试图传递一个JessToken,但后来它抱怨这个类型,它应该是e8。通过Jess文档搜索但没有找到参数的解释,只有构造函数的语法。 有人可以帮忙吗? 在此先感谢!!!
答案 0 :(得分: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));
}
}