Add Var Unpack
This commit is contained in:
14
parsing.cpp
14
parsing.cpp
@@ -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));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user