diff --git a/core_compiler.cpp b/core_compiler.cpp index 7950942..836efe1 100644 --- a/core_compiler.cpp +++ b/core_compiler.cpp @@ -36,19 +36,19 @@ static void core_init_compiler(Core_Ctx *ctx, Allocator *allocator) { ctx->interns = intern_table_make(ctx->perm, ctx->heap, 2048); /*#import meta - for i in meta.keywords: - print(f'pctx->keyword_{i.lower()} = pctx->intern("{i}"_s);') - print(f'pctx->interns.first_keyword = pctx->keyword_{meta.keywords[0].lower()}.str;') - print(f'pctx->interns.last_keyword = pctx->keyword_{meta.keywords[-1].lower()}.str;') +for i in meta.keywords: + print(f'pctx->keyword_{i.lower()} = pctx->intern("{i}"_s);') +print(f'pctx->interns.first_keyword = pctx->keyword_{meta.keywords[0].lower()}.str;') +print(f'pctx->interns.last_keyword = pctx->keyword_{meta.keywords[-1].lower()}.str;') - for i in meta.interns: - print(f'pctx->intern_{i.lower()} = pctx->intern("{i}"_s);') +for i in meta.interns: + 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'pctx->op_info_table[{index}] = {{pctx->intern("{i[1]}"_s), "{i[0].upper()}"_s, TK_{i[0]}, {int(i[2]&meta.BINARY_EXPR>0)}, {int(i[2]&meta.UNARY_EXPR>0)}}};') - index += 1 +index = 0 +for i in meta.token_simple_expr: + if i[1] != "SPECIAL": + print(f'pctx->op_info_table[{index}] = {{pctx->intern("{i[1]}"_s), "{i[0].upper()}"_s, TK_{i[0]}, {int(i[2]&meta.BINARY_EXPR>0)}, {int(i[2]&meta.UNARY_EXPR>0)}}};') + index += 1 */ pctx->keyword_struct = pctx->intern("struct"_s); diff --git a/core_compiler.h b/core_compiler.h index 49cc5f2..ea2fb88 100644 --- a/core_compiler.h +++ b/core_compiler.h @@ -89,8 +89,8 @@ struct Core_Ctx { Token null_token; /*#import meta - for i in meta.keywords: print(f'Intern_String keyword_{i.lower()};') - for i in meta.interns: print(f'Intern_String intern_{i.lower()};') +for i in meta.keywords: print(f'Intern_String keyword_{i.lower()};') +for i in meta.interns: print(f'Intern_String intern_{i.lower()};') */ Intern_String keyword_struct; Intern_String keyword_union; @@ -122,11 +122,11 @@ struct Core_Ctx { /*END*/ /*#import meta - size = 0 - for i in meta.token_simple_expr: - if i[1] != "SPECIAL": - size += 1 - print(f"Ast_Operator_Info op_info_table[{size}];") +size = 0 +for i in meta.token_simple_expr: + if i[1] != "SPECIAL": + size += 1 +print(f"Ast_Operator_Info op_info_table[{size}];") */ Ast_Operator_Info op_info_table[20]; /*END*/ diff --git a/core_compiler_interface.hpp b/core_compiler_interface.hpp index adc4cae..1b6c8d7 100644 --- a/core_compiler_interface.hpp +++ b/core_compiler_interface.hpp @@ -59,9 +59,9 @@ struct List { enum Token_Kind { TK_End, /*# - import meta - for i in meta.token_kinds: - print(" TK_" + i[0] + ",") +import meta +for i in meta.token_kinds: + print(" TK_" + i[0] + ",") */ TK_Mul, TK_Div, @@ -227,7 +227,7 @@ enum Ast_Type_Kind { struct Value { /*#import meta - print(meta.value_struct_content) +print(meta.value_struct_content) */ Ast_Type *type; Ast_Decl *resolved_decl; @@ -246,7 +246,7 @@ struct Ast_Resolved_Member { int32_t offset; bool visited; /*#import meta - meta.inline_value_fields() +meta.inline_value_fields() */ union { Value value; @@ -390,7 +390,7 @@ struct Ast_Atom : Ast_Expr { // can be use during code generation // it cannot be untyped. (or at least thats the hope :) /*#import meta - meta.inline_value_fields() +meta.inline_value_fields() */ union { Value value; @@ -606,7 +606,7 @@ struct Ast_Decl : Ast { }; /*#import meta - meta.inline_value_fields() +meta.inline_value_fields() */ union { Value value; diff --git a/core_lexing.cpp b/core_lexing.cpp index 491c03a..90aa149 100644 --- a/core_lexing.cpp +++ b/core_lexing.cpp @@ -696,13 +696,14 @@ lex_restream(Core_Ctx *lexer, String istream, String file) { CORE_Static const char * name(Token_Kind kind) { switch (kind) { - case TK_End: return "End of stream"; - /*# - import meta - for i in meta.token_kinds: - if i[1] != "SPECIAL": - print("case TK_" + i[0] + f": return \"{i[1]}\";") - */ + case TK_End: + return "End of stream"; + /*# +import meta +for i in meta.token_kinds: + if i[1] != "SPECIAL": + print("case TK_" + i[0] + f": return \"{i[1]}\";") + */ case TK_Mul: return "*"; case TK_Div: return "/"; case TK_Mod: return "%"; diff --git a/core_typechecking.h b/core_typechecking.h index dae64b3..dae4466 100644 --- a/core_typechecking.h +++ b/core_typechecking.h @@ -2,7 +2,7 @@ struct Operand { /*#import meta - meta.inline_value_fields() +meta.inline_value_fields() */ union { Value value; diff --git a/meta.bat b/meta.bat new file mode 100644 index 0000000..0fa8fb3 --- /dev/null +++ b/meta.bat @@ -0,0 +1,4 @@ +@echo off + +call meta_run.bat preprocess cpp +clang-format -i *.cpp *.hpp *.h \ No newline at end of file diff --git a/meta_run.py b/meta_run.py index 828b184..92bea22 100644 --- a/meta_run.py +++ b/meta_run.py @@ -61,4 +61,5 @@ for file_to_modify in files: fd.seek(0) fd.write(f) fd.truncate() - fd.close() \ No newline at end of file + fd.close() +