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

Diff for /OpenXM/src/kan96xx/Kan/scanner.c between version 1.6 and 1.9

version 1.6, 2004/09/10 22:21:27 version 1.9, 2005/07/18 10:55:16
Line 1 
Line 1 
 /*$OpenXM: OpenXM/src/kan96xx/Kan/scanner.c,v 1.5 2004/09/10 13:20:23 takayama Exp $*/  /*$OpenXM: OpenXM/src/kan96xx/Kan/scanner.c,v 1.8 2005/07/03 11:08:54 ohara Exp $*/
 /*  scanner.c (SM StackMachine) */  /*  scanner.c (SM StackMachine) */
 /* export: struct tokens getokenSM(actionType kind,char *str);  /* export: struct tokens getokenSM(actionType kind,char *str);
    scanner.c is used to get tokens from streams.     scanner.c is used to get tokens from streams.
    files: none     files: none
 */  */
 #include <stdio.h>  #include <stdio.h>
   #include <stdlib.h>
   #include <string.h>
 #include "datatype.h"  #include "datatype.h"
 #include "stackm.h"  #include "stackm.h"
 struct tokens lookupTokens(struct tokens t);  struct tokens lookupTokens(struct tokens t);
Line 70  static isSymbolSM();
Line 72  static isSymbolSM();
 static mygetchar();  static mygetchar();
 static myungetchar();  static myungetchar();
   
   int ScannerWhich = 0;
   unsigned char ScannerBuf[SCANNERBUF_SIZE];
   int ScannerPt = 0;
   
 /*  /*
 static mygetchar()  static mygetchar()
 {  {
   
   return( getc(Cfp) );    return( getc(Cfp) );
 }  }
 */  */
   
 static mygetchar()  static mygetchar()
 { int c;  { int c;
     c = getc(Cfp);
     if (c > 0) { /* ungetchar is ignored */
       ScannerPt++; if (ScannerPt >= SCANNERBUF_SIZE) ScannerPt = 0;
       ScannerBuf[ScannerPt] = c;
     }
  if (EchoInScanner) {   if (EchoInScanner) {
    c = getc(Cfp);  
    if (c==EOF) {     if (c==EOF) {
      printf("\n%% EOF of file %x\n",(int) Cfp);       printf("\n%% EOF of file %x\n",(int) Cfp);
    }else{     }else{
Line 89  static mygetchar()
Line 99  static mygetchar()
    }     }
    return( c );     return( c );
  }else{   }else{
    return( getc(Cfp) );     return( c );
  }   }
 }  }
   
Line 155  static struct tokens flushSM()
Line 165  static struct tokens flushSM()
   strcpy(token,BufSM);    strcpy(token,BufSM);
   r.token = token;    r.token = token;
   r.kind = TypeSM;    r.kind = TypeSM;
     r.tflag = 0;
   if (r.kind == ID) {    if (r.kind == ID) {
     if (isLiteral(r.token)) {      if (isLiteral(r.token)) {
       r.object = lookupLiteralString(r.token);        r.object = lookupLiteralString(r.token);
Line 216  struct tokens getokenSM(kind,str)
Line 227  struct tokens getokenSM(kind,str)
   char fname[1024];    char fname[1024];
   
   if (kind == INIT) {    if (kind == INIT) {
       ScannerWhich = 2;
       ScannerPt = 0;
       ScannerBuf[0] = 0;
   
     StrpSM = 0;      StrpSM = 0;
     ExistSM = 0;      ExistSM = 0;
   
Line 401  main() {
Line 416  main() {
 char *getLOAD_SM1_PATH() {  char *getLOAD_SM1_PATH() {
   char *p;    char *p;
   char *p2;    char *p2;
   char *getenv(char *s);    char *getenv(const char *s);
   p = getenv("LOAD_SM1_PATH");    p = getenv("LOAD_SM1_PATH");
   if (p == NULL) {    if (p == NULL) {
     p = getenv("OpenXM_HOME");      p = getenv("OpenXM_HOME");
Line 427  char *getLOAD_SM1_PATH() {
Line 442  char *getLOAD_SM1_PATH() {
     strcpy(p2,p); strcat(p2,"/");      strcpy(p2,p); strcat(p2,"/");
     return(p2);      return(p2);
   }    }
   }
   
   char *traceShowScannerBuf() {
     char *s;
     int i,k;
     s = NULL;
     /*
     printf("ScannerPt=%d\n",ScannerPt);
     for (i=0; i<SCANNERBUF_SIZE; i++) {
           printf("%x ",(int) (ScannerBuf[i]));
     }
     printf("\n");  fflush(NULL); sleep(10);
     */
     if ((ScannerPt == 0) && (ScannerBuf[0] == 0)) {
       s = sGC_malloc(1); s[0] = 0;
       return s;
     }
     if ((ScannerPt > 0) && (ScannerBuf[0] == 0)) {
       s = sGC_malloc(ScannerPt+1);
       for (i=1; i<=ScannerPt; i++) {
         s[i-1] = ScannerBuf[i]; s[i] = 0;
       }
       return s;
     }
     if (ScannerBuf[0] != 0) {
       s = sGC_malloc(SCANNERBUF_SIZE+1);
       k = ScannerPt+1;
       if (k >= SCANNERBUF_SIZE) k = 0;
       for (i=0; i<SCANNERBUF_SIZE; i++) {
         s[i] = ScannerBuf[k]; s[i+1] = 0;
         k++; if (k >= SCANNERBUF_SIZE) k = 0;
       }
       return s;
     }
     return s;
 }  }

Legend:
Removed from v.1.6  
changed lines
  Added in v.1.9

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