use round brackets for goals involving operators
Examples:
?- portray_clause(((+) :- a=b,(-))).
(+) :-
a=b,
(-).
true.
?- portray_clause((a :- (b :- c))).
a :-
(b:-c).
true.
This addresses #2715.
Currently, more round brackets than needed are emitted. Ideally, a
better approach to solve the issue here and also in toplevel.pl is
found in the future.
This commit is contained in:
@@ -593,7 +593,15 @@ portray_clause_(Term) -->
|
|||||||
|
|
||||||
literal(Lit, VNs) -->
|
literal(Lit, VNs) -->
|
||||||
{ write_term_to_chars(Lit, [quoted(true),variable_names(VNs),double_quotes(true)], Ls) },
|
{ write_term_to_chars(Lit, [quoted(true),variable_names(VNs),double_quotes(true)], Ls) },
|
||||||
seq(Ls).
|
( { nonvar(Lit),
|
||||||
|
functor(Lit, F, A),
|
||||||
|
current_op(Pri, _, F),
|
||||||
|
( A =:= 0
|
||||||
|
; Pri >= 1000
|
||||||
|
) } ->
|
||||||
|
"(", seq(Ls), ")"
|
||||||
|
; seq(Ls)
|
||||||
|
).
|
||||||
|
|
||||||
literal_(Lit, VNs) -->
|
literal_(Lit, VNs) -->
|
||||||
{ phrase(literal(Lit, VNs), Ls) },
|
{ phrase(literal(Lit, VNs), Ls) },
|
||||||
|
|||||||
Reference in New Issue
Block a user