More for loop variations working

This commit is contained in:
Krzosa Karol
2022-06-06 23:55:44 +02:00
parent f852a23fcb
commit d3da979d64
3 changed files with 27 additions and 6 deletions

View File

@@ -203,12 +203,14 @@ parse_block(){
Ast_Expr *iter = 0;
if(!token_is(OPEN_SCOPE)){
Ast_Expr *expr_first = parse_expr();
init = parse_init_stmt(expr_first);
if(!token_is(TK_Comma)){
Ast_Expr *expr_first = parse_expr();
init = parse_init_stmt(expr_first);
}
if(token_match(TK_Comma)){
cond = parse_expr();
if(!token_is(TK_Comma)) cond = parse_expr();
if(token_match(TK_Comma)){
iter = parse_expr();
iter = parse_init_stmt(iter);
@@ -480,12 +482,15 @@ parse_struct(Token *pos){
token_match(OPEN_SCOPE);
do{
Token *token = token_get();
Ast_Named *named = parse_named(false);
named->flags = set_flag(named->flags, AST_AGGREGATE_CHILD);
if(!named) parsing_error(token, "Failed to parse struct member");
named->flags = set_flag(named->flags, AST_AGGREGATE_CHILD);
if(named->kind == AST_CONST){
members_const.add((Ast_Const *)named);
} else {
}
else {
assert(named->kind == AST_VAR);
members.add((Ast_Var *)named);
}