Extract lexer and switch token metadata to helpers

This commit is contained in:
Krzosa Karol
2026-05-12 08:42:11 +02:00
parent df7f1f27a1
commit 4cffa1f69a
4 changed files with 336 additions and 330 deletions

18
meta.c
View File

@@ -81,19 +81,25 @@ int main() {
}
printf("} Token_Kind;\n");
printf("char *token_to_op[] = {\n");
printf("char *token_to_op(Token_Kind kind) {\n");
printf(" switch (kind) {\n");
for (int i = 0; i < ilen(kinds); i += 1) {
if (kinds[i].serialized_operator) {
printf(" [TOK_%s] = \"%s\",\n", kinds[i].name, kinds[i].serialized_operator);
printf(" case TOK_%s: return \"%s\";\n", kinds[i].name, kinds[i].serialized_operator);
}
}
printf("};\n");
printf(" default: return 0;\n");
printf(" }\n");
printf("}\n");
printf("char *token_to_name[] = {\n");
printf("char *token_to_name(Token_Kind kind) {\n");
printf(" switch (kind) {\n");
for (int i = 0; i < ilen(kinds); i += 1) {
if (kinds[i].name) {
printf(" [TOK_%s] = \"%s\",\n", kinds[i].name, kinds[i].name);
printf(" case TOK_%s: return \"%s\";\n", kinds[i].name, kinds[i].name);
}
}
printf("};\n");
printf(" default: return \"<invalid-token-kind>\";\n");
printf(" }\n");
printf("}\n");
}