=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/parse/evall.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -p -r1.5 -r1.6 --- OpenXM_contrib2/asir2000/parse/evall.c 2001/10/09 01:36:24 1.5 +++ OpenXM_contrib2/asir2000/parse/evall.c 2018/03/29 01:32:54 1.6 @@ -45,7 +45,7 @@ * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. * - * $OpenXM: OpenXM_contrib2/asir2000/parse/evall.c,v 1.4 2000/12/05 01:24:56 noro Exp $ + * $OpenXM: OpenXM_contrib2/asir2000/parse/evall.c,v 1.5 2001/10/09 01:36:24 noro Exp $ */ #include #include "ca.h" @@ -57,72 +57,72 @@ pointer evall(lid id,Obj a1,Obj a2) { - F f; - Obj d; - oFOP op; - NODE n1,n2; + F f; + Obj d; + oFOP op; + NODE n1,n2; - switch ( id ) { - case L_EQ: - op = AL_EQUAL; break; - case L_NE: - op = AL_NEQ; break; - case L_GT: - op = AL_GREATERP; break; - case L_LT: - op = AL_LESSP; break; - case L_GE: - op = AL_GEQ; break; - case L_LE: - op = AL_LEQ; break; - case L_AND: - op = AL_AND; break; - case L_OR: - op = AL_OR; break; - case L_NOT: - op = AL_NOT; break; - case L_IMPL: - op = AL_IMPL; break; - case L_REPL: - op = AL_REPL; break; - case L_EQUIV: - op = AL_EQUIV; break; - default: - error("evall : unknown id"); - } - if ( AL_ATOMIC(op) ) { - arf_sub(CO,a1,a2,&d); - MKAF(f,op,(P)d); - } else if ( AL_JUNCT(op) ) { - if ( FOP((F)a1) == op ) { - if ( FOP((F)a2) == op ) - n2 = FJARG((F)a2); - else - MKNODE(n2,(F)a2,0); - node_concat_dup(FJARG((F)a1),n2,&n1); - } else if ( FOP((F)a2) == op ) - MKNODE(n1,a1,FJARG((F)a2)); - else { - MKNODE(n2,a2,0); MKNODE(n1,a1,n2); - } - MKJF(f,op,n1); - } else if ( AL_UNI(op) ) - MKUF(f,op,(F)a1); - else if ( AL_EXT(op) ) - MKBF(f,op,(F)a1,(F)a2); - return (pointer)f; + switch ( id ) { + case L_EQ: + op = AL_EQUAL; break; + case L_NE: + op = AL_NEQ; break; + case L_GT: + op = AL_GREATERP; break; + case L_LT: + op = AL_LESSP; break; + case L_GE: + op = AL_GEQ; break; + case L_LE: + op = AL_LEQ; break; + case L_AND: + op = AL_AND; break; + case L_OR: + op = AL_OR; break; + case L_NOT: + op = AL_NOT; break; + case L_IMPL: + op = AL_IMPL; break; + case L_REPL: + op = AL_REPL; break; + case L_EQUIV: + op = AL_EQUIV; break; + default: + error("evall : unknown id"); + } + if ( AL_ATOMIC(op) ) { + arf_sub(CO,a1,a2,&d); + MKAF(f,op,(P)d); + } else if ( AL_JUNCT(op) ) { + if ( FOP((F)a1) == op ) { + if ( FOP((F)a2) == op ) + n2 = FJARG((F)a2); + else + MKNODE(n2,(F)a2,0); + node_concat_dup(FJARG((F)a1),n2,&n1); + } else if ( FOP((F)a2) == op ) + MKNODE(n1,a1,FJARG((F)a2)); + else { + MKNODE(n2,a2,0); MKNODE(n1,a1,n2); + } + MKJF(f,op,n1); + } else if ( AL_UNI(op) ) + MKUF(f,op,(F)a1); + else if ( AL_EXT(op) ) + MKBF(f,op,(F)a1,(F)a2); + return (pointer)f; } void node_concat_dup(NODE n1,NODE n2,NODE *nr) { - NODE r0,r,n; + NODE r0,r,n; - for ( r0 = 0, n = n1; n; n = NEXT(n) ) { - NEXTNODE(r0,r); BDY(r) = BDY(n); - } - if ( !r0 ) - *nr = n2; - else { - NEXT(r) = n2; *nr = r0; - } + for ( r0 = 0, n = n1; n; n = NEXT(n) ) { + NEXTNODE(r0,r); BDY(r) = BDY(n); + } + if ( !r0 ) + *nr = n2; + else { + NEXT(r) = n2; *nr = r0; + } }