Trait Parse

Source
pub trait Parse<'source>: Sized {
    // Required method
    fn std_parse(
        input: &mut Parser<'source>,
        recoverable_errors: &mut Vec<Error>,
    ) -> Result<Self, Vec<Error>>;

    // Provided method
    fn parse(input: &mut Parser<'source>) -> ParseResult<Self> { ... }
}
Expand description

Any type that can be parsed from a source of tokens.

Required Methods§

Source

fn std_parse( input: &mut Parser<'source>, recoverable_errors: &mut Vec<Error>, ) -> Result<Self, Vec<Error>>

Parses a value from the given stream of tokens, advancing the stream past the consumed tokens if parsing is successful.

If any recoverable errors are encountered, they should be appended to the given Vec, and parsing should continue as normal. If an unrecoverable error is encountered, parsing should abort with said error.

This function should be used by private functions in the library.

Provided Methods§

Source

fn parse(input: &mut Parser<'source>) -> ParseResult<Self>

Parses a value from the given stream of tokens, advancing the stream past the consumed tokens if parsing is successful.

This function should be used by users of this parser.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§

Source§

impl<'source> Parse<'source> for AssignTarget

Source§

impl<'source> Parse<'source> for Param

Source§

impl<'source> Parse<'source> for Atom

Source§

impl<'source> Parse<'source> for Expr

Source§

impl<'source> Parse<'source> for Primary

Source§

impl<'source> Parse<'source> for Literal

Source§

impl<'source> Parse<'source> for cas_parser::parser::ast::assign::Assign

Source§

impl<'source> Parse<'source> for Binary

Source§

impl<'source> Parse<'source> for Block

Source§

impl<'source> Parse<'source> for cas_parser::parser::ast::branch::Of

Source§

impl<'source> Parse<'source> for cas_parser::parser::ast::branch::Then

Source§

impl<'source> Parse<'source> for Call

Source§

impl<'source> Parse<'source> for cas_parser::parser::ast::for_expr::For

Source§

impl<'source> Parse<'source> for cas_parser::parser::ast::if_expr::If

Source§

impl<'source> Parse<'source> for Index

Source§

impl<'source> Parse<'source> for LitBool

Source§

impl<'source> Parse<'source> for LitList

Source§

impl<'source> Parse<'source> for LitListRepeat

Source§

impl<'source> Parse<'source> for LitRadix

Source§

impl<'source> Parse<'source> for LitSym

Source§

impl<'source> Parse<'source> for LitUnit

Source§

impl<'source> Parse<'source> for cas_parser::parser::ast::loop_expr::Break

Source§

impl<'source> Parse<'source> for cas_parser::parser::ast::loop_expr::Continue

Source§

impl<'source> Parse<'source> for cas_parser::parser::ast::loop_expr::Loop

Source§

impl<'source> Parse<'source> for Paren

Source§

impl<'source> Parse<'source> for cas_parser::parser::ast::product::Product

Source§

impl<'source> Parse<'source> for Range

Source§

impl<'source> Parse<'source> for cas_parser::parser::ast::return_expr::Return

Source§

impl<'source> Parse<'source> for Stmt

Source§

impl<'source> Parse<'source> for cas_parser::parser::ast::sum::Sum

Source§

impl<'source> Parse<'source> for Unary

Source§

impl<'source> Parse<'source> for cas_parser::parser::ast::while_expr::While

Source§

impl<'source> Parse<'source> for cas_parser::parser::keyword::Break<'source>

Source§

impl<'source> Parse<'source> for cas_parser::parser::keyword::Continue<'source>

Source§

impl<'source> Parse<'source> for Else<'source>

Source§

impl<'source> Parse<'source> for cas_parser::parser::keyword::For<'source>

Source§

impl<'source> Parse<'source> for cas_parser::parser::keyword::If<'source>

Source§

impl<'source> Parse<'source> for In<'source>

Source§

impl<'source> Parse<'source> for Let<'source>

Source§

impl<'source> Parse<'source> for cas_parser::parser::keyword::Loop<'source>

Source§

impl<'source> Parse<'source> for cas_parser::parser::keyword::Of<'source>

Source§

impl<'source> Parse<'source> for cas_parser::parser::keyword::Product<'source>

Source§

impl<'source> Parse<'source> for cas_parser::parser::keyword::Return<'source>

Source§

impl<'source> Parse<'source> for cas_parser::parser::keyword::Sum<'source>

Source§

impl<'source> Parse<'source> for cas_parser::parser::keyword::Then<'source>

Source§

impl<'source> Parse<'source> for cas_parser::parser::keyword::While<'source>

Source§

impl<'source> Parse<'source> for AssignOp

Source§

impl<'source> Parse<'source> for BinOp

Source§

impl<'source> Parse<'source> for UnaryOp

Source§

impl<'source> Parse<'source> for Add<'source>

Source§

impl<'source> Parse<'source> for AddAssign<'source>

Source§

impl<'source> Parse<'source> for And<'source>

Source§

impl<'source> Parse<'source> for AndAssign<'source>

Source§

impl<'source> Parse<'source> for ApproxEq<'source>

Source§

impl<'source> Parse<'source> for ApproxNotEq<'source>

Source§

impl<'source> Parse<'source> for cas_parser::parser::token::Assign<'source>

Source§

impl<'source> Parse<'source> for Bin<'source>

Source§

impl<'source> Parse<'source> for BitAnd<'source>

Source§

impl<'source> Parse<'source> for BitAndAssign<'source>

Source§

impl<'source> Parse<'source> for BitLeft<'source>

Source§

impl<'source> Parse<'source> for BitLeftAssign<'source>

Source§

impl<'source> Parse<'source> for BitNot<'source>

Source§

impl<'source> Parse<'source> for BitOr<'source>

Source§

impl<'source> Parse<'source> for BitOrAssign<'source>

Source§

impl<'source> Parse<'source> for BitRight<'source>

Source§

impl<'source> Parse<'source> for BitRightAssign<'source>

Source§

impl<'source> Parse<'source> for Boolean<'source>

Source§

impl<'source> Parse<'source> for CloseCurly<'source>

Source§

impl<'source> Parse<'source> for CloseParen<'source>

Source§

impl<'source> Parse<'source> for CloseSquare<'source>

Source§

impl<'source> Parse<'source> for Comma<'source>

Source§

impl<'source> Parse<'source> for Div<'source>

Source§

impl<'source> Parse<'source> for DivAssign<'source>

Source§

impl<'source> Parse<'source> for Dot<'source>

Source§

impl<'source> Parse<'source> for Eq<'source>

Source§

impl<'source> Parse<'source> for Exp<'source>

Source§

impl<'source> Parse<'source> for ExpAssign<'source>

Source§

impl<'source> Parse<'source> for Factorial<'source>

Source§

impl<'source> Parse<'source> for Greater<'source>

Source§

impl<'source> Parse<'source> for GreaterEq<'source>

Source§

impl<'source> Parse<'source> for Hex<'source>

Source§

impl<'source> Parse<'source> for Int<'source>

Source§

impl<'source> Parse<'source> for Keyword<'source>

Source§

impl<'source> Parse<'source> for Less<'source>

Source§

impl<'source> Parse<'source> for LessEq<'source>

Source§

impl<'source> Parse<'source> for Mod<'source>

Source§

impl<'source> Parse<'source> for ModAssign<'source>

Source§

impl<'source> Parse<'source> for Mul<'source>

Source§

impl<'source> Parse<'source> for MulAssign<'source>

Source§

impl<'source> Parse<'source> for Name<'source>

Source§

impl<'source> Parse<'source> for NewLine<'source>

Source§

impl<'source> Parse<'source> for Not<'source>

Source§

impl<'source> Parse<'source> for NotEq<'source>

Source§

impl<'source> Parse<'source> for Oct<'source>

Source§

impl<'source> Parse<'source> for OpenCurly<'source>

Source§

impl<'source> Parse<'source> for OpenParen<'source>

Source§

impl<'source> Parse<'source> for OpenSquare<'source>

Source§

impl<'source> Parse<'source> for Or<'source>

Source§

impl<'source> Parse<'source> for OrAssign<'source>

Source§

impl<'source> Parse<'source> for Quote<'source>

Source§

impl<'source> Parse<'source> for RangeClosed<'source>

Source§

impl<'source> Parse<'source> for RangeHalfOpen<'source>

Source§

impl<'source> Parse<'source> for Semicolon<'source>

Source§

impl<'source> Parse<'source> for Sub<'source>

Source§

impl<'source> Parse<'source> for SubAssign<'source>

Source§

impl<'source> Parse<'source> for Symbol<'source>

Source§

impl<'source> Parse<'source> for Whitespace<'source>

Source§

impl<'source, D, T> Parse<'source> for Delimited<D, T>
where D: Parse<'source> + Debug, T: Parse<'source> + Debug,

Source§

impl<'source, P, T> Parse<'source> for Surrounded<'source, P, T>
where P: Parse<'source> + Pair, T: Parse<'source>,