From 9f36a6e7412af41931a04eb54829b11c62a8fed0 Mon Sep 17 00:00:00 2001 From: Bryan English Date: Sun, 15 Feb 2026 22:45:43 -0500 Subject: [PATCH] more cleanup and organizing --- Cargo.lock | 9 +++++++++ Cargo.toml | 3 ++- sorel-codegen/Cargo.toml | 8 ++++++++ sorel-codegen/src/lib.rs | 2 ++ .../src/riscv64_asm.rs | 0 sorelc/Cargo.toml | 1 + sorelc/src/{ir.rs => import_tree.rs} | 6 +++--- sorelc/src/main.rs | 8 ++++---- 8 files changed, 29 insertions(+), 8 deletions(-) create mode 100644 sorel-codegen/Cargo.toml create mode 100644 sorel-codegen/src/lib.rs rename sorelc/src/riscv_asm_codegen.rs => sorel-codegen/src/riscv64_asm.rs (100%) rename sorelc/src/{ir.rs => import_tree.rs} (96%) diff --git a/Cargo.lock b/Cargo.lock index 017d419..839a794 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -102,6 +102,14 @@ dependencies = [ "unsafe-libyaml", ] +[[package]] +name = "sorel-codegen" +version = "0.1.0" +dependencies = [ + "anyhow", + "sorel-ir", +] + [[package]] name = "sorel-ir" version = "0.1.0" @@ -132,6 +140,7 @@ name = "sorelc" version = "0.1.0" dependencies = [ "anyhow", + "sorel-codegen", "sorel-ir", "sorel-parser", "sorel-tokenizer", diff --git a/Cargo.toml b/Cargo.toml index 8e7cea9..7f17661 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,9 +1,10 @@ [workspace] resolver = "3" -members = ["sorel-ir","sorel-parser","sorel-tokenizer","sorelc"] +members = ["sorel-codegen","sorel-ir","sorel-parser","sorel-tokenizer","sorelc"] [workspace.dependencies] sorel-ir = { path = "./sorel-ir", version = "0.1.0" } +sorel-codegen = { path = "./sorel-codegen", version = "0.1.0" } sorel-tokenizer = { path = "./sorel-tokenizer", version = "0.1.0" } sorel-parser = { path = "./sorel-parser", version = "0.1.0" } diff --git a/sorel-codegen/Cargo.toml b/sorel-codegen/Cargo.toml new file mode 100644 index 0000000..8caa9bd --- /dev/null +++ b/sorel-codegen/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "sorel-codegen" +version = "0.1.0" +edition = "2024" + +[dependencies] +sorel-ir = { workspace = true } +anyhow = "1.0.100" diff --git a/sorel-codegen/src/lib.rs b/sorel-codegen/src/lib.rs new file mode 100644 index 0000000..72a6c86 --- /dev/null +++ b/sorel-codegen/src/lib.rs @@ -0,0 +1,2 @@ +pub mod riscv64_asm; + diff --git a/sorelc/src/riscv_asm_codegen.rs b/sorel-codegen/src/riscv64_asm.rs similarity index 100% rename from sorelc/src/riscv_asm_codegen.rs rename to sorel-codegen/src/riscv64_asm.rs diff --git a/sorelc/Cargo.toml b/sorelc/Cargo.toml index 0129099..9550d4e 100644 --- a/sorelc/Cargo.toml +++ b/sorelc/Cargo.toml @@ -4,6 +4,7 @@ version = "0.1.0" edition = "2024" [dependencies] +sorel-codegen = { workspace = true } sorel-ir = { workspace = true } sorel-tokenizer = { workspace = true } sorel-parser = { workspace = true } diff --git a/sorelc/src/ir.rs b/sorelc/src/import_tree.rs similarity index 96% rename from sorelc/src/ir.rs rename to sorelc/src/import_tree.rs index 8176da5..9c6896b 100644 --- a/sorelc/src/ir.rs +++ b/sorelc/src/import_tree.rs @@ -58,7 +58,7 @@ impl ImportTree { }; let tokens = tokenize(&contents)?; let parsed = &Module::parse(tokens, is_entrypoint)?; - let module = self.generate_internal(module_id.clone(), parsed)?; + let module = self.ir_mod_from_parsed(module_id.clone(), parsed)?; let module = Rc::new(RefCell::new(module)); self.all_modules.insert(module_id.to_string(), module.clone()); if is_entrypoint { @@ -67,7 +67,7 @@ impl ImportTree { Ok(module) } - fn generate_internal(&mut self, module_id: ModuleID, module: &Module) -> Result { + fn ir_mod_from_parsed(&mut self, module_id: ModuleID, module: &Module) -> Result { // Eventually these will end up being sections in assembly let mut text = vec![]; let mut data = vec![]; @@ -172,7 +172,7 @@ impl ImportTree { } } -pub fn compile(path: &str) -> Result { +pub fn build_and_collapse(path: &str) -> Result { let dir = std::env::current_dir()?; let mut tree: ImportTree = Default::default(); let module = tree.import(&dir, path, true)?; diff --git a/sorelc/src/main.rs b/sorelc/src/main.rs index 141e322..18c93a2 100644 --- a/sorelc/src/main.rs +++ b/sorelc/src/main.rs @@ -1,5 +1,5 @@ -mod ir; -mod riscv_asm_codegen; +mod import_tree; +use sorel_codegen::riscv64_asm::*; use anyhow::Result; @@ -9,8 +9,8 @@ use std::path::PathBuf; fn main() -> Result<()> { let filename = std::env::args().nth(1).expect("must provide a file to compile"); - let module = ir::compile(&filename)?; - let mut generator = riscv_asm_codegen::CodeGen::new(&module, 4096); + let module = import_tree::build_and_collapse(&filename)?; + let mut generator = CodeGen::new(&module, 4096); let mut asm_path = PathBuf::from(filename); asm_path.set_extension("asm"); let mut output = File::create(asm_path)?; -- 2.43.0