Распространение сообщений об ошибках клипов в Pyclips

StackOverflow https://stackoverflow.com/questions/3710690

Вопрос

Мне очень трудно разрабатывать с помощью Pyclips, потому что он, похоже, заменяет полезные сообщения об ошибках, брошенные клипами на общее сообщение «Синтаксис -ошибка». Это делает отладку очень трудоемкой и практически невозможной на крупных кодовых базах при использовании Pyclips.

Рассмотрим следующий пример. Я написал очень большое выражение, которое содержало оператора умножения, но я ошибочно забыл добавить второй аргумент. Вместо того, чтобы просто сказать, что мне не хватает спора, Пиклипс сказал мне, что есть синтаксическая ошибка. То, что должно было уйти с 1 секунды до исправления, потребовалось 5 минут, чтобы исправить, когда я охотился сквозь свое большое выражение, в поисках ошибки.

Вот сжатая версия:

В клипах с полезным сообщением об ошибке:

clips
CLIPS> (defrule myrule "" (myfact 123) => (bind ?prob (* (min 1 2))))
[ARGACCES4] Function * expected at least 2 argument(s)

ERROR:
(defrule MAIN::myrule ""
   (myfact 123)
   =>
   (bind ?prob (* (min 1 2))

И в Pyclips, с непригодным сообщением об ошибке:

python
>>> import clips
>>> clips.BuildRule('myrule','(myfact 123)','(bind ?prob (* (min 1 2)))','')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.6/dist-packages/clips/_clips_wrap.py", line 2839, in BuildRule
    _c.build(construct)
_clips.ClipsError: C08: syntax error, or unable to parse expression

Как я могу заставить Pyclips дать мне настоящий Ошибка брошена клипами?

Это было полезно?

Решение

??????? ClipsError, ? ????? ????????? ErrorStream ??? ???????. ????????:
engine = clips.Environment()
engine.Reset()
engine.Clear()
try:
    engine.Load(os.path.abspath(rule_file))
except clips.ClipsError:
    logging.error(clips.ErrorStream.Read())
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top