[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.13 and 1.14

version 1.13, 2003/03/30 08:05:23 version 1.14, 2003/06/02 10:25:57
Line 1 
Line 1 
 /* -*- mode: C; coding: euc-japan -*- */  /* -*- mode: C; coding: euc-japan -*- */
 /* $OpenXM: OpenXM/src/ox_toolkit/parse.c,v 1.12 2003/03/23 22:09:57 ohara Exp $ */  /* $OpenXM: OpenXM/src/ox_toolkit/parse.c,v 1.13 2003/03/30 08:05:23 ohara Exp $ */
   
 /*  /*
    This module is a parser for OX/CMO expressions.     This module is a parser for OX/CMO expressions.
Line 278  static void parse_comma()
Line 278  static void parse_comma()
   
 static mpz_ptr new_mpz_set_str(char *s)  static mpz_ptr new_mpz_set_str(char *s)
 {  {
     mpz_ptr z = malloc(sizeof(mpz_t));      mpz_ptr z = MALLOC(sizeof(mpz_t));
     mpz_init_set_str(z, s, 10);      mpz_init_set_str(z, s, 10);
     return z;      return z;
 }  }
   
 static mpz_ptr my_mpz_neg(mpz_ptr src)  static mpz_ptr my_mpz_neg(mpz_ptr src)
 {  {
     mpz_ptr z = malloc(sizeof(mpz_t));      mpz_ptr z = MALLOC(sizeof(mpz_t));
     mpz_init(z);      mpz_init(z);
     mpz_neg(z, src);      mpz_neg(z, src);
 #ifdef DEBUG  
     free(src);  
 #endif  
     return z;      return z;
 }  }
   
Line 313  static mpz_ptr parse_mpz_integer()
Line 310  static mpz_ptr parse_mpz_integer()
     if (sign == -1) {      if (sign == -1) {
         val = my_mpz_neg(val);          val = my_mpz_neg(val);
     }      }
 #ifdef DEBUG  
     free(yylval.sym);  
 #endif  
     token = lex();      token = lex();
     return val;      return val;
 }  }
Line 339  static int parse_integer()
Line 333  static int parse_integer()
         parse_error("no integer.");          parse_error("no integer.");
     }      }
     val = sign*atoi(yylval.sym);      val = sign*atoi(yylval.sym);
 #ifdef DEBUG  
     free(yylval.sym);  
 #endif  
     token = lex();      token = lex();
     return val;      return val;
 #endif  #endif
Line 612  static void init_lex(char *s)
Line 603  static void init_lex(char *s)
 #define SIZE_BUFFER  8192  #define SIZE_BUFFER  8192
 static char buffer[SIZE_BUFFER];  static char buffer[SIZE_BUFFER];
   
 static char *mkstr(char *src)  static char *new_string(char *s)
 {  {
     int len;      char *t = MALLOC(strlen(s)+1);
     char *s;      strcpy(t, s);
     len = strlen(src);      return t;
     s = malloc(len+1);  
     strcpy(s, src);  
     return s;  
 }  }
   
 /* no measure for buffer overflow */  /* no measure for buffer overflow */
Line 633  static char *lex_digit()
Line 621  static char *lex_digit()
             buff[i] = c;              buff[i] = c;
         }else {          }else {
             buff[i] = '\0';              buff[i] = '\0';
             return mkstr(buff);              return new_string(buff);
         }          }
         c = mygetc();          c = mygetc();
     }      }
     buff[SIZE_BUFFER-1] = '\0';      buff[SIZE_BUFFER-1] = '\0';
     return mkstr(buff);      return new_string(buff);
 }  }
   
 #define MK_KEY_CMO(x)  { #x , x  , TOKEN(x)  , IS_CMO }  #define MK_KEY_CMO(x)  { #x , x  , TOKEN(x)  , IS_CMO }
Line 730  static char *lex_quoted_string()
Line 718  static char *lex_quoted_string()
         if(c == '"') {          if(c == '"') {
             c = mygetc();              c = mygetc();
             buffer[i]='\0';              buffer[i]='\0';
             return mkstr(buffer);              return new_string(buffer);
         }else if (c == '\\') {          }else if (c == '\\') {
             c0 = c;              c0 = c;
             c = mygetc();              c = mygetc();

Legend:
Removed from v.1.13  
changed lines
  Added in v.1.14

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