remove underscores in printed variables produced by write_term_to_chars (#340)

This commit is contained in:
Mark Thom
2020-04-15 10:27:20 -06:00
parent 6d7b14ceb5
commit 474fa9b3ec
2 changed files with 23 additions and 15 deletions

View File

@@ -4,15 +4,23 @@
:- use_module(library(iso_ext)). :- use_module(library(iso_ext)).
fabricate_var_name(VarName, N) :- fabricate_var_name(VarType, VarName, N) :-
char_code('A', AC), char_code('A', AC),
LN is N mod 26 + AC, LN is N mod 26 + AC,
char_code(LC, LN), char_code(LC, LN),
NN is N // 26, NN is N // 26,
( NN =:= 0 -> ( NN =:= 0 ->
( VarType == fabricated ->
atom_chars(VarName, ['_', LC]) atom_chars(VarName, ['_', LC])
; VarType == numbervars ->
atom_chars(VarName, [LC])
)
; number_chars(NN, NNChars), ; number_chars(NN, NNChars),
( VarType == fabricated ->
atom_chars(VarName, ['_', LC | NNChars]) atom_chars(VarName, ['_', LC | NNChars])
; VarType == numbervars ->
atom_chars(VarName, [LC | NNChars])
)
). ).
var_list_contains_name([VarName = _ | VarList], VarName0) :- var_list_contains_name([VarName = _ | VarList], VarName0) :-
@@ -25,26 +33,26 @@ var_list_contains_variable([_ = Var | VarList], Var0) :-
; var_list_contains_variable(VarList, Var0) ; var_list_contains_variable(VarList, Var0)
). ).
make_new_var_name(V, VarName, N, N1, VarList) :- make_new_var_name(VarType, V, VarName, N, N1, VarList) :-
fabricate_var_name(VarName0, N), fabricate_var_name(VarType, VarName0, N),
( var_list_contains_name(VarList, VarName0) -> ( var_list_contains_name(VarList, VarName0) ->
N0 is N + 1, 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, ; VarName = VarName0,
N1 is N + 1 N1 is N + 1
). ).
extend_var_list(Value, VarList, NewVarList) :- extend_var_list(Value, VarList, NewVarList, VarType) :-
term_variables(Value, Vars), 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_([], N, VarList, VarList, _).
extend_var_list_([V|Vs], N, VarList, NewVarList) :- extend_var_list_([V|Vs], N, VarList, NewVarList, VarType) :-
( var_list_contains_variable(VarList, V) -> ( var_list_contains_variable(VarList, V) ->
extend_var_list_(Vs, N, VarList, NewVarList) extend_var_list_(Vs, N, VarList, NewVarList, VarType)
; make_new_var_name(V, VarName, N, N1, VarList), ; make_new_var_name(VarType, V, VarName, N, N1, VarList),
NewVarList = [VarName = V | NewVarList0], 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, quoted(Quoted), quoted(false)),
builtins:inst_member_or(Options, variable_names(VarNames), variable_names([])), builtins:inst_member_or(Options, variable_names(VarNames), variable_names([])),
builtins:inst_member_or(Options, max_depth(MaxDepth), max_depth(0)), 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). '$write_term_to_chars'(Term, IgnoreOps, NumberVars, Quoted, NewVarNames, MaxDepth, Chars).

View File

@@ -127,7 +127,7 @@
'$graphic_token_char'(Char). '$graphic_token_char'(Char).
'$write_eqs_and_read_input'(B, VarList) :- '$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), sort(NewVarList, SortedVarList),
'$get_b_value'(B0), '$get_b_value'(B0),
'$gather_goals'(SortedVarList, SortedVarList, Goals), '$gather_goals'(SortedVarList, SortedVarList, Goals),