mod flatten; mod infer; mod libqjs; mod regify; mod transform; use std::fs::File; use std::io::Read; use flatten::flatten; use infer::infer_types; use libqjs::compile; use regify::regify; use transform::transform; fn main() { // Load source file let args = std::env::args().collect::>(); let filename = args.get(1).unwrap(); let mut file = File::open(filename).unwrap(); let metadata = std::fs::metadata(filename).unwrap(); assert!(metadata.is_file()); let mut src = Vec::with_capacity(metadata.len() as usize); file.read_to_end(&mut src).unwrap(); // Compile to bytecode let binary = compile(&src, filename); // Process it let (flat_fns, captures, atoms) = flatten(binary); let flat_fns = transform(flat_fns, &captures); let reg_fns = regify(flat_fns); let type_cache = infer_types(®_fns, &atoms); }