Как исправить ошибку EnvEval в CLIPS с помощью swift - PullRequest
0 голосов
/ 19 сентября 2019

Я пытаюсь использовать платформу CLIPS для iOS со Swift.Я выполнил все настройки, и программа CLIPS работает нормально и успешно завершает вычисления.

Код клипа:

(deftemplate travel-banchmark
   (slot name)
   (slot value))

(deftemplate permutation
   (multislot values))

(deffacts initial
   (number-of-place 3)
   (travel-banchmark (name place) (value torino))
   (travel-banchmark (name place) (value roma))
   (travel-banchmark (name place) (value milano))
   (travel-banchmark (name place) (value venezia))
   (travel-banchmark (name place) (value napoli)))

(defrule first-in-permutation
   (number-of-place ~0)
   (travel-banchmark (name place) (value ?city))
   =>
   (assert (permutation (values ?city))))

(defrule next-in-permutation
   (number-of-place ?k)
   ?p <- (permutation (values $?cities))
   (test (< (length$ ?cities) ?k))
   (travel-banchmark (name place) (value ?city))
   (test (not (member$ ?city ?cities)))
   =>
   (assert (permutation (values ?cities ?city))))

(defrule cleanup
   (declare (salience -5))
   (number-of-place ?k)
   ?p <- (permutation (values $?cities))
   (test (< (length$ ?cities) ?k))
   =>
   (retract ?p))

Код Swift:

EnvWatch(clipsEnv,"activations");
EnvWatch(clipsEnv,"facts");
EnvLoad(clipsEnv,filePath);
EnvReset(clipsEnv);
EnvRun(clipsEnv,-1);
EnvPrintRouter(clipsEnv,WPROMPT,"Test");
let expression = "(find-all-facts ((?f permutation)) TRUE)";
var outputValue:DATA_OBJECT_PTR?;
EnvEval(clipsEnv, expression, outputValue)

Во времяоценка EnvEval Я получил эту ошибку: Thread 1: EXC_BAD_ACCESS (code=1, address=0x8) без каких-либо других объяснений.

Любое предложение о том, что я могу проверить?Вам нужны другие фрагменты информации?

Редактировать: я изменил эти две строки:

var outputValue: DATA_OBJECT = DATA_OBJECT.init();
EnvEval(clipsEnv, expression, &outputValue)

Теперь этот фрагмент кода работает, но мне сложно понять, почему такие идентификаторы, какGetValue неразрешены

...