Struct ruschm::parser::Parser[][src]

pub struct Parser<TokenIter: Iterator<Item = Result<Token, SchemeError>>> {
    pub current: Option<Token>,
    pub lexer: Peekable<TokenIter>,
    pub syntax_env: Rc<LexicalScope<Transformer>>,
    // some fields omitted
}

Fields

current: Option<Token>lexer: Peekable<TokenIter>syntax_env: Rc<LexicalScope<Transformer>>

Implementations

impl<TokenIter: Iterator<Item = Result<Token, SchemeError>>> Parser<TokenIter>[src]

pub fn from_lexer(lexer: TokenIter) -> Parser<TokenIter>

Notable traits for Parser<TokenIter>

impl<TokenIter: Iterator<Item = Result<Token, SchemeError>>> Iterator for Parser<TokenIter> type Item = Result<Statement, SchemeError>;
[src]

pub fn parse_current(
    &mut self,
    syntax_env: &Rc<LexicalScope<Transformer>>
) -> Result<Option<Statement>, SchemeError>
[src]

pub fn transform_to_statement(
    datum: Datum,
    syntax_env: &Rc<LexicalScope<Transformer>>
) -> Result<Statement, SchemeError>
[src]

pub fn transform_to_expression(
    datum: Datum,
    syntax_env: &Rc<LexicalScope<Transformer>>
) -> Result<Expression, SchemeError>
[src]

pub fn current_datum(&mut self) -> Result<Option<Datum>, SchemeError>[src]

pub fn unwrap_non_end<T>(op: Option<T>) -> Result<T, SchemeError>[src]

pub fn current_list_or_pair(&mut self) -> Result<Datum, SchemeError>[src]

pub fn parse_root(&mut self) -> Result<Option<Statement>, SchemeError>[src]

pub fn parse(
    &mut self,
    syntax_env: Rc<LexicalScope<Transformer>>
) -> Result<Option<Statement>, SchemeError>
[src]

Trait Implementations

impl<TokenIter: Iterator<Item = Result<Token, SchemeError>>> Iterator for Parser<TokenIter>[src]

type Item = Result<Statement, SchemeError>

The type of the elements being iterated over.

Auto Trait Implementations

impl<TokenIter> !RefUnwindSafe for Parser<TokenIter>

impl<TokenIter> !Send for Parser<TokenIter>

impl<TokenIter> !Sync for Parser<TokenIter>

impl<TokenIter> Unpin for Parser<TokenIter> where
    TokenIter: Unpin

impl<TokenIter> !UnwindSafe for Parser<TokenIter>

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<I> IntoIterator for I where
    I: Iterator
[src]

type Item = <I as Iterator>::Item

The type of the elements being iterated over.

type IntoIter = I

Which kind of iterator are we turning this into?

impl<T> Itertools for T where
    T: Iterator + ?Sized
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.