From: Nicolas Luck Date: Thu, 27 Jul 2023 12:46:00 +0000 (+0200) Subject: Try triska's toplevel and add some debugging println!s. X-Git-Tag: remove^2~48 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=c2658dc6da430f8f35446fe4d25f787fd2b6d9dd;p=scryer-prolog.git Try triska's toplevel and add some debugging println!s. --- diff --git a/src/lib_toplevel.pl b/src/lib_toplevel.pl index a7c8df13..4eccbafe 100644 --- a/src/lib_toplevel.pl +++ b/src/lib_toplevel.pl @@ -242,3 +242,30 @@ submit_query_and_print_all_results(_, _) :- ), write('false.'), nl. + + + +toplevel :- + read_term(Goal, [variable_names(VNs)]), + Goal, + write('bindings(['), + write_bindings(VNs), + write(']).'), + nl, + false. + +write_bindings([]). +write_bindings([VN|VNs]) :- + write_bindings_(VNs, VN). + +write_bindings_([], VN) :- + write_binding(VN). +write_bindings_([VN|VNs], Prev) :- + write_binding(Prev), + write(','), + write_bindings_(VNs, VN). + +write_binding(Var=Val) :- + write(Var), + write(=), + write_term(Val, [quoted(true),double_quotes(true)]). \ No newline at end of file diff --git a/src/machine/lib_machine.rs b/src/machine/lib_machine.rs index b75f9b6d..194434c3 100644 --- a/src/machine/lib_machine.rs +++ b/src/machine/lib_machine.rs @@ -25,13 +25,16 @@ impl Machine { } pub fn run_query(&mut self, query: String) -> QueryResult { - self.set_user_input(query); - self.run_top_level(atom!("$toplevel"), (atom!("run_input_once"), 0)); + let input = format!("{}", query); + println!("Running query: {}", input); + self.set_user_input(input); + self.run_top_level(atom!("$toplevel"), (atom!("toplevel"), 0)); self.parse_output() } pub fn parse_output(&self) -> QueryResult { let output = self.get_user_output().trim().to_string(); + println!("Output: {}", output); if output.starts_with("error(") { Err(output) } else {