diff --git a/src/prolog/machine/compile.rs b/src/prolog/machine/compile.rs index 0568e26c..ee0392b1 100644 --- a/src/prolog/machine/compile.rs +++ b/src/prolog/machine/compile.rs @@ -81,6 +81,7 @@ fn load_module(wam: &mut Machine, name: &str, stream: ParsingStream) } } +pub(super) fn load_module_from_file(wam: &mut Machine, filename: &str) -> Result { let path = fix_filename(wam.indices.atom_tbl.clone(), filename)?; diff --git a/src/prolog/machine/mod.rs b/src/prolog/machine/mod.rs index a7b093a4..56bfa3b9 100644 --- a/src/prolog/machine/mod.rs +++ b/src/prolog/machine/mod.rs @@ -217,6 +217,13 @@ impl Machine { } pub fn run_toplevel(&mut self) { + use std::env; + use prolog::machine::compile::load_module_from_file; + + for filename in env::args() { + load_module_from_file(self, &filename); + } + self.machine_st.p = CodePtr::Local(LocalCodePtr::DirEntry(self.toplevel_idx)); self.run_query(&AllocVarDict::new()); }