From: Nicolas Luck Date: Tue, 11 Jul 2023 12:24:30 +0000 (+0200) Subject: Add Machine::run_input_once() which reads one goal from user input and runs it X-Git-Tag: remove^2~71 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=112d398175f244d1fbf5190c1f128b55beadf71c;p=scryer-prolog.git Add Machine::run_input_once() which reads one goal from user input and runs it --- diff --git a/src/machine/mod.rs b/src/machine/mod.rs index f7beecd3..9a1c978a 100644 --- a/src/machine/mod.rs +++ b/src/machine/mod.rs @@ -307,6 +307,10 @@ impl Machine { self.run_module_predicate(atom!("$toplevel"), (atom!("$repl"), 1)); } + pub fn run_input_once(&mut self) { + self.run_module_predicate(atom!("$toplevel"), (atom!("run_input_once"), 0)); + } + pub fn set_user_input(&mut self, input: String) { self.user_input = Stream::from_owned_string(input, &mut self.machine_st.arena); } diff --git a/src/toplevel.pl b/src/toplevel.pl index 8caea7ba..56b8df94 100644 --- a/src/toplevel.pl +++ b/src/toplevel.pl @@ -430,3 +430,6 @@ print_exception_with_check(E) :- % is expected to be printed instead. ; print_exception(E) ). + +run_input_once :- + catch(read_and_match, E, print_exception(E)).