initexpr = parse_expression_leave(parser, false, false, false);
if (!initexpr)
goto onerr;
initexpr = parse_expression_leave(parser, false, false, false);
if (!initexpr)
goto onerr;
/* move on to condition */
if (parser->tok != ';') {
parseerror(parser, "expected semicolon after for-loop initializer");
goto onerr;
}
/* move on to condition */
if (parser->tok != ';') {
parseerror(parser, "expected semicolon after for-loop initializer");
goto onerr;
}
if (!parser_next(parser)) {
parseerror(parser, "expected for-loop condition");
goto onerr;
}
}
if (!parser_next(parser)) {
parseerror(parser, "expected for-loop condition");
goto onerr;
}
}
ast_delete(basetype);
for (auto &it : parser->gotos)
parseerror(parser, "undefined label: `%s`", it->name);
ast_delete(basetype);
for (auto &it : parser->gotos)
parseerror(parser, "undefined label: `%s`", it->name);