IF
%left GSUB IF INDEX LSUBSTR MATCHFCN NEXT NUMBER
IF '(' pattern rparen { $$ = notnull($3); }
| if stmt else stmt { $$ = stat3(IF, $1, $2, $4); }
| if stmt { $$ = stat3(IF, $1, $2, NIL); }
%token <i> SUB GSUB IF INDEX LSUBSTR MATCHFCN NEXT NEXTFILE
{ "if", IF, IF },
{ IF, "ifstat", "if(" },
| IF LPAREN expr RPAREN statement ELSE statement {
$$ = node(IF, $3, node(ELSE, $5, $7));
| IF LPAREN expr RPAREN statement %prec ELSE {
$$ = node(IF, $3, node(ELSE, $5, NNULL));
%token <node> DELETE WHILE DO FOR FORIN IF
M_MB_L("if"), KEYWORD, IF, NULL,
case IF:
{ "if", IF },
| IF '(' expr ')' stmt
| IF '(' expr ')' '{' stmtlist '}'
| IF
%token <tok> ID QUOTE NUMBER IF PATHFUNC
IF '(' conditional ')' optNL { $$ = $3; }
| if statement { $$ = stat3(IF, $1, $2, 0); }
{ $$ = stat3(IF, $1, $2, $4); }
%token IF ELSE WHILE FOR IN NEXT EXIT BREAK CONTINUE
{ IF, "ifstat", "if("},