[BACK]Return to stackmachine.c CVS log [TXT][DIR] Up to [local] / OpenXM / src / kan96xx / Kan

Diff for /OpenXM/src/kan96xx/Kan/stackmachine.c between version 1.24 and 1.27

version 1.24, 2004/09/12 08:55:36 version 1.27, 2004/09/16 23:53:44
Line 1 
Line 1 
 /* $OpenXM: OpenXM/src/kan96xx/Kan/stackmachine.c,v 1.23 2004/09/12 01:53:11 takayama Exp $ */  /* $OpenXM: OpenXM/src/kan96xx/Kan/stackmachine.c,v 1.26 2004/09/16 02:22:03 takayama Exp $ */
 /*   stackmachin.c */  /*   stackmachin.c */
   
 #include <stdio.h>  #include <stdio.h>
Line 295  int putUserDictionary2(str,h0,h1,attr,dic)
Line 295  int putUserDictionary2(str,h0,h1,attr,dic)
     }      }
     return(0);      return(0);
   }    }
     if (OR_ATTR_FOR_ALL_WORDS & attr) {
       for (i=0; i<USER_DICTIONARY_SIZE; i++) {
         if ((dic[i]).key !=EMPTY) (dic[i]).attr |= attr&(~OR_ATTR_FOR_ALL_WORDS);
       }
       return(0);
     }
   x = h0;    x = h0;
   if (str[0] == '\0') {    if (str[0] == '\0') {
     errorKan1("%s\n","putUserDictionary2(): You are defining a value with the null key.");      errorKan1("%s\n","putUserDictionary2(): You are defining a value with the null key.");
Line 981  int executeToken(token)
Line 987  int executeToken(token)
       if (ob.tag >= 0) {        if (ob.tag >= 0) {
         /* there is a definition in the user dictionary */          /* there is a definition in the user dictionary */
         if (ob.tag == SexecutableArray) {          if (ob.tag == SexecutableArray) {
           status = executeExecutableArray(ob,token.token);            status = executeExecutableArray(ob,token.token,0);
           if ((status & STATUS_BREAK) || (status < 0)) return status;            if ((status & STATUS_BREAK) || (status < 0)) return status;
         }else {          }else {
           Kpush(ob);            Kpush(ob);
Line 1580  char *traceShowStack(void) {
Line 1586  char *traceShowStack(void) {
     if (t == NULL) {      if (t == NULL) {
       s[p] = ';'; s[p+1] = 0;        s[p] = ';'; s[p+1] = 0;
       break;        break;
     }else if ((strlen(t) + p -10) > TRACE_MSG_SIZE) {      }else if ((strlen(t) + p) > (TRACE_MSG_SIZE-10)) {
           /*      fprintf(stderr,"p=%d, TraceNameStackp=%d, strlen(t)=%d, t=%s\n",p,TraceNameStackp,strlen(t),t); */            /* fprintf(stderr,"p=%d, TraceNameStackp=%d, strlen(t)=%d, t=%s\n",p,TraceNameStackp,strlen(t),t); */
       strcpy(&(s[p])," ...");        strcpy(&(s[p])," ...");
       break;        break;
     }      }
Line 1595  char *traceShowStack(void) {
Line 1601  char *traceShowStack(void) {
 /*  /*
   if (fname != NULL) fname is pushed to the trace stack.    if (fname != NULL) fname is pushed to the trace stack.
  */   */
 int executeExecutableArray(struct object ob,char *fname) {  int executeExecutableArray(struct object ob,char *fname,int withGotoP) {
   struct tokens *tokenArray;    struct tokens *tokenArray;
   int size,i;    int size,i;
   int status;    int status;
Line 1611  int executeExecutableArray(struct object ob,char *fnam
Line 1617  int executeExecutableArray(struct object ob,char *fnam
   size = ob.rc.ival;    size = ob.rc.ival;
   for (i=0; i<size; i++) {    for (i=0; i<size; i++) {
     status = executeToken(tokenArray[i]);      status = executeToken(tokenArray[i]);
     if ((status & STATUS_BREAK) || (status < 0) || GotoP) {      if ((status & STATUS_BREAK) || (status < 0) || (withGotoP && GotoP)) {
       if (fname != NULL) tracePopName();        if (fname != NULL) tracePopName();
       return(status);        return(status);
     }      }
Line 1624  int executeExecutableArray(struct object ob,char *fnam
Line 1630  int executeExecutableArray(struct object ob,char *fnam
     }else if (infixOn) {      }else if (infixOn) {
       infixOn = 0;        infixOn = 0;
       status = executeToken(infixToken);        status = executeToken(infixToken);
       if ((status & STATUS_BREAK) || (status < 0) || GotoP) {        if ((status & STATUS_BREAK) || (status < 0) || (withGotoP && GotoP)) {
         if (fname != NULL) tracePopName();          if (fname != NULL) tracePopName();
         return(status);          return(status);
       }        }

Legend:
Removed from v.1.24  
changed lines
  Added in v.1.27

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>