Allocator logging

This commit is contained in:
Krzosa Karol
2022-05-13 20:36:42 +02:00
parent 2689aa9ba1
commit ea0b1c352d
5 changed files with 180 additions and 102 deletions

View File

@@ -14,6 +14,7 @@ const U64 Parse_Ctx_ID = 115151;
struct Parse_Ctx:Lexer{
Arena ast_arena;
Token empty_token;
S64 indent;
S64 pt[256]; // precedence table
void init(){
@@ -24,7 +25,7 @@ struct Parse_Ctx:Lexer{
pt[TK_Div] = mulp;
pt[TK_Mul] = mulp;
arena_init(&ast_arena);
arena_init(&ast_arena, "AST Arena"_s);
lex_init(this);
keyword_const = intern_string(&interns, "const"_s);
keyword_struct= intern_string(&interns, "struct"_s);
@@ -41,6 +42,8 @@ struct Parse_Ctx:Lexer{
enum Ast_Kind{
AK_None,
AK_Package,
AK_Expr_Str,
AK_Expr_Int,
AK_Expr_Ident,
@@ -49,6 +52,7 @@ enum Ast_Kind{
AK_Decl_Func,
AK_Decl_Func_Arg,
AK_Decl_Const,
AK_Decl_Var,
AK_Typespec_Ident,
AK_Typespec_Pointer,
@@ -103,6 +107,11 @@ struct Ast_Decl:Ast{
};
};
struct Ast_Package:Ast{
Intern_String name;
Array<Ast_Decl *> decls;
};
//-----------------------------------------------------------------------------
// AST Constructors beginning with expressions
//-----------------------------------------------------------------------------
@@ -178,9 +187,17 @@ ast_decl_func(Token *pos, Intern_String name){
}
function Ast_Decl *
ast_decl_const(Token *pos, Intern_String name, Ast_Expr *expr){
AST_NEW(Decl, AK_Decl_Const, pos);
ast_decl_var(Token *pos, Ast_Typespec *typespec, Intern_String name, Ast_Expr *expr){
AST_NEW(Decl, AK_Decl_Var, pos);
result->var.expr = expr;
result->var.typespec = typespec;
result->name = name;
return result;
}
function Ast_Package *
ast_package(Token *pos, String name){
AST_NEW(Package, AK_Package, pos);
result->name = intern_string(&ctx->interns, name);
return result;
}