[][src]Crate parze

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.

use parze::prelude::*;

#[derive(Clone, Debug, PartialEq)]
enum Instr { Add, Sub, Left, Right, In, Out, Loop(Vec<Instr>) }

parsers! {
    bf: Parser<_, _> = {
        ( '+' -> { Instr::Add }
        | '-' -> { Instr::Sub }
        | '<' -> { Instr::Left }
        | '>' -> { Instr::Right }
        | ',' -> { Instr::In }
        | '.' -> { Instr::Out }
        | '[' -& bf &- ']' => { |ts| Instr::Loop(ts) }
        ) *
    }
}

Modules

also
chain
error
prelude
reduce
repeat

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.

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.

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 accepts no input symbols.

one_of

A parser that accepts one of the given set of symbols.

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.