Backup, Decl,Type parsing enum,structs etc.

This commit is contained in:
Krzosa Karol
2022-04-29 23:28:41 +02:00
parent 9cbbb4d616
commit a5a3acf3ef
12 changed files with 407 additions and 45 deletions

24
decl.c
View File

@@ -2,7 +2,6 @@
function Decl *
decl_new(Parser *p, Decl_Kind kind, Token *token, Intern_String name){
Decl *result = arena_push_struct(&p->main_arena, Decl);
memory_zero(result, sizeof(Decl));
result->token = token;
result->kind = kind;
@@ -13,12 +12,33 @@ decl_new(Parser *p, Decl_Kind kind, Token *token, Intern_String name){
function Decl_Enum_Child *
decl_enum_child(Parser *p, Token *token, Expr *expr){
Decl_Enum_Child *result = arena_push_struct(&p->main_arena, Decl_Enum_Child);
memory_zero(result, sizeof(Decl_Enum_Child));
result->expr = expr;
result->token = token;
return result;
}
function Decl *
decl_variable(Parser *p, Token *token, Type *type, Expr *expr){
Decl *result = decl_new(p, DK_Variable, token, token->intern_val);
result->var_val.expr = expr;
result->var_val.type = type;
return result;
}
function Decl *
decl_function(Parser *p, Token *token, Type *return_type){
Decl *result = decl_new(p, DK_Function, token, token->intern_val);
result->func_val.return_type = return_type;
return result;
}
function Decl *
decl_type(Parser *p, Token *token, Type *type, Intern_String name){
Decl *result = decl_new(p, DK_Typedef, token, name);
result->typedef_val.type = type;
return result;
}
function Decl *
decl_enum(Parser *p, Token *token, Intern_String name){
Decl *result = decl_new(p, DK_Enum, token, name);