Expand description
Parze is a clean, efficient parser combinator written in Rust.
§Features
- All the usual parser combinator operations
- Macro for simple rule and parser declaration
- Support for recursive parser definitions
- Custom error types - define your own!
- Prioritised / merged failure for more useful errors
- No dependencies - fast compilation!
no_std
support
§Example
A parser capable of parsing all valid Brainfuck code into an AST.
#![cfg(feature = "macros")]
#![feature(proc_macro_hygiene)]
use parze::prelude::*;
#[derive(Clone, Debug, PartialEq)]
enum Instr { Add, Sub, Left, Right, In, Out, Loop(Vec<Instr>) }
parsers! {
bf: Parser<char, _> = {
( '+' -> { Instr::Add }
| '-' -> { Instr::Sub }
| '<' -> { Instr::Left }
| '>' -> { Instr::Right }
| ',' -> { Instr::In }
| '.' -> { Instr::Out }
| '[' -& bf &- ']' => { |i| Instr::Loop(i) }
) *
}
}
Modules§
Macros§
- parsers
- A macro to define recursive parsers.
- parze_
error - rule
- A macro to define parser rules.
Structs§
- Declaration
- A type used to separate the declaration and definition of a parser such that it may be defined in terms of itself.
- Parser
- A type that represents a rule that may be used to parse a list of symbols.
Traits§
Functions§
- all_of
- A parser that accepts all of the given list of symbols, one after another.
- all_sym
- A parser that accepts all input symbols.
- any_sym
- A parser that accepts any single symbol.
- call
- A parser that invokes another parser, as generated by the given function.
- declare
- Declare a parser before defining it. A definition can be given later with the
.define
method. - empty
- A parser that accepts no symbols.
- maybe_
map - A parser that accepts one symbol provided it passes the given test, mapping it to another symbol in the process.
- none_of
- A parser that accepts any one symbol that is not within the given set of symbols.
- not_sym
- A parser that accepts any one thing that is not the given symbol.
- nothing
- A parser that does not accept any input symbols.
- one_of
- A parser that accepts one of the given set of symbols.
- padding
- A parser that accepts any number of ‘padding’ symbols. Usually, this is taken to mean whitespace.
- permit
- A parser that accepts one symbol provided it passes the given test.
- recursive
- A wrapper function for recursive parser declarations.
- sym
- A parser that accepts the given symbol.
- try_map
- A parser that accepts one symbol provided it passes the given test, mapping it to another symbol in the process.