use std::fs;
use std::path::PathBuf;
use keleusma::compiler::compile;
use keleusma::lexer::tokenize;
use keleusma::parser::parse;
fn main() {
let manifest_dir = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
let source_path = manifest_dir.join("examples").join("zero_copy_demo.kel");
let binary_path = manifest_dir.join("examples").join("zero_copy_demo.kel.bin");
let source = fs::read_to_string(&source_path).expect("read source");
let tokens = tokenize(&source).expect("lex");
let program = parse(&tokens).expect("parse");
let module = compile(&program).expect("compile");
let bytes = module.to_bytes().expect("encode");
fs::write(&binary_path, &bytes).expect("write binary");
println!("wrote {} ({} bytes)", binary_path.display(), bytes.len());
}