=================================================================== RCS file: /home/cvs/OpenXM/src/kan96xx/Kan/primitive.c,v retrieving revision 1.10 retrieving revision 1.15 diff -u -p -r1.10 -r1.15 --- OpenXM/src/kan96xx/Kan/primitive.c 2003/12/05 13:51:31 1.10 +++ OpenXM/src/kan96xx/Kan/primitive.c 2004/09/12 10:22:50 1.15 @@ -1,4 +1,4 @@ -/* $OpenXM: OpenXM/src/kan96xx/Kan/primitive.c,v 1.9 2003/12/03 01:21:43 takayama Exp $ */ +/* $OpenXM: OpenXM/src/kan96xx/Kan/primitive.c,v 1.14 2004/09/12 08:55:36 takayama Exp $ */ /* primitive.c */ /* The functions in this module were in stackmachine.c */ @@ -424,6 +424,8 @@ int executePrimitive(ob) int size; int i,j,k,n; int status; + int infixOn; + struct tokens infixToken; struct tokens *tokenArray; struct tokens token; FILE *fp; @@ -442,6 +444,8 @@ int executePrimitive(ob) extern TimerOn; extern SecureMode; + infixOn = 0; + if (DebugStack >= 2) { fprintf(Fstack,"In execute %d\n",ob.lc.ival); printOperandStack(); } @@ -596,21 +600,7 @@ int executePrimitive(ob) /* ob2 ob1 get */ ob1 = Kpop(); ob2 = Kpop(); - switch(ob2.tag) { - case Sarray: break; - default: errorStackmachine("Usage:get"); - } - switch(ob1.tag) { - case Sinteger: break; - default: errorStackmachine("Usage:get"); - } - i =ob1.lc.ival; - size = getoaSize(ob2); - if ((0 <= i) && (i= size) { - i=0; - } - status = executeToken(token); - if (status || GotoP) break; + status = executeExecutableArray(ob1,(char *)NULL,1); + if ((status & STATUS_BREAK) || GotoP) break; /* here, do not return 1. Do not propagate exit signal outside of the loop. */ } @@ -803,25 +784,17 @@ int executePrimitive(ob) */ for ( ; i<=lim; i += inc) { Kpush(KpoInteger(i)); - tokenArray = ob1.lc.tokenArray; - size = ob1.rc.ival; - for (j=0; j i) errorStackmachine("The initial value must not be less than limit value (for).\n"); */ for ( ; i>=lim; i += inc) { Kpush(KpoInteger(i)); - tokenArray = ob1.lc.tokenArray; - size = ob1.rc.ival; - for (j=0; jcontextName)); } putoa(qattr,0,qattr2); @@ -1591,7 +1558,8 @@ int executePrimitive(ob) putoa(qob,2,ob4); /* Argument */ qob = KpoTree(qob); Kpush(qob); - } else if (status != 0) break; + } else if (status & STATUS_BREAK) break; + } if (ccflag) { contextControl(CCPOP); ccflag = 0; @@ -1611,14 +1579,7 @@ int executePrimitive(ob) contextControl(CCPUSH); ccflag = 1; CurrentContextp = PrimitiveContextp; /* normal exec. */ - tokenArray = ob1.lc.tokenArray; - size = ob1.rc.ival; - for (i=0; i 0) { signal(SIGALRM,ctrlC); alarm((unsigned int) n); - for (i=0; i