Изменение действия при вызове CLIPS приводит к зависанию системы - PullRequest
0 голосов
/ 20 мая 2019

Я изменяю шаблонный факт с помощью вызова (изменения) действия, но это приводит к зависанию CLIPS.

ПРАВИЛА:

(deffunction reset-allowed-values "Resets allowed values"
    ; no argument
    ($?arg)
    (if (eq (any-factp ((?fact model1)) TRUE) TRUE)
        then
            ;T1_1, T2_1, T3_1
            (do-for-all-facts ((?fact ar-node)) (eq ?fact:trip 1)
                (modify ?fact (allowed-values A B C D E F))))

MAIN:

int main(void) 
{   
    DATA_OBJECT rtn;
    void *env = CreateEnvironment();
    printf("Environment Created!\n");

    EnvSetConserveMemory(env, 1);

    int result = EnvLoad(env, "custom/rules/test.clp");
    if(result == 0) {
        printf("Unable to find the consruct!\n");
        DestroyEnvironment(env);
        return(1);
    } else if(result == -1) {
        printf("Unable to load the consruct!\n");
        DestroyEnvironment(env);
        return(1);
    }
    printf("Construct Loaded!\n");

    EnvReset(env);
    printf("Environment Reset!\n");

    EnvFunctionCall(env,"reset-allowed-values", 0, &rtn);

    printf("CLIPS test done! Used memory %ld bytes.\n", EnvMemUsed(env));

    DestroyEnvironment(env);

  return(0);
}

Я в настоящее время понятия не имею, почему вызов на изменение заставляет вызов сбросить допустимые значения не возвращаться.CLIPS построен и работает в UBUNTU Linux 32bit.Любой может помочь мне в этом, вся помощь очень ценится.Большое спасибо.

...