Extract lexer and switch token metadata to helpers
This commit is contained in:
18
meta.c
18
meta.c
@@ -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");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user