diff options
author | Camil Staps | 2016-09-25 15:33:25 +0200 |
---|---|---|
committer | Camil Staps | 2016-09-25 15:33:25 +0200 |
commit | ffe5a1fa46d597a65d783166b2d76c64408fb0ff (patch) | |
tree | 43a72b3a9704c6a8a3021f1886aa04a4ce629320 /interpreter/print.c | |
parent | Debug graph readability improvements (diff) |
Print (don't parse) lists as suggested in #5
Diffstat (limited to 'interpreter/print.c')
-rw-r--r-- | interpreter/print.c | 29 |
1 files changed, 20 insertions, 9 deletions
diff --git a/interpreter/print.c b/interpreter/print.c index 91e079e..d063142 100644 --- a/interpreter/print.c +++ b/interpreter/print.c @@ -40,6 +40,23 @@ void print_token_list(token_list* list) { } } +void print_in_list(expression* expr) { + if (!expr->var1) + return; + + print_expression(expr->var1); + + if (((expression*) expr->var2)->kind == EXPR_LIST) { + if (((expression*) expr->var2)->var1) { + printf(","); + print_in_list(expr->var2); + } + } else { + printf(":"); + print_expression(expr->var2); + } +} + void print_expression(expression* expr) { if (!expr) return; @@ -56,15 +73,9 @@ void print_expression(expression* expr) { (void*) expr->var1, *((unsigned char*) expr->var2)); break; case EXPR_LIST: - if (!expr->var1) { - printf("[]"); - } else { - printf("["); - print_expression(expr->var1); - printf(":"); - print_expression(expr->var2); - printf("]"); - } + printf("["); + print_in_list(expr); + printf("]"); break; case EXPR_TUPLE: printf("("); |