}
}
-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);
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');
}