From ffe5a1fa46d597a65d783166b2d76c64408fb0ff Mon Sep 17 00:00:00 2001 From: Camil Staps Date: Sun, 25 Sep 2016 15:33:25 +0200 Subject: Print (don't parse) lists as suggested in #5 --- interpreter/print.c | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) (limited to 'interpreter') 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("("); -- cgit v1.2.3