- Move .mrs files into misses-compiler/examples/ alongside .rs runners - Add lib.rs exposing parse/codegen for use by example binaries and main.rs - Fix parser: #[attr] vs #[a => b] disambiguation (look for => before ]) - Fix parser: `for` keyword in `impl Foo for Bar` no longer triggers spread (is_spread_for lookahead: must match `for <ident> in $<ident> =>`) - Add derive_getters.mrs: getter methods via spread iteration - Add make_id_type.mrs: newtype u64 wrapper with From impls, derive attrs Run with: cargo run --example hello|derive_builder|declare_table|derive_getters|make_id_type https://claude.ai/code/session_01Tppkab4eLsL21asHGjQJoF
25 lines
587 B
Rust
25 lines
587 B
Rust
fn main() {
|
|
let src = include_str!("hello.mrs");
|
|
show("hello.mrs", src);
|
|
}
|
|
|
|
fn show(name: &str, src: &str) {
|
|
let bar = "=".repeat(60);
|
|
println!("{bar}");
|
|
println!("SOURCE {name}");
|
|
println!("{bar}");
|
|
println!("{}", src.trim());
|
|
println!();
|
|
|
|
match misses::parse(src) {
|
|
Err(e) => eprintln!("parse error: {e}"),
|
|
Ok(ast) => {
|
|
let generated = misses::codegen(&ast);
|
|
println!("{bar}");
|
|
println!("GENERATED");
|
|
println!("{bar}");
|
|
println!("{}", generated.trim());
|
|
}
|
|
}
|
|
}
|