diff --git a/Cargo.lock b/Cargo.lock index 46adabd..fc2f373 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -220,18 +220,6 @@ dependencies = [ "digest", ] -[[package]] -name = "shader_prepoc" -version = "0.1.0" -dependencies = [ - "pest", - "pest_derive", - "regex", - "thiserror", - "tracing", - "tracing-subscriber", -] - [[package]] name = "sharded-slab" version = "0.1.7" @@ -375,6 +363,18 @@ version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" +[[package]] +name = "wgsl_preprocessor" +version = "0.1.0" +dependencies = [ + "pest", + "pest_derive", + "regex", + "thiserror", + "tracing", + "tracing-subscriber", +] + [[package]] name = "winapi" version = "0.3.9" diff --git a/Cargo.toml b/Cargo.toml index b6ccf1a..ae57867 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "shader_prepoc" +name = "wgsl_preprocessor" version = "0.1.0" edition = "2021" diff --git a/src/main.rs b/src/lib.rs similarity index 67% rename from src/main.rs rename to src/lib.rs index 3c9a680..b1c9164 100644 --- a/src/main.rs +++ b/src/lib.rs @@ -13,79 +13,6 @@ pub use preprocessor::*; #[grammar = "wgsl.pest"] pub(crate) struct WgslParser; -fn main() { - tracing_subscriber::fmt() - // enable everything - .with_max_level(tracing::Level::TRACE) - // sets this to be the default, global collector for this application. - .init(); - - let mut p = Processor::new(); - let inner_include_src = fs::read_to_string("shaders/inner_include.wgsl").unwrap(); - p.parse_module(&inner_include_src) - .unwrap() - .expect("failed to find module"); - - let simple_include_src = fs::read_to_string("shaders/simple.wgsl").unwrap(); - p.parse_module(&simple_include_src) - .unwrap() - .expect("failed to find module"); - - let base_include_src = fs::read_to_string("shaders/base.wgsl").unwrap(); - let base_module_path = p.parse_module(&base_include_src) - .unwrap() - .expect("failed to find module"); - - for (name, module) in &p.modules { - println!("{name}:"); - - if !module.constants.is_empty() || !module.functions.is_empty() { - println!(" defines:"); - } - - for (name, def) in &module.constants { - println!(" const {name}, {}-{}", def.start_pos, def.end_pos); - } - - for (name, def) in &module.functions { - let requires: Vec = def.requirements.iter().map(|r| { - let pre = r.module.as_ref().map(|m| format!("{m}::")).unwrap_or_default(); - format!("{}{}", pre, r.name) - }).collect(); - println!(" fn {name}, {}-{}. requires: {:?}", def.start_pos, def.end_pos, requires); - } - - println!(" imported modules: {:?}", module.module_imports); - - if !module.item_imports.is_empty() { - println!(" type imports:"); - } - - for (module, usages) in &module.item_imports { - println!(" {}: {:?}", module, usages.imports); - } - - if !module.import_usages.is_empty() { - println!(" usages:"); - } - - for (module, usages) in &module.import_usages { - println!(" {}:", module); - - for import in usages.iter() { - println!( - " {:?} `{}` at {}:", - import.ty, import.name, import.start_pos - ); - } - } - } - - let base_include_src = fs::read_to_string("shaders/base.wgsl").unwrap(); - let out = p.process_file(&base_module_path, &base_include_src).unwrap(); - fs::write("out.wgsl", out).unwrap(); -} - #[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)] pub enum ExternalUsageType { Variable,