FUNCTION local_vars_aux
(thing : GENERIC; accum : SET [0:?] OF Scalar_variable) : SET [0:?] OF Scalar_variable;
LOCAL i,j,k : INTEGER; END_LOCAL; IF (('PRODUCTION_RULE_ARM.ABSTRACT_VARIABLE' IN TYPEOF(thing)) AND ('PRODUCTION_RULE_ARM.RULE_DEFINITION' IN (TYPEOF(thing.scope)))) THEN accum := accum + thing; ELSE IF ('PRODUCTION_RULE_ARM.RULE_CONDITION' IN TYPEOF(thing)) THEN REPEAT i := 1 TO HIINDEX(thing\Atomic_formula.terms); accum := local_vars_aux(thing\Atomic_formula.terms[i],accum); END_REPEAT; ELSE IF ('PRODUCTION_RULE_ARM.SIMPLE_CLAUSE' IN TYPEOF(thing)) THEN REPEAT j := 1 TO HIINDEX(thing.formulas); accum := local_vars_aux(thing.formulas[j],accum); END_REPEAT; ELSE IF ('PRODUCTION_RULE_ARM.COMPLEX_CLAUSE' IN TYPEOF(thing)) THEN REPEAT k := 1 TO HIINDEX(thing.clauses); accum := local_vars_aux(thing.clauses[k],accum); END_REPEAT; END_IF; END_IF; END_IF; END_IF; RETURN(accum); END_FUNCTION; -- local_vars_aux
|