FOR
%left ARG BLTIN BREAK CALL CLOSE CONTINUE DELETE DO EXIT FOR FUNC
FOR '(' opt_simple_stmt ';' opt_nl pattern ';' opt_nl opt_simple_stmt rparen {inloop++;} stmt
{ --inloop; $$ = stat4(FOR, $3, notnull($6), $9, $12); }
| FOR '(' opt_simple_stmt ';' ';' opt_nl opt_simple_stmt rparen {inloop++;} stmt
{ --inloop; $$ = stat4(FOR, $3, NIL, $7, $10); }
| FOR '(' varname IN varname rparen {inloop++;} stmt
%token <i> ARG BLTIN BREAK CLOSE CONTINUE DELETE DO EXIT FOR FUNC
{ "for", FOR, FOR },
{ FOR, "forstat", "for(" },
FOR LPAREN fexpr SEMI fexpr SEMI fexpr RPAREN statement {
$$ = node(FOR, node(COMMA, $3, node(COMMA, $5, $7)), $9);
| FOR LPAREN var IN var RPAREN statement {
%token <node> DELETE WHILE DO FOR FORIN IF
M_MB_L("for"), KEYWORD, FOR, NULL,
case FOR:
FOR '(' simple_stat ';' conditional ';' simple_stat ')' optNL statement
{ $$ = stat4(FOR, $3, $5, $7, $10); }
| FOR '(' simple_stat ';' ';' simple_stat ')' optNL statement
{ $$ = stat4(FOR, $3, 0, $6, $9); }
| FOR '(' VAR IN VAR ')' optNL statement
%token IF ELSE WHILE FOR IN NEXT EXIT BREAK CONTINUE
{ FOR, "forstat", "for("},
COPY DATABASE DEFERRED DELIMITERS DESC DETACH EACH END EXPLAIN FAIL FOR
foreach_clause(A) ::= FOR EACH ROW. { A = TK_ROW; }
foreach_clause(A) ::= FOR EACH STATEMENT. { A = TK_STATEMENT; }