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

Diff for /src/usr.bin/awk/b.c between version 1.6 and 1.7

version 1.6, 1999/04/18 17:06:30 version 1.7, 1999/04/20 17:31:29
Line 38 
Line 38 
                                 /* NCHARS is 2**n */                                  /* NCHARS is 2**n */
 #define MAXLIN 22  #define MAXLIN 22
   
 #define type(v)         (v)->nobj  #define type(v)         (v)->nobj       /* badly overloaded here */
   #define info(v)         (v)->ntype      /* badly overloaded here */
 #define left(v)         (v)->narg[0]  #define left(v)         (v)->narg[0]
 #define right(v)        (v)->narg[1]  #define right(v)        (v)->narg[1]
 #define parent(v)       (v)->nnext  #define parent(v)       (v)->nnext
Line 183 
Line 184 
 {  {
         switch (type(p)) {          switch (type(p)) {
         LEAF          LEAF
                 left(p) = (Node *) poscnt;                  info(p) = poscnt;
                 poscnt++;                  poscnt++;
                 break;                  break;
         UNARY          UNARY
Line 339 
Line 340 
   
         switch (type(v)) {          switch (type(v)) {
         LEAF          LEAF
                 f->re[(int) left(v)].ltype = type(v);                  f->re[info(v)].ltype = type(v);
                 f->re[(int) left(v)].lval.np = right(v);                  f->re[info(v)].lval.np = right(v);
                 while (f->accept >= maxsetvec) {        /* guessing here! */                  while (f->accept >= maxsetvec) {        /* guessing here! */
                         maxsetvec *= 4;                          maxsetvec *= 4;
                         setvec = (int *) realloc(setvec, maxsetvec * sizeof(int));                          setvec = (int *) realloc(setvec, maxsetvec * sizeof(int));
Line 354 
Line 355 
                 follow(v);      /* computes setvec and setcnt */                  follow(v);      /* computes setvec and setcnt */
                 if ((p = (int *) calloc(1, (setcnt+1)*sizeof(int))) == NULL)                  if ((p = (int *) calloc(1, (setcnt+1)*sizeof(int))) == NULL)
                         overflo("out of space building follow set");                          overflo("out of space building follow set");
                 f->re[(int) left(v)].lfollow = p;                  f->re[info(v)].lfollow = p;
                 *p = setcnt;                  *p = setcnt;
                 for (i = f->accept; i >= 0; i--)                  for (i = f->accept; i >= 0; i--)
                         if (setvec[i] == 1)                          if (setvec[i] == 1)
Line 380 
Line 381 
   
         switch (type(p)) {          switch (type(p)) {
         LEAF          LEAF
                 lp = (int) left(p);     /* look for high-water mark of subscripts */                  lp = info(p);   /* look for high-water mark of subscripts */
                 while (setcnt >= maxsetvec || lp >= maxsetvec) {        /* guessing here! */                  while (setcnt >= maxsetvec || lp >= maxsetvec) {        /* guessing here! */
                         maxsetvec *= 4;                          maxsetvec *= 4;
                         setvec = (int *) realloc(setvec, maxsetvec * sizeof(int));                          setvec = (int *) realloc(setvec, maxsetvec * sizeof(int));
                         tmpset = (int *) realloc(tmpset, maxsetvec * sizeof(int));                          tmpset = (int *) realloc(tmpset, maxsetvec * sizeof(int));
                         if (setvec == 0 || tmpset == 0) { abort();                          if (setvec == 0 || tmpset == 0)
                                 overflo("out of space in first()");                                  overflo("out of space in first()");
 }  
                 }                  }
                 if (setvec[lp] != 1) {                  if (setvec[lp] != 1) {
                         setvec[lp] = 1;                          setvec[lp] = 1;
Line 602 
Line 602 
   
         switch (rtok) {          switch (rtok) {
         case CHAR:          case CHAR:
                 np = op2(CHAR, NIL, (Node *) rlxval);                  np = op2(CHAR, NIL, itonp(rlxval));
                 rtok = relex();                  rtok = relex();
                 return (unary(np));                  return (unary(np));
         case ALL:          case ALL:
Line 621 
Line 621 
                 return (unary(np));                  return (unary(np));
         case '^':          case '^':
                 rtok = relex();                  rtok = relex();
                 return (unary(op2(CHAR, NIL, (Node *) HAT)));                  return (unary(op2(CHAR, NIL, itonp(HAT))));
         case '$':          case '$':
                 rtok = relex();                  rtok = relex();
                 return (unary(op2(CHAR, NIL, NIL)));                  return (unary(op2(CHAR, NIL, NIL)));
Line 754 
Line 754 
                 maxsetvec *= 4;                  maxsetvec *= 4;
                 setvec = (int *) realloc(setvec, maxsetvec * sizeof(int));                  setvec = (int *) realloc(setvec, maxsetvec * sizeof(int));
                 tmpset = (int *) realloc(tmpset, maxsetvec * sizeof(int));                  tmpset = (int *) realloc(tmpset, maxsetvec * sizeof(int));
                 if (setvec == 0 || tmpset == 0) { abort();                  if (setvec == 0 || tmpset == 0)
                         overflo("out of space in cgoto()");                          overflo("out of space in cgoto()");
 }  
         }          }
         for (i = 0; i <= f->accept; i++)          for (i = 0; i <= f->accept; i++)
                 setvec[i] = 0;                  setvec[i] = 0;
Line 765 
Line 764 
         p = f->posns[s];          p = f->posns[s];
         for (i = 1; i <= *p; i++) {          for (i = 1; i <= *p; i++) {
                 if ((k = f->re[p[i]].ltype) != FINAL) {                  if ((k = f->re[p[i]].ltype) != FINAL) {
                         if ((k == CHAR && c == f->re[p[i]].lval.i)                          if ((k == CHAR && c == ptoi(f->re[p[i]].lval.np))
                          || (k == DOT && c != 0 && c != HAT)                           || (k == DOT && c != 0 && c != HAT)
                          || (k == ALL && c != 0)                           || (k == ALL && c != 0)
                          || (k == CCL && member(c, f->re[p[i]].lval.up))                           || (k == CCL && member(c, f->re[p[i]].lval.up))

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