From 474fa9b3ec16bd445348834869c544497a6793ef Mon Sep 17 00:00:00 2001 From: Mark Thom Date: Wed, 15 Apr 2020 10:27:20 -0600 Subject: [PATCH] remove underscores in printed variables produced by write_term_to_chars (#340) --- src/prolog/lib/charsio.pl | 36 ++++++++++++++++++++++-------------- src/prolog/toplevel.pl | 2 +- 2 files changed, 23 insertions(+), 15 deletions(-) diff --git a/src/prolog/lib/charsio.pl b/src/prolog/lib/charsio.pl index b0ccc88d..9cf5f325 100644 --- a/src/prolog/lib/charsio.pl +++ b/src/prolog/lib/charsio.pl @@ -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). diff --git a/src/prolog/toplevel.pl b/src/prolog/toplevel.pl index 4da303ce..e9057b0c 100644 --- a/src/prolog/toplevel.pl +++ b/src/prolog/toplevel.pl @@ -127,7 +127,7 @@ '$graphic_token_char'(Char). '$write_eqs_and_read_input'(B, VarList) :- - charsio:extend_var_list(VarList, VarList, NewVarList), + charsio:extend_var_list(VarList, VarList, NewVarList, fabricated), sort(NewVarList, SortedVarList), '$get_b_value'(B0), '$gather_goals'(SortedVarList, SortedVarList, Goals), -- 2.54.0