]> Repositorios git - scryer-prolog.git/commitdiff
Add Machine::run_input_once() which reads one goal from user input and runs it
authorNicolas Luck <[email protected]>
Tue, 11 Jul 2023 12:24:30 +0000 (14:24 +0200)
committerNicolas Luck <[email protected]>
Tue, 11 Jul 2023 12:24:30 +0000 (14:24 +0200)
src/machine/mod.rs
src/toplevel.pl

index f7beecd3bd417722cae1cc5157c726e3efaa2d90..9a1c978aa81a9ef4f4af53f4f51757eaf7d05eff 100644 (file)
@@ -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);
     }
index 8caea7ba87d8a1c5e1957097e97c364bcb917175..56b8df947b33a52276dadbecc4728a0ddbf5c2e9 100644 (file)
@@ -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)).