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