1 unstable release
new 0.1.0 | Feb 18, 2025 |
---|
#136 in Parser tooling
16KB
234 lines
Parse It
A user-friendly, opinionated parser generator for Rust.
Example
use parse_it::{ParseIt, parse_it};
#[derive(Debug, Clone)]
pub enum Instr {
Left,
Right,
Incr,
Decr,
Read,
Write,
Loop(Vec<Self>),
}
parse_it! {
mod parse {
use super::Instr;
pub Brainfuck -> Vec<Instr> {
Primitive* => self,
}
Primitive -> Instr {
'<' => Instr::Left,
'>' => Instr::Right,
'+' => Instr::Incr,
'-' => Instr::Decr,
',' => Instr::Read,
'.' => Instr::Write,
'[' Primitive+ ']' => Instr::Loop(self)
}
}
}
fn main() {
let parser = parse::Brainfuck::default();
let src = "--[>--->->->++>-<<<<<-------]>--.>---------.>--..+++.>----.>+++++++++.<<.+++.------.<-.>>+";
let instrs = parser.parse(src).unwrap();
println!("{:?}", instrs);
}
Dependencies
~1–1.5MB
~29K SLoC