неверный синтаксис в файле правил в pyke

Я новичок в Пайке, и я пытаюсь запустить простой код, но он дает мне syntax error. Я установил pyke3 из исходного кода с sourceforge.com, и я использую python 3.10, python 3.97, и оба выдают одну и ту же ошибку. Вот код всех файлов:

1- driver.py

      from pyke import knowledge_engine

engine = knowledge_engine.engine(__file__)


def rules():

    engine.reset()

    engine.activate('rules.krb')

2- fact.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

Пожалуйста помоги.

0 ответов

Другие вопросы по тегам