{ write_term_to_chars(Lit, [quoted(true),variable_names(VNs),double_quotes(true)], Ls) },
seq(Ls).
+literal_(Lit, VNs) -->
+ { phrase(literal(Lit, VNs), Ls) },
+ seq(Ls),
+ ( { phrase((...,[Last]), Ls), char_type(Last, graphic_token) } ->
+ " "
+ ; ""
+ ).
+
portray_(Var, VNs) --> { var(Var) }, !, literal(Var, VNs).
portray_((Head :- Body), VNs) --> !,
literal(Head, VNs), " :-\n",
portray_((Head --> Body), VNs) --> !,
literal(Head, VNs), " -->\n",
body_(Body, 0, 3, VNs).
-portray_(Any, VNs) --> literal(Any, VNs).
+portray_(Any, VNs) --> literal_(Any, VNs).
body_(Var, C, I, VNs) --> { var(Var) }, !,
body_(A, C1, C1, VNs), "\n",
else_branch(B, I, VNs).
body_(Goal, C, I, VNs) -->
- indent_to(C, I), literal(Goal, VNs).
+ indent_to(C, I), literal_(Goal, VNs).
% True iff Body has the shape ( If -> Then ; Else ).