Trait pest::Parser [] [src]

pub trait Parser<'a, T: Input<'a>> {
    type Rule;
    type Token;
    fn input(&self) -> &T;
    fn input_mut(&mut self) -> &mut T;
    fn try<F>(&mut self, revert: bool, rule: F) -> bool where F: FnOnce(&mut Self) -> bool;
    fn prec_climb<F, G>(&mut self, pos: usize, left: usize, min_prec: u8, last_op: Option<(Option<Self::Rule>, u8, bool)>, primary: &mut F, climb: &mut G) -> (Option<(Option<Self::Rule>, u8, bool)>, Option<usize>) where F: FnMut(&mut Self) -> bool, G: FnMut(&mut Self) -> Option<(Option<Self::Rule>, u8, bool)>;
    fn end(&self) -> bool;
    fn eoi_matched(&self) -> bool;
    fn reset(&mut self);
    fn queue(&self) -> &Vec<Self::Token>;
    fn queue_mut(&mut self) -> &mut Vec<Self::Token>;
    fn queue_index(&self) -> usize;
    fn inc_queue_index(&self);
    fn set_queue_index(&self, index: usize);
    fn skip_ws(&mut self);
    fn skip_com(&mut self);
    fn is_atomic(&self) -> bool;
    fn set_atomic(&mut self, value: bool);
    fn track(&mut self, failed: Self::Rule, pos: usize);
    fn tracked_len(&self) -> usize;
    fn expected(&mut self) -> (Vec<Self::Rule>, usize);
}

A trait that defines a parser.

Associated Types

type Rule

type Token

Required Methods

fn input(&self) -> &T

fn input_mut(&mut self) -> &mut T

fn try<F>(&mut self, revert: bool, rule: F) -> bool where F: FnOnce(&mut Self) -> bool

Tries to match rule, returns whether it matched, and advances a parser with in case it did. If revert is true, the parser will not advance.

fn prec_climb<F, G>(&mut self, pos: usize, left: usize, min_prec: u8, last_op: Option<(Option<Self::Rule>, u8, bool)>, primary: &mut F, climb: &mut G) -> (Option<(Option<Self::Rule>, u8, bool)>, Option<usize>) where F: FnMut(&mut Self) -> bool, G: FnMut(&mut Self) -> Option<(Option<Self::Rule>, u8, bool)>

Uses the precendence climbing algorithm to match rules. pos is the current position of the queue. left is the left-most starting position of the current rule. min_prec is the currently processed precedence. last_op is the last greedily parsed infix operator. primary is a closure defined in grammar! that parses a primary expression. climb is a closure defined in grammar! that returns the first Rule that was parsed (provided it was not silented) along with its precedence and right-associativity, or None if no operator passes. This operator triplet is also returned by the function when it greedily parses an operator useful for a higher precedence.

fn end(&self) -> bool

Returns whether a Parser has reached its end.

fn eoi_matched(&self) -> bool

Returns whether a Parser has matched end-of-input.

fn reset(&mut self)

Reset a Parser.

fn queue(&self) -> &Vec<Self::Token>

Returns the queue of all matched Tokens.

fn queue_mut(&mut self) -> &mut Vec<Self::Token>

Returns the mutable queue of all matched Tokens.

fn queue_index(&self) -> usize

Returns the current index within the queue. Used in process!.

fn inc_queue_index(&self)

Increments the current index within the queue. Used in process!.

fn set_queue_index(&self, index: usize)

Set the current index within the queue. Used in process!.

fn skip_ws(&mut self)

Skips white-space.

fn skip_com(&mut self)

Skips comments.

fn is_atomic(&self) -> bool

Returns whether a Parser is currently inside an atomic rule.

fn set_atomic(&mut self, value: bool)

Sets a Parser to atomic rule mode, barring comment & white-space skipping.

fn track(&mut self, failed: Self::Rule, pos: usize)

Keeps track of rule failures. It gets called when a Rule fails at pos.

fn tracked_len(&self) -> usize

Returns the length of the tracked Rules.

fn expected(&mut self) -> (Vec<Self::Rule>, usize)

Retuns a Vec of all expected Rules at the deepest position where the parsing last stopped. It only returns leafs from the rule tree. Used for error reporting.

Implementors