diff options
| author | Kai Stevenson <kai@kaistevenson.com> | 2023-02-15 23:57:36 -0800 |
|---|---|---|
| committer | Kai Stevenson <kai@kaistevenson.com> | 2023-02-15 23:57:36 -0800 |
| commit | 4b68d60daf495cef5eb22a521ce809d798418aa5 (patch) | |
| tree | 327a8bd5e82cbd82c5c1578702e09686f961c116 /parse.c | |
| parent | 012a218e3f25f4712e6eb9a197e4473f0617eaed (diff) | |
add license, some boolean functions, fixed bugs, improved visualizer and added flag
Diffstat (limited to 'parse.c')
| -rw-r--r-- | parse.c | 20 |
1 files changed, 18 insertions, 2 deletions
@@ -63,7 +63,7 @@ symset_t* parse_symbols(char** str) { /* TODO: float */ /* string */ if (isalpha(symbolName[0])) { - //symbolName = realloc(symbolName, i * sizeof(char)); + symbolName = realloc(symbolName, i * sizeof(char)); symbol->name = symbolName; symbol->litType = STRING; } @@ -120,7 +120,23 @@ void write_symbol_visual(sym_t* symbol, int offset) { for (int o = 0; o < offset; o++) { printf(" "); } - printf("%s (%s)\n", (char*)(symbol->name), symbol->province == KEY_REF ? "KEY" : "LITERAL"); + if (symbol->province == KEY_REF) { + printf("%s (%s)\n", (char*)(symbol->name), "KEY"); + } + else if (symbol->province == LITERAL) { + if (symbol->litType == INT) { + printf("%d (%s)\n", *(int*)(symbol->name), "LITERAL"); + } + else if (symbol->litType == FLOAT) { + printf("%f (%s)\n", *(float*)(symbol->name), "LITERAL"); + } + else if (symbol->litType == STRING) { + printf("%s (%s)\n", (char*)(symbol->name), "LITERAL"); + } + } + else { + printf("symbol parse error\n"); + } for (int i = 0; i < symbol->argCount; i++) { write_symbol_visual(symbol->args[i], offset + 4); } |
