]> Repositorios git - scryer-prolog.git/commitdiff
support loading of modules from files specified at the command line
authorMark Thom <[email protected]>
Sun, 29 Sep 2019 16:16:27 +0000 (10:16 -0600)
committerMark Thom <[email protected]>
Sun, 29 Sep 2019 16:16:27 +0000 (10:16 -0600)
src/prolog/machine/compile.rs
src/prolog/machine/mod.rs

index 0568e26c7c36a108ee4b0c158793287ca34e451c..ee0392b1f7752077ae9b35e552a908d7a1216373 100644 (file)
@@ -81,6 +81,7 @@ fn load_module<R: Read>(wam: &mut Machine, name: &str, stream: ParsingStream<R>)
     }    
 }
 
+pub(super)
 fn load_module_from_file(wam: &mut Machine, filename: &str) -> Result<ClauseName, SessionError>
 {
     let path = fix_filename(wam.indices.atom_tbl.clone(), filename)?;
index a7b093a4cd803b55c166438c83c870cf1dcac9d0..56bfa3b9798c7b285e2fe98a186ef3ad0dc4012c 100644 (file)
@@ -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());
     }