def p_stmt_expr_empty(p): 'stmt_expr_opt : ' p[0] = ast.SkipStmt(None)
def p_stmt_error(p): 'stmt : error SEMICOLON' signal_error("Invalid statement", p.lineno(2)) decaflexer.errorflag = True p[0] = ast.SkipStmt(p.lineno(2))
def p_stmt_empty(p): 'stmt : SEMICOLON' p[0] = ast.SkipStmt(p.lineno(1))
def p_stmt_var_decl(p): 'stmt : var_decl' p[0] = ast.SkipStmt(None)
def p_stmt_if_noelse(p): 'stmt : IF LPAREN expr RPAREN stmt' p[0] = ast.IfStmt(p[3], p[5], ast.SkipStmt(None), p.lineno(1))
def p_block_error(p): 'block : LBRACE block_begin stmt_list error block_end RBRACE' p[0] = ast.SkipStmt(p.lineno(1))