More generation from meta data
This commit is contained in:
@@ -5,35 +5,14 @@ lex_init(Allocator *token_string_arena, Allocator *map_allocator, Lexer *l){
|
||||
l->tokens = array_make<Token>(token_string_arena, 1024*2);
|
||||
l->interns= intern_table_make(token_string_arena, map_allocator, 1024);
|
||||
|
||||
keyword_struct = l->intern("struct"_s);
|
||||
keyword_union = l->intern("union"_s);
|
||||
keyword_true = l->intern("true"_s);
|
||||
keyword_default = l->intern("default"_s);
|
||||
keyword_break = l->intern("break"_s);
|
||||
keyword_false = l->intern("false"_s);
|
||||
keyword_return = l->intern("return"_s);
|
||||
keyword_switch = l->intern("switch"_s);
|
||||
keyword_assert = l->intern("Assert"_s);
|
||||
keyword_if = l->intern("if"_s);
|
||||
keyword_elif = l->intern("elif"_s);
|
||||
keyword_pass = l->intern("pass"_s);
|
||||
keyword_else = l->intern("else"_s);
|
||||
keyword_for = l->intern("for"_s);
|
||||
keyword_enum = intern_string(&l->interns, "enum"_s);
|
||||
l->interns.first_keyword = keyword_struct.str;
|
||||
l->interns.last_keyword = keyword_enum.str;
|
||||
/*#import meta
|
||||
for i in meta.keywords:
|
||||
print(f'keyword_{i.lower()} = l->intern("{i}"_s);')
|
||||
print(f'l->interns.first_keyword = keyword_{meta.keywords[0].lower()}.str;')
|
||||
print(f'l->interns.last_keyword = keyword_{meta.keywords[-1].lower()}.str;')
|
||||
|
||||
intern_sizeof = l->intern("SizeOf"_s);
|
||||
intern_lengthof = l->intern("Length"_s);
|
||||
intern_alignof = l->intern("AlignOf"_s);
|
||||
intern_foreign = l->intern("foreign"_s);
|
||||
intern_strict = l->intern("strict"_s);
|
||||
intern_void = l->intern("void"_s);
|
||||
intern_flag = l->intern("flag"_s);
|
||||
intern_it = l->intern("it"_s);
|
||||
|
||||
/*#
|
||||
import meta
|
||||
for i in meta.interns:
|
||||
print(f'intern_{i.lower()} = l->intern("{i}"_s);')
|
||||
|
||||
for i in meta.token_simple_expr:
|
||||
if i[1] != "SPECIAL":
|
||||
@@ -44,6 +23,31 @@ last = "op_" + meta.pascal_to_snake(meta.token_simple_expr[-1][0])
|
||||
print(f"l->first_op = {first};")
|
||||
print(f"l->last_op = {last};")
|
||||
*/
|
||||
keyword_struct = l->intern("struct"_s);
|
||||
keyword_union = l->intern("union"_s);
|
||||
keyword_true = l->intern("true"_s);
|
||||
keyword_default = l->intern("default"_s);
|
||||
keyword_break = l->intern("break"_s);
|
||||
keyword_false = l->intern("false"_s);
|
||||
keyword_return = l->intern("return"_s);
|
||||
keyword_switch = l->intern("switch"_s);
|
||||
keyword_assert = l->intern("Assert"_s);
|
||||
keyword_if = l->intern("if"_s);
|
||||
keyword_elif = l->intern("elif"_s);
|
||||
keyword_pass = l->intern("pass"_s);
|
||||
keyword_else = l->intern("else"_s);
|
||||
keyword_for = l->intern("for"_s);
|
||||
keyword_enum = l->intern("enum"_s);
|
||||
l->interns.first_keyword = keyword_struct.str;
|
||||
l->interns.last_keyword = keyword_enum.str;
|
||||
intern_sizeof = l->intern("SizeOf"_s);
|
||||
intern_length = l->intern("Length"_s);
|
||||
intern_alignof = l->intern("AlignOf"_s);
|
||||
intern_foreign = l->intern("foreign"_s);
|
||||
intern_strict = l->intern("strict"_s);
|
||||
intern_void = l->intern("void"_s);
|
||||
intern_flag = l->intern("flag"_s);
|
||||
intern_it = l->intern("it"_s);
|
||||
op_mul = l->intern("*"_s);
|
||||
op_div = l->intern("/"_s);
|
||||
op_mod = l->intern("%"_s);
|
||||
@@ -71,6 +75,7 @@ op_post_increment = l->intern("++"_s);
|
||||
l->first_op = op_mul;
|
||||
l->last_op = op_post_increment;
|
||||
/*END*/
|
||||
|
||||
}
|
||||
|
||||
function void
|
||||
|
||||
Reference in New Issue
Block a user