質問

ピクリップで開発することは非常に難しいと感じています。なぜなら、クリップによってスローされた一般的な「構文エラー」メッセージでスローされた有用なエラーメッセージを置き換えるように見えるからです。これにより、ピリップを使用する場合、大きなコードベースで非常に面倒で事実上不可能になります。

次の例を考えてください。乗算演算子を含む非常に大きな表現を書きましたが、2番目の引数を追加するのを誤って忘れていました。単に私が引数を逃していると言う代わりに、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))

そして、ピリップでは、無効なエラーメッセージがあります。

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

どうすればピリップを手に入れてもらうことができますか 本物 クリップによってスローされるエラー?

役に立ちましたか?

解決

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