alpha
[lambda.git] / print.c
diff --git a/print.c b/print.c
index afaac01..33e7104 100644 (file)
--- a/print.c
+++ b/print.c
@@ -11,8 +11,10 @@ void print_apos(unsigned int revision)
        }
 }
 
-void term_print(struct lambda *t)
+void term_print(struct lambda *t, struct lambda *mark)
 {
+       if(t == mark)
+               putchar('|');
        switch(t->which){
        case lambda_ident:
                printf("%s", t->data.identifier.ident);
@@ -23,20 +25,23 @@ void term_print(struct lambda *t)
                printf("%s", t->data.abstraction.ident);
                print_apos(t->data.abstraction.revision);
                putchar('.');
-               term_print(t->data.abstraction.expr);
+               term_print(t->data.abstraction.expr, mark);
                putchar(')');
                break;
        case lambda_app:
                putchar('(');
-               term_print(t->data.application.expr1);
-               term_print(t->data.application.expr2);
+               term_print(t->data.application.expr1, mark);
+               putchar(' ');
+               term_print(t->data.application.expr2, mark);
                putchar(')');
                break;
        }
+       if(t == mark)
+               putchar('|');
 }
 
-void lambda_print(struct lambda *t)
+void lambda_print(struct lambda *t, struct lambda *mark)
 {
-       term_print(t);
+       term_print(t, mark);
        putchar('\n');
 }