rparen
FOR '(' opt_simple_stmt ';' opt_nl pattern ';' opt_nl opt_simple_stmt rparen {inloop++;} stmt
| FOR '(' opt_simple_stmt ';' ';' opt_nl opt_simple_stmt rparen {inloop++;} stmt
| FOR '(' varname IN varname rparen {inloop++;} stmt
IF '(' pattern rparen { $$ = notnull($3); }
| FUNC funcname '(' varlist rparen {infunc = true;} lbrace stmtlist '}'
rparen:
')' | rparen NL
WHILE '(' pattern rparen { $$ = notnull($3); }
%type <i> pst opt_pst lbrace rbrace rparen comma nl opt_nl and bor
case rparen: /* got a ')' or ']' */
if (ps.last_token == rparen && rparen_count == 0)
if (ps.last_token == rparen && ps.tos <= 1) {
&& (ps.last_token == rparen || ps.last_token == semicolon ||
code = rparen;
if (last_code == ident || last_code == rparen) {