1

我对 Pyke 完全陌生,我正在尝试运行一个简单的代码,但它给了我一个syntax error. 我从 sourceforge.com 的源代码安装了 pyke3,我使用了 python 3.10、python 3.97 并且都给出了相同的错误。这是所有文件的代码:

1-驱动程序.py

from pyke import knowledge_engine

engine = knowledge_engine.engine(__file__)


def rules():

    engine.reset()

    engine.activate('rules.krb')

2-facts.kfb

has_age_of("some name", 38)
was_born_in("some name", 1976)
has_number_of_file("some name", 470)
has_gravidity_of("some name", Gs)
has_parity_of("some name", "p9 + 0")
has_gestational_age_of("some name", "10 weeks + 3 days")
works_as("some name", "some occupation")
has_blood_group("some name", "A+ve")

3-rules.krb

# KRB.krb

the_age
    use aged_with($age, $name)
    when
    facts.has_age_of($name, $age)

在我运行驱动程序的地方发生了这种情况:

writing [compiled_krb]/facts.fbc
Traceback (most recent call last):
  File "e:\work\hospital_project\project\driver.py", line 5, in <module>
    engine = knowledge_engine.engine(__file__)
  File "C:\Users\serag\AppData\Local\Programs\Python\Python310\lib\site-packages\pyke\knowledge_engine.py", line 113, in __init__
    target_package.compile(self)
  File "C:\Users\serag\AppData\Local\Programs\Python\Python310\lib\site-packages\pyke\target_pkg.py", line 285, in compile
    self.do_by_ext('compile',
  File "C:\Users\serag\AppData\Local\Programs\Python\Python310\lib\site-packages\pyke\target_pkg.py", line 265, in do_by_ext
    return getattr(self, "%s_%s" % (prefix, ext))(filename, *args)
  File "C:\Users\serag\AppData\Local\Programs\Python\Python310\lib\site-packages\pyke\target_pkg.py", line 298, in compile_krb
    return krb_compiler.compile_krb(rb_name, self.package_name,
  File "C:\Users\serag\AppData\Local\Programs\Python\Python310\lib\site-packages\pyke\krb_compiler\__init__.py", line 114, in compile_krb
    ast = krbparser.parse(krbparser, filename)
  File "C:\Users\serag\AppData\Local\Programs\Python\Python310\lib\site-packages\pyke\krb_compiler\krbparser.py", line 601, in parse
    return parser.parse(f.read() + '\n', lexer=scanner.lexer, tracking=True,
  File "C:\Users\serag\AppData\Local\Programs\Python\Python310\lib\site-packages\pyke\krb_compiler\ply\yacc.py", line 263, in parse
    return self.parseopt(input,lexer,debug,tracking,tokenfunc)
  File "C:\Users\serag\AppData\Local\Programs\Python\Python310\lib\site-packages\pyke\krb_compiler\ply\yacc.py", line 792, in parseopt
    tok = self.errorfunc(errtoken)
  File "C:\Users\serag\AppData\Local\Programs\Python\Python310\lib\site-packages\pyke\krb_compiler\krbparser.py", line 553, in p_error
    raise SyntaxError("invalid syntax",
  File "e:\work\hospital_project\project\rules.krb", line 6
    facts.has_age_of($name, $age)
    ^
SyntaxError: invalid syntax

请帮忙。

4

0 回答 0