[BACK]Return to lex.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / awk

Diff for /src/usr.bin/awk/lex.c between version 1.3 and 1.4

version 1.3, 1999/04/20 17:31:29 version 1.4, 1999/12/08 23:09:45
Line 124 
Line 124 
                 for ( ; (c = input()) != 0; ) {                  for ( ; (c = input()) != 0; ) {
                         if (bp-buf >= sz)                          if (bp-buf >= sz)
                                 if (!adjbuf(&buf, &sz, bp-buf+2, 100, &bp, 0))                                  if (!adjbuf(&buf, &sz, bp-buf+2, 100, &bp, 0))
                                         ERROR "out of space for name %.10s...", buf FATAL;                                          FATAL( "out of space for name %.10s...", buf );
                         if (isalnum(c) || c == '_')                          if (isalnum(c) || c == '_')
                                 *bp++ = c;                                  *bp++ = c;
                         else {                          else {
Line 133 
Line 133 
                                 break;                                  break;
                         }                          }
                 }                  }
                   *bp = 0;
         } else {        /* it's a number */          } else {        /* it's a number */
                 char *rem;                  char *rem;
                 /* read input until can't be a number */                  /* read input until can't be a number */
                 for ( ; (c = input()) != 0; ) {                  for ( ; (c = input()) != 0; ) {
                         if (bp-buf >= sz)                          if (bp-buf >= sz)
                                 if (!adjbuf(&buf, &sz, bp-buf+2, 100, &bp, 0))                                  if (!adjbuf(&buf, &sz, bp-buf+2, 100, &bp, 0))
                                         ERROR "out of space for number %.10s...", buf FATAL;                                          FATAL( "out of space for number %.10s...", buf );
                         if (isdigit(c) || c == 'e' || c == 'E'                          if (isdigit(c) || c == 'e' || c == 'E'
                           || c == '.' || c == '+' || c == '-')                            || c == '.' || c == '+' || c == '-')
                                 *bp++ = c;                                  *bp++ = c;
Line 171 
Line 172 
         static int bufsize = 500;          static int bufsize = 500;
   
         if (buf == 0 && (buf = (char *) malloc(bufsize)) == NULL)          if (buf == 0 && (buf = (char *) malloc(bufsize)) == NULL)
                 ERROR "out of space in yylex" FATAL;                  FATAL( "out of space in yylex" );
         if (sc) {          if (sc) {
                 sc = 0;                  sc = 0;
                 RET('}');                  RET('}');
Line 316 
Line 317 
   
                 case '}':                  case '}':
                         if (--bracecnt < 0)                          if (--bracecnt < 0)
                                 ERROR "extra }" SYNTAX;                                  SYNTAX( "extra }" );
                         sc = 1;                          sc = 1;
                         RET(';');                          RET(';');
                 case ']':                  case ']':
                         if (--brackcnt < 0)                          if (--brackcnt < 0)
                                 ERROR "extra ]" SYNTAX;                                  SYNTAX( "extra ]" );
                         RET(']');                          RET(']');
                 case ')':                  case ')':
                         if (--parencnt < 0)                          if (--parencnt < 0)
                                 ERROR "extra )" SYNTAX;                                  SYNTAX( "extra )" );
                         RET(')');                          RET(')');
                 case '{':                  case '{':
                         bracecnt++;                          bracecnt++;
Line 354 
Line 355 
         static int bufsz = 500;          static int bufsz = 500;
   
         if (buf == 0 && (buf = (char *) malloc(bufsz)) == NULL)          if (buf == 0 && (buf = (char *) malloc(bufsz)) == NULL)
                 ERROR "out of space for strings" FATAL;                  FATAL("out of space for strings");
         for (bp = buf; (c = input()) != '"'; ) {          for (bp = buf; (c = input()) != '"'; ) {
                 if (!adjbuf(&buf, &bufsz, bp-buf+2, 500, &bp, 0))                  if (!adjbuf(&buf, &bufsz, bp-buf+2, 500, &bp, 0))
                         ERROR "out of space for string %.10s...", buf FATAL;                          FATAL("out of space for string %.10s...", buf);
                 switch (c) {                  switch (c) {
                 case '\n':                  case '\n':
                 case '\r':                  case '\r':
                 case 0:                  case 0:
                         ERROR "non-terminated string %.10s...", buf SYNTAX;                          SYNTAX( "non-terminated string %.10s...", buf );
                         lineno++;                          lineno++;
                         break;                          break;
                 case '\\':                  case '\\':
Line 454 
Line 455 
                 switch (kp->type) {     /* special handling */                  switch (kp->type) {     /* special handling */
                 case FSYSTEM:                  case FSYSTEM:
                         if (safe)                          if (safe)
                                 ERROR "system is unsafe" SYNTAX;                                  SYNTAX( "system is unsafe" );
                         RET(kp->type);                          RET(kp->type);
                 case FUNC:                  case FUNC:
                         if (infunc)                          if (infunc)
                                 ERROR "illegal nested function" SYNTAX;                                  SYNTAX( "illegal nested function" );
                         RET(kp->type);                          RET(kp->type);
                 case RETURN:                  case RETURN:
                         if (!infunc)                          if (!infunc)
                                 ERROR "return not in function" SYNTAX;                                  SYNTAX( "return not in function" );
                         RET(kp->type);                          RET(kp->type);
                 case VARNF:                  case VARNF:
                         yylval.cp = setsymtab("NF", "", 0.0, NUM, symtab);                          yylval.cp = setsymtab("NF", "", 0.0, NUM, symtab);
Line 498 
Line 499 
         char *bp;          char *bp;
   
         if (buf == 0 && (buf = (char *) malloc(bufsz)) == NULL)          if (buf == 0 && (buf = (char *) malloc(bufsz)) == NULL)
                 ERROR "out of space for rex expr" FATAL;                  FATAL("out of space for rex expr");
         bp = buf;          bp = buf;
         for ( ; (c = input()) != '/' && c != 0; ) {          for ( ; (c = input()) != '/' && c != 0; ) {
                 if (!adjbuf(&buf, &bufsz, bp-buf+3, 500, &bp, 0))                  if (!adjbuf(&buf, &bufsz, bp-buf+3, 500, &bp, 0))
                         ERROR "out of space for reg expr %.10s...", buf FATAL;                          FATAL("out of space for reg expr %.10s...", buf);
                 if (c == '\n') {                  if (c == '\n') {
                         ERROR "newline in regular expression %.10s...", buf SYNTAX;                          SYNTAX( "newline in regular expression %.10s...", buf );
                         unput('\n');                          unput('\n');
                         break;                          break;
                 } else if (c == '\\') {                  } else if (c == '\\') {
Line 554 
Line 555 
         if (c == '\n')          if (c == '\n')
                 lineno--;                  lineno--;
         if (yysptr >= yysbuf + sizeof(yysbuf))          if (yysptr >= yysbuf + sizeof(yysbuf))
                 ERROR "pushed back too much: %.20s...", yysbuf FATAL;                  FATAL("pushed back too much: %.20s...", yysbuf);
         *yysptr++ = c;          *yysptr++ = c;
         if (--ep < ebuf)          if (--ep < ebuf)
                 ep = ebuf + sizeof(ebuf) - 1;                  ep = ebuf + sizeof(ebuf) - 1;

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.4