Add Var Unpack

This commit is contained in:
Krzosa Karol
2022-06-16 08:56:31 +02:00
parent 185fd8975c
commit 4f0d16e632
4 changed files with 33 additions and 2 deletions

View File

@@ -315,6 +315,19 @@ parse_stmt_scope(Ast_Scope *scope_defined_outside = 0){
scope->stmts.add(result_if);
}
else if(token_is(TK_Identifier) && token_is(TK_Comma, 1)){
Array<Ast_Decl *> decls = {scratch};
do{
Token *name = token_match(TK_Identifier);
Ast_Decl *decl = ast_var(name, 0, name->intern_val, 0);
decls.add(decl);
}while(token_match(TK_Comma));
token_expect(TK_Assign);
Ast_Expr *expr = parse_expr();
Ast_Var_Unpack *vars = ast_var_unpack(token, decls, expr);
scope->stmts.add(vars);
}
else{
Ast *result = parse_decl(false);
if(!result){
@@ -757,6 +770,7 @@ parse_decl(B32 is_global){
Ast_Expr *expr = parse_expr();
result = ast_var(tname, 0, tname->intern_val, expr);
}
else if(is_global && tname->kind != TK_End){
compiler_error(tname, "Unexpected token: [%s] when parsing a declaration", name(tname->kind));
}