[BACK]Return to parse.c CVS log [TXT][DIR] Up to [local] / OpenXM / src / ox_toolkit

Diff for /OpenXM/src/ox_toolkit/parse.c between version 1.1 and 1.2

version 1.1, 1999/12/09 22:44:56 version 1.2, 1999/12/22 11:26:37
Line 1 
Line 1 
 /* -*- mode: C; coding: euc-japan -*- */  /* -*- mode: C; coding: euc-japan -*- */
 /* $OpenXM$ */  /* $OpenXM: OpenXM/src/ox_toolkit/parse.c,v 1.1 1999/12/09 22:44:56 ohara Exp $ */
   
 /* OX expression, CMO expression パーサ */  /* OX expression, CMO expression パーサ */
   
Line 92  static int parse_error(char *s)
Line 92  static int parse_error(char *s)
     longjmp(env_parse, 1);      longjmp(env_parse, 1);
 }  }
   
   int setflag_parse(int flag)
   {
       pflag_cmo_addrev = flag;
   }
   
   int init_parser(char *s)
   {
           setflag_parse(PFLAG_ADDREV);
           setmode_mygetc(s);
   }
   
 /* この部分は書き換え予定. */  /* この部分は書き換え予定. */
 cmo *parse()  cmo *parse()
 {  {
Line 114  cmo *parse()
Line 125  cmo *parse()
         }else {          }else {
             parse_error("invalid symbol.");              parse_error("invalid symbol.");
         }          }
         parse_lf();  /*      parse_lf(); */
         return m;          return m;
     }      }
     return NULL;      return NULL;
Line 536  static cmo *parse_cmo_error2()
Line 547  static cmo *parse_cmo_error2()
 static int c = ' ';  static int c = ' ';
   
 /* 一文字読み込む関数 */  /* 一文字読み込む関数 */
 static int (*GETC)() = getchar;  static char *mygetc_ptr;
   static int mygetc()
   {
           return *mygetc_ptr++;
   }
   
 int setgetc(int (*foo)())  int setmode_mygetc(char *s)
 {  {
     GETC = foo;      mygetc_ptr=s;
 }  }
   
 int resetgetc()  static int (*GETC)() = mygetc;
   
   /* 一文字読み込む関数の選択 (ex. setgetc(getchar); ) */
   int setgetc(int (*foo)())
 {  {
     GETC = getchar;          if (foo == NULL) {
                   GETC = mygetc;
           }else {
                   GETC = foo;
           }
 }  }
   
 #define SIZE_BUFFER  8192  #define SIZE_BUFFER  8192
Line 741  int lex()
Line 763  int lex()
   
     c = GETC();      c = GETC();
     return 0;      return 0;
 }  
   
 /* 一文字読み込む関数 */  
 static char *mygetc_line;  
 static int  mygetc_counter;  
 static int  mygetc_counter_max;  
 static int  mygetc_nonlf_flag;  
   
 int mygetc()  
 {  
     int c = '\0';  
   
     if (mygetc_nonlf_flag && mygetc_counter <= mygetc_counter_max) {  
         c = mygetc_line[mygetc_counter++];  
         if (c == '\0') {  
             c = '\n';  
             mygetc_nonlf_flag = 0;  
         }  
     }  
     return c;  
 }  
   
 int setmode_mygetc(char *s, int len)  
 {  
     mygetc_nonlf_flag=1;  
     mygetc_counter=0;  
     mygetc_counter_max=len;  
     mygetc_line=s;  
 }  
   
 int setflag_parse(int flag)  
 {  
     pflag_cmo_addrev = flag;  
 }  }

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.2

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