Move interns into Core_Ctx

This commit is contained in:
Krzosa Karol
2023-01-01 14:23:59 +01:00
parent 647958b72d
commit 34928e3977
5 changed files with 103 additions and 103 deletions

View File

@@ -1,13 +1,14 @@
CORE_Static void
core_init_compiler(Core_Ctx *ctx, Allocator *allocator) {
ctx->init_ctx_time_begin = os_time();
pctx = ctx;
ctx->emit_type_info = true;
ctx->emit_line_directives = true;
ctx->color_codes_enabled = true;
ctx->same_scope_token = { SAME_SCOPE };
ctx->init_ctx_time_begin = os_time();
pctx = ctx;
ctx->perm_push_only = make_push_arena(allocator);
ctx->perm = &ctx->perm_push_only;
ctx->scratch = allocate_scratch_arena(ctx->perm, mib(1));
@@ -24,49 +25,49 @@ core_init_compiler(Core_Ctx *ctx, Allocator *allocator) {
/*#import meta
for i in meta.keywords:
print(f'keyword_{i.lower()} = ctx->intern("{i}"_s);')
print(f'ctx->interns.first_keyword = keyword_{meta.keywords[0].lower()}.str;')
print(f'ctx->interns.last_keyword = keyword_{meta.keywords[-1].lower()}.str;')
print(f'pctx->keyword_{i.lower()} = pctx->intern("{i}"_s);')
print(f'pctx->interns.first_keyword = keyword_{meta.keywords[0].lower()}.str;')
print(f'pctx->interns.last_keyword = keyword_{meta.keywords[-1].lower()}.str;')
for i in meta.interns:
print(f'intern_{i.lower()} = ctx->intern("{i}"_s);')
print(f'pctx->intern_{i.lower()} = pctx->intern("{i}"_s);')
index = 0
for i in meta.token_simple_expr:
if i[1] != "SPECIAL":
print(f'op_info_table[{index}].op = ctx->intern("{i[1]}"_s);')
index += 1
if i[1] != "SPECIAL":
print(f'op_info_table[{index}].op = pctx->intern("{i[1]}"_s);')
index += 1
*/
keyword_struct = ctx->intern("struct"_s);
keyword_union = ctx->intern("union"_s);
keyword_true = ctx->intern("true"_s);
keyword_default = ctx->intern("default"_s);
keyword_break = ctx->intern("break"_s);
keyword_false = ctx->intern("false"_s);
keyword_return = ctx->intern("return"_s);
keyword_switch = ctx->intern("switch"_s);
keyword_assert = ctx->intern("Assert"_s);
keyword_if = ctx->intern("if"_s);
keyword_elif = ctx->intern("elif"_s);
keyword_pass = ctx->intern("pass"_s);
keyword_else = ctx->intern("else"_s);
keyword_for = ctx->intern("for"_s);
keyword_enum = ctx->intern("enum"_s);
ctx->interns.first_keyword = keyword_struct.str;
ctx->interns.last_keyword = keyword_enum.str;
intern_typeof = ctx->intern("TypeOf"_s);
intern_sizeof = ctx->intern("SizeOf"_s);
intern_len = ctx->intern("Len"_s);
intern_alignof = ctx->intern("AlignOf"_s);
intern_foreign = ctx->intern("foreign"_s);
intern_strict = ctx->intern("strict"_s);
intern_void = ctx->intern("void"_s);
intern_flag = ctx->intern("flag"_s);
intern_it = ctx->intern("it"_s);
intern_load = ctx->intern("load"_s);
intern_import = ctx->intern("import"_s);
intern_link = ctx->intern("link"_s);
pctx->keyword_struct = ctx->intern("struct"_s);
pctx->keyword_union = ctx->intern("union"_s);
pctx->keyword_true = ctx->intern("true"_s);
pctx->keyword_default = ctx->intern("default"_s);
pctx->keyword_break = ctx->intern("break"_s);
pctx->keyword_false = ctx->intern("false"_s);
pctx->keyword_return = ctx->intern("return"_s);
pctx->keyword_switch = ctx->intern("switch"_s);
pctx->keyword_assert = ctx->intern("Assert"_s);
pctx->keyword_if = ctx->intern("if"_s);
pctx->keyword_elif = ctx->intern("elif"_s);
pctx->keyword_pass = ctx->intern("pass"_s);
pctx->keyword_else = ctx->intern("else"_s);
pctx->keyword_for = ctx->intern("for"_s);
pctx->keyword_enum = ctx->intern("enum"_s);
pctx->interns.first_keyword = pctx->keyword_struct.str;
pctx->interns.last_keyword = pctx->keyword_enum.str;
pctx->intern_typeof = ctx->intern("TypeOf"_s);
pctx->intern_sizeof = ctx->intern("SizeOf"_s);
pctx->intern_len = ctx->intern("Len"_s);
pctx->intern_alignof = ctx->intern("AlignOf"_s);
pctx->intern_foreign = ctx->intern("foreign"_s);
pctx->intern_strict = ctx->intern("strict"_s);
pctx->intern_void = ctx->intern("void"_s);
pctx->intern_flag = ctx->intern("flag"_s);
pctx->intern_it = ctx->intern("it"_s);
pctx->intern_load = ctx->intern("load"_s);
pctx->intern_import = ctx->intern("import"_s);
pctx->intern_link = ctx->intern("link"_s);
op_info_table[0].op = ctx->intern("*"_s);
op_info_table[1].op = ctx->intern("/"_s);
op_info_table[2].op = ctx->intern("%"_s);