Trait TokenStream

Source
pub trait TokenStream<T> {
    // Required methods
    fn peek(&mut self, offset: usize) -> Spanned<T>;
    fn bump(&mut self);
    fn consumed(&self) -> usize;
    fn last_span(&self) -> Span;
    fn emit(&mut self, diag: DiagBuilder2);
    fn severity(&self) -> Severity;

    // Provided methods
    fn skip(&mut self) { ... }
    fn last_loc(&self) -> Location { ... }
    fn is_fatal(&self) -> bool { ... }
    fn is_error(&self) -> bool { ... }
}
Expand description

A generalized stream of tokens that accepts emission of diagnostics and tracking of the severity of issues encountered.

Required Methods§

Source

fn peek(&mut self, offset: usize) -> Spanned<T>

Look ahead at a token in the stream.

Source

fn bump(&mut self)

Consume the current token.

Source

fn consumed(&self) -> usize

Get the number of tokens consumed. Excludes tokens skipped with skip.

Source

fn last_span(&self) -> Span

Get the span of the last token consumed token (bumped or skipped).

Source

fn emit(&mut self, diag: DiagBuilder2)

Emit a diagnostic.

Source

fn severity(&self) -> Severity

Get the severity of the worst diagnostic emitted so far.

Provided Methods§

Source

fn skip(&mut self)

Skip the current token. Usually the same as bump, but may be used to keep skipped tokens out of the consumed tokens count by some parsers.

Source

fn last_loc(&self) -> Location

Get the tail location of the last consumed token (bumped or skipped).

Source

fn is_fatal(&self) -> bool

Check whether a fatal diagnostic has been emitted.

Source

fn is_error(&self) -> bool

Check whether an error diagnostic has been emitted.

Implementors§

Source§

impl<T> TokenStream<Token> for BasicParser<T>
where T: Grinder<Item = Option<u8>, Error = DiagBuilder2>,