=================================================================== RCS file: /home/cvs/OpenXM/src/kan96xx/Kan/scanner2.c,v retrieving revision 1.8 retrieving revision 1.10 diff -u -p -r1.8 -r1.10 --- OpenXM/src/kan96xx/Kan/scanner2.c 2005/07/03 11:08:54 1.8 +++ OpenXM/src/kan96xx/Kan/scanner2.c 2020/10/06 11:33:47 1.10 @@ -1,4 +1,4 @@ -/* $OpenXM: OpenXM/src/kan96xx/Kan/scanner2.c,v 1.7 2005/01/23 02:41:17 takayama Exp $ */ +/* $OpenXM: OpenXM/src/kan96xx/Kan/scanner2.c,v 1.9 2005/07/18 10:55:16 takayama Exp $ */ /* scanner2.c (SM StackMachine) */ /* export: struct tokens decompostToTokens(char *str,int *sizep); scanner2.c is for getting tokens from a string. @@ -49,15 +49,21 @@ static int TypeSM = ID; /**************** end of declaration part of lexical analizer ******/ static int getSM(); -static putSM(); +static void putSM(); static struct tokens flushSM(); -static isSpaceSM(); -static isDollarSM(); -static isBraceSM(); -static isKakkoSM(); -static isSymbolSM(); +static int isSpaceSM(); +static int isDollarSM(); +static int isBraceSM(); +static int isKakkoSM(); +static int isSymbolSM(); static struct tokens getokenSM2(); +void errorScanner2(char *str); + +extern int ScannerWhich; +extern unsigned char ScannerBuf[]; +extern int ScannerPt; + /**************** code part of lexical analizer ********************/ struct tokens *decomposeToTokens(str,sizep) @@ -109,12 +115,16 @@ static int getSM() } c = (unsigned char) StringSM[StrpSM++]; + if (c != 0) { + ScannerPt++; if (ScannerPt >= SCANNERBUF_SIZE) ScannerPt = 0; + ScannerBuf[ScannerPt] = c; + } if (c == '\0') { StrpSM--;return(EOF); } else return(c); } -static putSM(c) +static void putSM(c) int c; /* put a letter on BufSM */ { @@ -160,35 +170,35 @@ static struct tokens flushSM() return(r); } -static isSpaceSM(c) +static int isSpaceSM(c) int c; { if (((c <= ' ') || c == ',') && (c!= EOF)) return(1); else return(0); } -static isDollarSM(c) +static int isDollarSM(c) int c; { if (c == '$') return(1); else return(0); } -static isBraceSM(c) +static int isBraceSM(c) int c; { if (c == '{') return(1); else return(0); } -static isKakkoSM(c) +static int isKakkoSM(c) int c; { if (c == '(') return(1); else return(0); } -static isSymbolSM(c) +static int isSymbolSM(c) int c; { if ((c == '{') || @@ -210,6 +220,10 @@ static struct tokens getokenSM2(kind,str) int level; if (kind == INIT) { + ScannerWhich = 2; + ScannerPt = 0; + ScannerBuf[0] = 0; + StrpSM = 0; ExistSM = 0; @@ -315,7 +329,7 @@ static struct tokens getokenSM2(kind,str) /*********** end of code part of lexical analizer ********************/ -errorScanner2(str) +void errorScanner2(str) char *str; { fprintf(stderr,"Error (scanner2.c): %s\n",str);