interrupt running queries and return to toplevel (#323)

This commit is contained in:
Mark Thom
2020-04-15 00:08:35 -06:00
parent 93a0ab7f0a
commit 2b720b8d0b

View File

@@ -343,14 +343,18 @@ impl Machine {
use std::env; use std::env;
let mut arg_pstrs = vec![]; let mut arg_pstrs = vec![];
for arg in env::args() { for arg in env::args() {
arg_pstrs.push(self.machine_st.heap.put_complete_string(&arg)); 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[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 pub fn new(current_input_stream: Stream, current_output_stream: Stream) -> Self