Flat: Print connecting lines in Term tree output
diff --git a/experiments/flat/src/Term.c b/experiments/flat/src/Term.c
index 902dfd7..359d539 100644
--- a/experiments/flat/src/Term.c
+++ b/experiments/flat/src/Term.c
@@ -52,11 +52,8 @@
     *listPtr = &(**listPtr)->next;
 }
 
-void TermPrint(Term *term, const char *input, int indent)
+void TermPrint(Term *term, const char *input, const char *indent)
 {
-    for (int i = 0; i < indent; i++)
-        printf("    ");
-
     switch (ExpressionKind(term->type)) {
         case IdentExpr:
             printf("%s %s\n",ExprKindAsString(ExpressionKind(term->type)),ExprIdentValue(term->type));
@@ -88,10 +85,21 @@
             break;
     }
 
+    int indentLen = strlen(indent);
+    char *nextIndent = (char *)malloc(indentLen+5);
+
     for (TermList *child = term->children; child != NULL; child = child->next) {
-        if (child->next != NULL)
-            TermPrint(child->term,input,indent+1);
-        else
-            TermPrint(child->term,input,indent+1);
+        if (child->next != NULL) {
+            printf("%s|-- ",indent);
+            snprintf(nextIndent,indentLen+5,"%s|   ",indent);
+            TermPrint(child->term,input,nextIndent);
+        }
+        else {
+            printf("%s\\-- ",indent);
+            snprintf(nextIndent,indentLen+5,"%s    ",indent);
+            TermPrint(child->term,input,nextIndent);
+        }
     }
+
+    free(nextIndent);
 }
diff --git a/experiments/flat/src/Term.h b/experiments/flat/src/Term.h
index 911396a..865618e 100644
--- a/experiments/flat/src/Term.h
+++ b/experiments/flat/src/Term.h
@@ -39,4 +39,4 @@
 TermList *TermListNew(Term *term, TermList *next);
 void TermListPtrAppend(TermList ***listPtr, Term *term);
 
-void TermPrint(Term *term, const char *input, int indent);
+void TermPrint(Term *term, const char *input, const char *indent);
diff --git a/experiments/flat/src/flat.c b/experiments/flat/src/flat.c
index 51003b8..179bd9c 100644
--- a/experiments/flat/src/flat.c
+++ b/experiments/flat/src/flat.c
@@ -63,8 +63,7 @@
         }
         Grammar *gram = GrammarNewBuiltin();
         Term *term = parse(gram,"Grammar",input,0,strlen(input));
-        printf("Parsed term %p\n",term);
-        TermPrint(term,input,0);
+        TermPrint(term,input,"");
         free(input);
         GrammarFree(gram);
     }