From 112d398175f244d1fbf5190c1f128b55beadf71c Mon Sep 17 00:00:00 2001 From: Nicolas Luck Date: Tue, 11 Jul 2023 14:24:30 +0200 Subject: [PATCH] Add Machine::run_input_once() which reads one goal from user input and runs it --- src/machine/mod.rs | 4 ++++ src/toplevel.pl | 3 +++ 2 files changed, 7 insertions(+) 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)). -- 2.54.0