ref: e2d71a98a4c901a4584d4565ae54a2a594def747
parent: 69325710b145823367d4c21c8b55c0657305bd1c
parent: a3e9e8285e825e8d49570d9564b88b726dd30c2a
author: Arnold D. Robbins <arnold@skeeve.com>
date: Fri Jan 31 03:25:51 EST 2020
Merge branch 'fix-int-expr-zero'
--- a/awkgram.y
+++ b/awkgram.y
@@ -50,7 +50,7 @@
%token <i> NL ',' '{' '(' '|' ';' '/' ')' '}' '[' ']'%token <i> ARRAY
%token <i> MATCH NOTMATCH MATCHOP
-%token <i> FINAL DOT ALL CCL NCCL CHAR OR STAR QUEST PLUS EMPTYRE
+%token <i> FINAL DOT ALL CCL NCCL CHAR OR STAR QUEST PLUS EMPTYRE ZERO
%token <i> AND BOR APPEND EQ GE GT LE LT NE IN
%token <i> ARG BLTIN BREAK CLOSE CONTINUE DELETE DO EXIT FOR FUNC
%token <i> SUB GSUB IF INDEX LSUBSTR MATCHFCN NEXT NEXTFILE
--- a/b.c
+++ b/b.c
@@ -263,6 +263,8 @@
parent(left(p)) = p;
parent(right(p)) = p;
break;
+ case ZERO:
+ break;
default: /* can't happen */
FATAL("can't happen: unknown type %d in penter", type(p));break;
@@ -277,6 +279,7 @@
xfree(p);
break;
UNARY
+ case ZERO:
freetr(left(p));
xfree(p);
break;
@@ -436,6 +439,8 @@
cfoll(f,left(v));
cfoll(f,right(v));
break;
+ case ZERO:
+ break;
default: /* can't happen */
FATAL("can't happen: unknown type %d in cfoll", type(v));}
@@ -479,6 +484,8 @@
b = first(right(p));
if (first(left(p)) == 0 || b == 0) return(0);
return(1);
+ case ZERO:
+ return 0;
}
FATAL("can't happen: unknown type %d in first", type(p)); /* can't happen */return(-1);
@@ -838,6 +845,9 @@
case QUEST:
rtok = relex();
return (unary(op2(QUEST, np, NIL)));
+ case ZERO:
+ rtok = relex();
+ return (unary(op2(ZERO, np, NIL)));
default:
return (np);
}
@@ -1191,7 +1201,7 @@
if (repeat(starttok, prestr-starttok, lastatom,
startreptok - lastatom, n, m) > 0) { if (n == 0 && m == 0) {- return EMPTYRE;
+ return ZERO;
}
/* must rescan input for next token */
goto rescan;
--
⑨