remove underscores in printed variables produced by write_term_to_chars (#340)
This commit is contained in:
@@ -4,15 +4,23 @@
|
||||
:- use_module(library(iso_ext)).
|
||||
|
||||
|
||||
fabricate_var_name(VarName, N) :-
|
||||
fabricate_var_name(VarType, VarName, N) :-
|
||||
char_code('A', AC),
|
||||
LN is N mod 26 + AC,
|
||||
char_code(LC, LN),
|
||||
NN is N // 26,
|
||||
( NN =:= 0 ->
|
||||
atom_chars(VarName, ['_', LC])
|
||||
( VarType == fabricated ->
|
||||
atom_chars(VarName, ['_', LC])
|
||||
; VarType == numbervars ->
|
||||
atom_chars(VarName, [LC])
|
||||
)
|
||||
; number_chars(NN, NNChars),
|
||||
atom_chars(VarName, ['_', LC | NNChars])
|
||||
( VarType == fabricated ->
|
||||
atom_chars(VarName, ['_', LC | NNChars])
|
||||
; VarType == numbervars ->
|
||||
atom_chars(VarName, [LC | NNChars])
|
||||
)
|
||||
).
|
||||
|
||||
var_list_contains_name([VarName = _ | VarList], VarName0) :-
|
||||
@@ -25,26 +33,26 @@ var_list_contains_variable([_ = Var | VarList], Var0) :-
|
||||
; var_list_contains_variable(VarList, Var0)
|
||||
).
|
||||
|
||||
make_new_var_name(V, VarName, N, N1, VarList) :-
|
||||
fabricate_var_name(VarName0, N),
|
||||
make_new_var_name(VarType, V, VarName, N, N1, VarList) :-
|
||||
fabricate_var_name(VarType, VarName0, N),
|
||||
( var_list_contains_name(VarList, VarName0) ->
|
||||
N0 is N + 1,
|
||||
make_new_var_name(V, VarName, N0, N1, VarList)
|
||||
make_new_var_name(VarType, V, VarName, N0, N1, VarList)
|
||||
; VarName = VarName0,
|
||||
N1 is N + 1
|
||||
).
|
||||
|
||||
extend_var_list(Value, VarList, NewVarList) :-
|
||||
extend_var_list(Value, VarList, NewVarList, VarType) :-
|
||||
term_variables(Value, Vars),
|
||||
extend_var_list_(Vars, 0, VarList, NewVarList).
|
||||
extend_var_list_(Vars, 0, VarList, NewVarList, VarType).
|
||||
|
||||
extend_var_list_([], N, VarList, VarList).
|
||||
extend_var_list_([V|Vs], N, VarList, NewVarList) :-
|
||||
extend_var_list_([], N, VarList, VarList, _).
|
||||
extend_var_list_([V|Vs], N, VarList, NewVarList, VarType) :-
|
||||
( var_list_contains_variable(VarList, V) ->
|
||||
extend_var_list_(Vs, N, VarList, NewVarList)
|
||||
; make_new_var_name(V, VarName, N, N1, VarList),
|
||||
extend_var_list_(Vs, N, VarList, NewVarList, VarType)
|
||||
; make_new_var_name(VarType, V, VarName, N, N1, VarList),
|
||||
NewVarList = [VarName = V | NewVarList0],
|
||||
extend_var_list_(Vs, N1, VarList, NewVarList0)
|
||||
extend_var_list_(Vs, N1, VarList, NewVarList0, VarType)
|
||||
).
|
||||
|
||||
|
||||
@@ -81,5 +89,5 @@ write_term_to_chars(Term, Options, Chars) :-
|
||||
builtins:inst_member_or(Options, quoted(Quoted), quoted(false)),
|
||||
builtins:inst_member_or(Options, variable_names(VarNames), variable_names([])),
|
||||
builtins:inst_member_or(Options, max_depth(MaxDepth), max_depth(0)),
|
||||
extend_var_list(Term, VarNames, NewVarNames),
|
||||
extend_var_list(Term, VarNames, NewVarNames, numbervars),
|
||||
'$write_term_to_chars'(Term, IgnoreOps, NumberVars, Quoted, NewVarNames, MaxDepth, Chars).
|
||||
|
||||
Reference in New Issue
Block a user