From: Nicolas Luck Date: Fri, 15 Sep 2023 09:01:16 +0000 (+0200) Subject: Remove lib_toplevel.pl X-Git-Tag: remove^2~17 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=c86304b18e57b0296cd43be2653b02edbc6db1c5;p=scryer-prolog.git Remove lib_toplevel.pl --- diff --git a/src/lib_toplevel.pl b/src/lib_toplevel.pl deleted file mode 100644 index 4b13f9a4..00000000 --- a/src/lib_toplevel.pl +++ /dev/null @@ -1,207 +0,0 @@ -:- module('$toplevel', [argv/1, - copy_term/3]). - -:- use_module(library(atts), [call_residue_vars/2]). -:- use_module(library(charsio)). -:- use_module(library(error)). - -:- use_module(library(iso_ext)). -:- use_module(library(lambda)). -:- use_module(library(lists)). -:- use_module(library(si)). - -:- use_module(library('$project_atts')). -:- use_module(library('$atts')). - -:- dynamic(disabled_init_file/0). - -:- dynamic(argv/1). - - -arg_type(g). -arg_type(t). -arg_type(g(_)). -arg_type(t(_)). - -trailing_period_is_ambiguous(Value) :- - atom(Value), - atom_chars(Value, ValueChars), - list_last_item(ValueChars, Char), - ValueChars \== ['.'], - graphic_token_char(Char). - -graphic_token_char(C) :- - memberchk(C, ['#', '$', '&', '*', '+', '-', '.', ('/'), ':', - '<', '=', '>', '?', '@', '^', '~', ('\\')]). - -needs_bracketing(Value, Op) :- - catch((functor(Value, F, _), - current_op(EqPrec, EqSpec, Op), - current_op(FPrec, _, F)), - _, - false), - ( EqPrec < FPrec -> - true - ; FPrec > 0, F == Value, graphic_token_char(F) -> - true - ; F \== '.', '$quoted_token'(F) -> - true - ; EqPrec == FPrec, - memberchk(EqSpec, [fx,xfx,yfx]) - ). - -write_goal(G, VarList, MaxDepth) :- - ( G = (Var = Value) -> - ( var(Value) -> - select((Var = _), VarList, NewVarList) - ; VarList = NewVarList - ), - write(Var), - write(' = '), - ( needs_bracketing(Value, (=)) -> - write('('), - write_term(Value, [quoted(true), variable_names(NewVarList), max_depth(MaxDepth), double_quotes(true)]), - write(')') - ; write_term(Value, [quoted(true), variable_names(NewVarList), max_depth(MaxDepth), double_quotes(true)]) - ) - ; G == [] -> - write('true') - ; write_term(G, [quoted(true), variable_names(VarList), max_depth(MaxDepth)]) - ). - - -write_last_goal(G, VarList, MaxDepth) :- - ( G = (Var = Value) -> - ( var(Value) -> - select((Var = _), VarList, NewVarList) - ; VarList = NewVarList - ), - write(Var), - write(' = '), - ( needs_bracketing(Value, (=)) -> - write('('), - write_term(Value, [quoted(true), variable_names(NewVarList), max_depth(MaxDepth), double_quotes(true)]), - write(')') - ; write_term(Value, [quoted(true), variable_names(NewVarList), max_depth(MaxDepth), double_quotes(true)]), - ( trailing_period_is_ambiguous(Value) -> - write(' ') - ; true - ) - ) - ; G == [] -> - write('true') - ; write_term(G, [quoted(true), variable_names(VarList), max_depth(MaxDepth)]) - ). - -write_eq((G1, G2), VarList, MaxDepth) :- - !, - write_goal(G1, VarList, MaxDepth), - write(', '), - write_eq(G2, VarList, MaxDepth). -write_eq(G, VarList, MaxDepth) :- - write_last_goal(G, VarList, MaxDepth). - -list_last_item([C], C) :- !. -list_last_item([_|Cs], D) :- - list_last_item(Cs, D). - -term_variables_under_max_depth(Term, MaxDepth, Vars) :- - '$term_variables_under_max_depth'(Term, MaxDepth, Vars). - -gather_query_vars([_ = Var | Vars], QueryVars) :- - ( var(Var) -> - QueryVars = [Var | QueryVars0], - gather_query_vars(Vars, QueryVars0) - ; - gather_query_vars(Vars, QueryVars) - ). -gather_query_vars([], []). - -gather_equations([], _, []). -gather_equations([Var = Value | Pairs], OrigVarList, Goals) :- - ( var(Value) -> - ( eq_member(Value, OrigVarList), - select_all(Pairs, Var, Value, [_ | VarEqs], NewPairs) -> - append([Var = Value | VarEqs], Goals0, Goals), - gather_equations(NewPairs, OrigVarList, Goals0) - ; - gather_equations(Pairs, OrigVarList, Goals) - ) - ; - Goals = [Var = Value | Goals0], - gather_equations(Pairs, OrigVarList, Goals0) - ). - -print_exception(E) :- - ( E == error('$interrupt_thrown', repl) -> nl % print the - % exception on a - % newline to evade - % "^C". - ; true - ), - loader:write_error(E), - nl. - - -run_input_once :- - bb_put('$report_all', true), - catch(read_and_match_all_results, E, print_exception(E)). - -read_and_match_all_results :- - '$read_query_term'(_, Term, _, _, VarList), - bb_put('$answer_count', 0), - submit_query_and_print_all_results(Term, VarList). - -submit_query_and_print_all_results(Term, VarList) :- - '$get_b_value'(B), - bb_put('$report_all', true), - bb_put('$report_n_more', 100), - call(user:Term), - write_eqs(B, VarList), - !. -submit_query_and_print_all_results(_, _) :- - ( bb_get('$answer_count', 0) -> - write(' ') - ; true - ), - write('false.'), - nl. - -write_eqs(B, VarList) :- - gather_query_vars(VarList, OrigVars), - % one layer of depth added for (=/2) functor - '$term_variables_under_max_depth'(OrigVars, 22, Vars0), - '$term_attributed_variables'(VarList, AttrVars), - '$project_atts':project_attributes(Vars0, AttrVars), - copy_term(AttrVars, AttrVars, AttrGoals), - term_variables(AttrGoals, AttrGoalVars), - append([Vars0, AttrGoalVars, AttrVars], Vars), - charsio:extend_var_list(Vars, VarList, NewVarList, fabricated), - '$get_b_value'(B0), - gather_equations(NewVarList, OrigVars, Equations), - append(Equations, AttrGoals, Goals), - % one layer of depth added for (=/2) functor - maplist(\Term^Vs^term_variables_under_max_depth(Term, 22, Vs), Equations, EquationVars), - % maplist(term_variables_under_max_depth(22), Equations, EquationVars), - append([AttrGoalVars | EquationVars], Vars1), - term_variables(Vars1, Vars2), % deduplicate vars of Vars1 but preserve their order. - charsio:extend_var_list(Vars2, VarList, NewVarList0, fabricated), - bb_get('$answer_count', Count), - ( Count =:= 0 -> - write(' ') - ; true - ), - Count1 is Count + 1, - bb_put('$answer_count', Count1), - ( B0 == B -> - ( Goals == [] -> - write('true.'), nl - ; loader:thread_goals(Goals, ThreadedGoals, (',')), - write_eq(ThreadedGoals, NewVarList0, 200000), - write('.'), - nl - ) - ; loader:thread_goals(Goals, ThreadedGoals, (',')), - write_eq(ThreadedGoals, NewVarList0, 200000), - write(';'), nl, false - ). diff --git a/src/machine/lib_machine.rs b/src/machine/lib_machine.rs index b5a49729..47a840f5 100644 --- a/src/machine/lib_machine.rs +++ b/src/machine/lib_machine.rs @@ -19,7 +19,7 @@ use super::{ impl Machine { pub fn new_lib() -> Self { - Machine::new(MachineConfig::in_memory().with_toplevel(include_str!("../lib_toplevel.pl"))) + Machine::new(MachineConfig::in_memory()) } pub fn load_module_string(&mut self, module_name: &str, program: String) {