parse-it 0.3.0

A user-friendly, opinionated parser generator for Rust.
Documentation

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! {
    #[parser]
    mod parse {
        use super::Instr;

        type Lexer = parse_it::CharLexer;

        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);
}