From dcd22ad1f3d808aa96ec2ece6e59b3b78eebf7b3 Mon Sep 17 00:00:00 2001 From: imxyy_soope_ Date: Wed, 21 May 2025 21:28:31 +0800 Subject: [PATCH] feat: add compile cli --- src/bin/compile.rs | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 src/bin/compile.rs diff --git a/src/bin/compile.rs b/src/bin/compile.rs new file mode 100644 index 0000000..0b263cf --- /dev/null +++ b/src/bin/compile.rs @@ -0,0 +1,30 @@ +use std::process::exit; + +use itertools::Itertools; + +use nixjit::compile::compile; +use nixjit::error::Error; +use nixjit::error::Result; +use nixjit::ir::downgrade; + +fn main() -> Result<()> { + let mut args = std::env::args(); + if args.len() != 2 { + eprintln!("Usage: {} expr", args.next().unwrap()); + exit(1); + } + args.next(); + let expr = args.next().unwrap(); + let root = rnix::Root::parse(&expr); + if !root.errors().is_empty() { + return Err(Error::ParseError( + root.errors().iter().map(|err| err.to_string()).join(";"), + )); + } + let expr = root.tree().expr().unwrap(); + let downgraded = downgrade(expr)?; + let prog = compile(downgraded); + println!("{:?}", prog); + + Ok(()) +}