[BACK]Return to lex.c CVS log [TXT][DIR] Up to [local] / OpenXM_contrib2 / asir2000 / parse

Diff for /OpenXM_contrib2/asir2000/parse/lex.c between version 1.19 and 1.29

version 1.19, 2001/12/21 08:23:15 version 1.29, 2004/02/04 07:42:07
Line 45 
Line 45 
  * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE,   * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE,
  * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE.   * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE.
  *   *
  * $OpenXM: OpenXM_contrib2/asir2000/parse/lex.c,v 1.18 2001/10/09 01:36:24 noro Exp $   * $OpenXM: OpenXM_contrib2/asir2000/parse/lex.c,v 1.28 2004/01/25 11:54:10 ohara Exp $
 */  */
 #include <ctype.h>  #include <ctype.h>
 #include "ca.h"  #include "ca.h"
Line 126  int yylex()
Line 126  int yylex()
         N n,n1;          N n,n1;
         Q q;          Q q;
         Obj r;          Obj r;
           int floatingpoint = 0;
           double dbl;
           Real real;
           double atof();
           extern int bigfloat;
   
   
         /* initialize buffer pointers */          /* initialize buffer pointers */
         nbuf = nbuf0; tbuf = tbuf0;          nbuf = nbuf0; tbuf = tbuf0;
