Trait logos::Logos[][src]

pub trait Logos<'source>: Sized {
    type Extras;
    type Source: Source + ?Sized + 'source;

    const ERROR: Self;

    fn lex(lexer: &mut Lexer<'source, Self>);

    fn lexer(source: &'source Self::Source) -> Lexer<'source, Self>

Notable traits for Lexer<'source, Token>

impl<'source, Token> Iterator for Lexer<'source, Token> where
    Token: Logos<'source>, 
type Item = Token;

    where
        Self::Extras: Default
, { ... }
fn lexer_with_extras(
        source: &'source Self::Source,
        extras: Self::Extras
    ) -> Lexer<'source, Self>

Notable traits for Lexer<'source, Token>

impl<'source, Token> Iterator for Lexer<'source, Token> where
    Token: Logos<'source>, 
type Item = Token;
{ ... } }

Trait implemented for an enum representing all tokens. You should never have to implement it manually, use the #[derive(Logos)] attribute on your enum.

Associated Types

type Extras[src]

Associated type Extras for the particular lexer. This can be set using #[logos(extras = MyExtras)] and accessed inside callbacks.

type Source: Source + ?Sized + 'source[src]

Source type this token can be lexed from. This will default to str, unless one of the defined patterns explicitly uses non-unicode byte values or byte slices, in which case that implementation will use [u8].

Loading content...

Associated Constants

const ERROR: Self[src]

Helper const of the variant marked as #[error].

Loading content...

Required methods

fn lex(lexer: &mut Lexer<'source, Self>)[src]

The heart of Logos. Called by the Lexer. The implementation for this function is generated by the logos-derive crate.

Loading content...

Provided methods

fn lexer(source: &'source Self::Source) -> Lexer<'source, Self>

Notable traits for Lexer<'source, Token>

impl<'source, Token> Iterator for Lexer<'source, Token> where
    Token: Logos<'source>, 
type Item = Token;
where
    Self::Extras: Default
[src]

Create a new instance of a Lexer that will produce tokens implementing this Logos.

fn lexer_with_extras(
    source: &'source Self::Source,
    extras: Self::Extras
) -> Lexer<'source, Self>

Notable traits for Lexer<'source, Token>

impl<'source, Token> Iterator for Lexer<'source, Token> where
    Token: Logos<'source>, 
type Item = Token;
[src]

Create a new instance of a Lexer with the provided Extras that will produce tokens implementing this Logos.

Loading content...

Implementors

Loading content...