سؤال

أجد أنه من الصعب للغاية تطويرها باستخدام Pyclips ، لأنه يبدو أنه يحل محل رسائل الخطأ المفيدة التي تم إلقاؤها بواسطة مقاطع برسالة "خطأ في بناء الجملة" العام. هذا يجعل تصحيح الأخطاء شاقًا للغاية ومستحيلًا عمليًا على قواعد الكود الكبيرة عند استخدام pyclips.

النظر في المثال التالي. كتبت تعبيرًا كبيرًا جدًا ، والذي احتوى على مشغل الضرب ، لكنني نسيت عن طريق الخطأ إضافة الحجة الثانية. بدلاً من مجرد إخبار أنني كنت أفتقد حجة ، أخبرني Pyclips أن هناك خطأ في بناء الجملة. ما كان ينبغي أن يأخذني ثانية واحدة لتصحيح ، استغرق مني 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 ، ثم اقرأ OrrorStream للحصول على التفاصيل. فمثلا:

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