#pragma once typedef struct Expr Expr; typedef struct Parser_Error Parser_Error; struct Parser_Error{ Parser_Error *next; String message; Token *token; }; typedef struct Parser{ Arena main_arena; Arena intern_table_arena; Arena symbol_table_arena; S64 interns_in_bytes; S64 interns_inserted; Intern_String *interns; S64 interns_count; U8 *first_keyword; U8 *last_keyword; Parser_Error *first_error; Parser_Error *last_error; Tokens tokens; }Parser; function Intern_String intern_string(Parser *p, String string); function Token *token_get(Parser *p); function B32 intern_compare(Intern_String a, Intern_String b);