Line 138  int yylex()
Line 144  int yylex()
                         while ( ( c = Getc() ) == '0' );                          while ( ( c = Getc() ) == '0' );
                         if ( c == '.' ) {                          if ( c == '.' ) {
                                 Ungetc(c); c = '0';                                  Ungetc(c); c = '0';
                         } else if ( c == 'x' ) {                          } else if ( c == 'x' || c == 'X' ) {
                                 for ( i = 0; i < 8; i++ )                                  for ( i = 0; i < 8; i++ )
                                         nbuf[i] = '0';                                          nbuf[i] = '0';
                                 READ_ALNUM_NBUF                                  READ_ALNUM_NBUF
Line 147  int yylex()
Line 153  int yylex()
                                 NTOQ(n1,1,q); r = (Obj)q;                                  NTOQ(n1,1,q); r = (Obj)q;
                                 yylvalp->p = (pointer)r;                                  yylvalp->p = (pointer)r;
                                 return ( FORMULA );                                  return ( FORMULA );
                         } else if ( c == 'b' ) {                          } else if ( c == 'b' || c == 'B' ) {
                                 for ( i = 0; i < 32; i++ )                                  for ( i = 0; i < 32; i++ )
                                         nbuf[i] = '0';                                          nbuf[i] = '0';
                                 READ_ALNUM_NBUF                                  READ_ALNUM_NBUF
Line 180  int yylex()
Line 186  int yylex()
                                 c = Getc();                                  c = Getc();
                                 if ( c == '\\' ) {                                  if ( c == '\\' ) {
                                         c1 = Getc();                                          c1 = Getc();
                                         if ( c1 == 'n' )                                          if ( c1 == 'n' ) {
                                                 c1 = '\n';                                                  c1 = '\n';
                       }else if ( c1 == 't' ) {
                           c1 = '\t';
                       }else if ( isdigit(c1) ){
                           d = c1 - '0';
                           c1 = Getc();
                           if ( isdigit(c1) ) {
                                d = 8*d + (c1 - '0');
                                c1 = Getc();
                                if ( isdigit(c1) ) {
                                    d = 8*d + (c1 - '0');
                                }else {
                                    Ungetc(c1);
                                }
                           }else {
                               Ungetc(c1);
                           }
                           c1 = d;
                       }
                                         REALLOC_NBUF nbuf[i++] = c1;                                          REALLOC_NBUF nbuf[i++] = c1;
                                 } else {                                  } else {
                                         REALLOC_NBUF nbuf[i++] = c;                                          REALLOC_NBUF nbuf[i++] = c;
Line 246  int yylex()
Line 270  int yylex()
                 REALLOC_NBUF nbuf[i++] = c;                  REALLOC_NBUF nbuf[i++] = c;
                 READ_DIGIT_NBUF                  READ_DIGIT_NBUF
                 if ( c == '.' ) {                  if ( c == '.' ) {
                         double dbl;                          floatingpoint = 1;
                         Real real;  
                         double atof();  
                         extern int bigfloat;  
   
                         REALLOC_NBUF nbuf[i++] = c;                          REALLOC_NBUF nbuf[i++] = c;
                         READ_DIGIT_NBUF                          READ_DIGIT_NBUF
                         if ( c == 'e' ) {                          if ( c == 'e' || c == 'E' ) {
                                 REALLOC_NBUF nbuf[i++] = c;                                  REALLOC_NBUF nbuf[i++] = c;
                                 c = Getc();                                  c = Getc();
                                 if ( (c == '+') || (c == '-') ) {                                  if ( (c == '+') || (c == '-') ) {
Line 262  int yylex()
Line 283  int yylex()
                                         Ungetc(c);                                          Ungetc(c);
                                 READ_DIGIT_NBUF                                  READ_DIGIT_NBUF
                         }                          }
                   } else if ( c == 'e' || c == 'E' ) {
                           floatingpoint = 1;
                           REALLOC_NBUF nbuf[i++] = c;
                           c = Getc();
                           if ( (c == '+') || (c == '-') ) {
                                   REALLOC_NBUF nbuf[i++] = c;
                           } else
                                   Ungetc(c);
                           READ_DIGIT_NBUF
                   }
                   if ( floatingpoint ) {
                         Ungetc(c); REALLOC_NBUF nbuf[i] = 0;                          Ungetc(c); REALLOC_NBUF nbuf[i] = 0;
 #if PARI  #if defined(PARI)
                         if ( !bigfloat ) {                          if ( !bigfloat ) {
                                 dbl = (double)atof(nbuf+DLENGTH);                                  dbl = (double)atof(nbuf+DLENGTH);
                                 MKReal(dbl,real); r = (Obj)real;                                  MKReal(dbl,real); r = (Obj)real;
Line 285  int yylex()
Line 317  int yylex()
                 }                  }
                 yylvalp->p = (pointer)r;                  yylvalp->p = (pointer)r;
                 return ( FORMULA );                  return ( FORMULA );
         } else if ( isalpha(c) ) {          } else if ( isalpha(c) || c == ':' ) {
                 i = 0;                  if ( c == ':' ) {
                 tbuf[i++] = c;                          c1 = Getc();
                           if ( c1 != ':' ) {
                                   Ungetc(c1);
                                   return c;
                           }
                           c1 = Getc();
                           if ( !isalpha(c1) ) {
                                   Ungetc(c1);
                                   return COLONCOLON;
                           }
                           i = 0;
                           tbuf[i++] = ':';
                           tbuf[i++] = ':';
                           tbuf[i++] = c1;
                   } else {
                           i = 0;
                           tbuf[i++] = c;
                   }
                 while ( 1 ) {                  while ( 1 ) {
                         c = Getc();                          c = Getc();
                         if ( isalpha(c)||isdigit(c)||(c=='_') ) {                          if ( isalpha(c)||isdigit(c)||(c=='_')||(c=='.') ) {
                                 REALLOC_TBUF tbuf[i++] = c;                                  REALLOC_TBUF tbuf[i++] = c;
                         } else                          } else
                                 break;                                  break;
Line 387  int yylex()
Line 436  int yylex()
                         } else if ( !strcmp(tbuf,"@equiv") ) {                          } else if ( !strcmp(tbuf,"@equiv") ) {
                                 yylvalp->i = (int)L_EQUIV;                                  yylvalp->i = (int)L_EQUIV;
                                 return FOP_EQUIV;                                  return FOP_EQUIV;
                           } else if ( !strcmp(tbuf,"@grlex") ) {
                                   yylvalp->p = Symbol_grlex;
                                   return FORMULA;
                           } else if ( !strcmp(tbuf,"@glex") ) {
                                   yylvalp->p = Symbol_glex;
                                   return FORMULA;
                           } else if ( !strcmp(tbuf,"@lex") ) {
                                   yylvalp->p = Symbol_lex;
                                   return FORMULA;
                         } else {                          } else {
                                 cptr = (char *)MALLOC(strlen(tbuf)+1); strcpy(cptr,tbuf);                                  cptr = (char *)MALLOC(strlen(tbuf)+1); strcpy(cptr,tbuf);
                                 yylvalp->p = (pointer)cptr;                                  yylvalp->p = (pointer)cptr;
Line 413  void purge_stdin()
Line 471  void purge_stdin()
         w_purge_stdin();          w_purge_stdin();
 #elif defined(sparc) || defined(__alpha) || defined(__SVR4) || defined(mips) || defined(VISUAL) || defined(_IBMR2)  #elif defined(sparc) || defined(__alpha) || defined(__SVR4) || defined(mips) || defined(VISUAL) || defined(_IBMR2)
         stdin->_ptr = stdin->_base; stdin->_cnt = 0;          stdin->_ptr = stdin->_base; stdin->_cnt = 0;
 #elif (defined(__MACH__) && defined(__ppc__)) || defined(__CYGWIN__)  #elif (defined(__MACH__) && defined(__ppc__)) || defined(__CYGWIN__) || defined(__FreeBSD__) || defined(__INTERIX)
         stdin->_r = 0; stdin->_p = stdin->_bf._base;          stdin->_r = 0; stdin->_p = stdin->_bf._base;
 #else  #else
 --->FIXIT  --->FIXIT

Legend:
Removed from v.1.19  
changed lines
  Added in v.1.29

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