0

我在我的应用程序中实现了一个方法,它使用 Jessp 解析器类来打开一个文件并在其中获取 deftemplates 和 deffacts。问题是,当试图将结果获取到对象变量中时,它会向构造函数询问 JessTokenStream。我试图传递一个 JessToken,但它抱怨类型,它应该是 e8。搜索了 Jess 文档,但没有找到参数的解释,只有构造函数的语法。任何人都可以帮助?提前致谢!!!

4

1 回答 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 回答