From 2b720b8d0b2ce68c4fd1d0dbc1fa3e6a03eeb1d3 Mon Sep 17 00:00:00 2001 From: Mark Thom Date: Wed, 15 Apr 2020 00:08:35 -0600 Subject: [PATCH] interrupt running queries and return to toplevel (#323) --- src/prolog/machine/mod.rs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/prolog/machine/mod.rs b/src/prolog/machine/mod.rs index 248f35fe..414a6ad6 100644 --- a/src/prolog/machine/mod.rs +++ b/src/prolog/machine/mod.rs @@ -343,14 +343,18 @@ impl Machine { use std::env; let mut arg_pstrs = vec![]; + for arg in env::args() { arg_pstrs.push(self.machine_st.heap.put_complete_string(&arg)); } - let list_addr = Addr::HeapCell(self.machine_st.heap.to_list(arg_pstrs.into_iter())); + let list_addr = Addr::HeapCell(self.machine_st.heap.to_list(arg_pstrs.into_iter())); self.machine_st[temp_v!(1)] = list_addr; - self.machine_st.p = CodePtr::Local(LocalCodePtr::DirEntry(self.toplevel_idx)); - self.run_query(); + + loop { + self.machine_st.p = CodePtr::Local(LocalCodePtr::DirEntry(self.toplevel_idx)); + self.run_query(); + } } pub fn new(current_input_stream: Stream, current_output_stream: Stream) -> Self -- 2.54.0