summaryrefslogtreecommitdiff
path: root/parse.c
diff options
context:
space:
mode:
Diffstat (limited to 'parse.c')
-rw-r--r--parse.c20
1 files changed, 18 insertions, 2 deletions
diff --git a/parse.c b/parse.c
index c174c23..469b492 100644
--- a/parse.c
+++ b/parse.c
@@ -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);
}