]> Repositorios git - scryer-prolog.git/commitdiff
remove underscores in printed variables produced by write_term_to_chars (#340)
authorMark Thom <[email protected]>
Wed, 15 Apr 2020 16:27:20 +0000 (10:27 -0600)
committerMark Thom <[email protected]>
Wed, 15 Apr 2020 16:27:20 +0000 (10:27 -0600)
src/prolog/lib/charsio.pl
src/prolog/toplevel.pl

index b0ccc88d961a429e460bea79a3cac89ca5e415e8..9cf5f32549bd3086c910b92bd1b024da2b44eac8 100644 (file)
@@ -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).
index 4da303cef587974bddc0d8a42c0ffc01f603f4b9..e9057b0c0f6bdeb7f0afd09d9d6e0c5297d63e2b 100644 (file)
     '$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),