Starting to add code for vm

This commit is contained in:
greg 2017-07-23 02:12:05 -07:00
parent 6f8c89af37
commit 801896bcc6
2 changed files with 32 additions and 1 deletions

View File

@ -20,6 +20,9 @@ use language::{ProgrammingLanguage, LanguageInterface, LLVMCodeString, Evaluatio
mod llvm_wrap;
mod virtual_machine;
use virtual_machine::{run_vm, run_assembler};
fn main() {
let languages: Vec<Box<LanguageInterface>> =
vec![
@ -44,7 +47,19 @@ fn main() {
if option_matches.opt_present("h") {
println!("{}", program_options().usage("Schala metainterpreter"));
std::process::exit(1);
std::process::exit(0);
}
if option_matches.opt_present("m") {
let file_name = option_matches.free.get(1);
run_vm(file_name);
std::process::exit(0);
}
if option_matches.opt_present("a") {
let file_name = option_matches.free.get(1);
run_assembler(file_name);
std::process::exit(0);
}
let language_names: Vec<String> = languages.iter().map(|lang| {lang.get_language_name()}).collect();
@ -91,9 +106,16 @@ fn program_options() -> getopts::Options {
options.optflag("h",
"help",
"Show help text");
options.optflag("m",
"virtual-machine",
"Start up a virtual machine instead of an interpreter");
options.optflag("a",
"assembler",
"Assemble file into bytecode");
options
}
fn run_noninteractive<'a, T: ProgrammingLanguage>(filename: &str, _language: &T, trace_evaluation: bool, compile: bool) {
let mut source_file = File::open(&Path::new(filename)).unwrap();
let mut buffer = String::new();

View File

@ -0,0 +1,9 @@
pub fn run_vm(file_name: Option<&String>) {
println!("Running in VM mode");
println!("yy: {:?}", file_name);
}
pub fn run_assembler(file_name: Option<&String>) {
println!("Assembling file");
println!("yy: {:?}", file_name);
}