Files
jsrt/compiler/src/main.rs
T
2026-09-16 07:32:04 +00:00

37 lines
883 B
Rust

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::<Vec<String>>();
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(&reg_fns, &atoms);
}