1

我对 PYKE 非常陌生,我已经从 github 安装了 PYKE。

我正在尝试运行一段代码,但遇到错误。

文件和底层代码如下:

1> fc_example.krb
direct_father_son
    foreach
        family.son_of($son, $father)
    assert
        family.father_son($father, $son, ())


2> family.kfb
son_of(david, bruce)
son_of(bruce, thomas)
son_of(thomas, frederik)
son_of(frederik, hiram)
father_son(bruce, david, ())
father_son(thomas, bruce, ())
father_son(frederik, thomas, ())
father_son(hiram, frederik, ())

3> main.py
from __future__ import with_statement
import contextlib
import sys
import time

from pyke import knowledge_engine, krb_traceback, goal
engine = None
if engine is None:
    engine = knowledge_engine.engine(__file__)

当我运行 main.py 文件时,出现以下错误:

writing [compiled_krb]/family.fbc
Traceback (most recent call last):
  File "/home/sam/Desktop/PYKE/main.py", line 13, in <module>
    engine = knowledge_engine.engine(__file__)
  File "/home/sam/anaconda/lib/python2.7/site-packages/pyke/knowledge_engine.py", line 107, in __init__
    target_package.compile(self)
  File "/home/sam/anaconda/lib/python2.7/site-packages/pyke/pyke/target_pkg.py", line 288, in compile
    source_filename))
  File "/home/sam/anaconda/lib/python2.7/site-packages/pyke/pyke/target_pkg.py", line 264, in do_by_ext
    return getattr(self, "%s_%s" % (prefix, ext))(filename, *args)
  File "/home/sam/anaconda/lib/python2.7/site-packages/pyke/pyke/target_pkg.py", line 298, in compile_krb
    self.directory, source_filename)
  File "/home/sam/anaconda/lib/python2.7/site-packages/pyke/krb_compiler/__init__.py", line 122, in compile_krb
    (generated_root_pkg, rb_name, ast), 3)
  File "/home/sam/anaconda/lib/python2.7/site-packages/pyke/knowledge_engine.py", line 411, in prove_1
    return iter(it).next()
  File "/home/sam/anaconda/lib/python2.7/site-packages/pyke/knowledge_engine.py", line 392, in gen
    for plan in it:
  File "/home/sam/anaconda/lib/python2.7/site-packages/pyke/pyke/rule_base.py", line 50, in next
    return self.iterator.next()
  File "/home/sam/anaconda/lib/python2.7/site-packages/pyke/pyke/knowledge_engine.py", line 41, in from_iterable
    for x in iterable: yield x
  File "/home/sam/anaconda/lib/python2.7/site-packages/pyke/pyke/knowledge_engine.py", line 41, in from_iterable
    for x in iterable: yield x
  File "/home/sam/anaconda/lib/python2.7/site-packages/pyke/krb_compiler/compiler_bc.py", line 20, in file
    arg_patterns)):
  File "/home/sam/anaconda/lib/python2.7/site-packages/pyke/krb_compiler/compiler_bc.py", line 18, in <lambda>
    arg, arg_context),
  File "/home/sam/anaconda/lib/python2.7/site-packages/pyke/contexts.py", line 344, in match_pattern
    bindings.bind(var.name, var_context, pattern_b, b_context)
  File "/home/sam/anaconda/lib/python2.7/site-packages/pyke/contexts.py", line 186, in bind
    else isinstance(val, pattern.pattern)
AssertionError
[Finished in 0.2s with exit code 1]
[cmd: ['python', '-u', '/home/sardendhu/Desktop/Tataatsu_projects/PYKE/main.py']]
[dir: /home/sam/Desktop/PYKE]
[path: /opt/pgxl/bin:/usr/local/s

我不确定出了什么问题。任何帮助,将不胜感激

4

0 回答 0