#[derive(Debug, Clone, Copy, PartialEq)] enum Token { Letter, } impl<'s> ::logos::Logos<'s> for Token { type Error = (); type Extras = (); type Source = str; fn lex(lex: &mut ::logos::Lexer<'s, Self>) { use logos::internal::{CallbackResult, LexerInternal}; type Lexer<'s> = ::logos::Lexer<'s, Token>; fn _end<'s>(lex: &mut Lexer<'s>) { lex.end() } fn _error<'s>(lex: &mut Lexer<'s>) { lex.bump_unchecked(1); lex.error(); } macro_rules ! _fast_loop { ($ lex : ident , $ test : ident , $ miss : expr) => { while let Some (arr) = $ lex . read :: < & [u8 ; 16] > () { if $ test (arr [0]) { if $ test (arr [1]) { if $ test (arr [2]) { if $ test (arr [3]) { if $ test (arr [4]) { if $ test (arr [5]) { if $ test (arr [6]) { if $ test (arr [7]) { if $ test (arr [8]) { if $ test (arr [9]) { if $ test (arr [10]) { if $ test (arr [11]) { if $ test (arr [12]) { if $ test (arr [13]) { if $ test (arr [14]) { if $ test (arr [15]) { $ lex . bump_unchecked (16) ; continue ; } $ lex . bump_unchecked (15) ; return $ miss ; } $ lex . bump_unchecked (14) ; return $ miss ; } $ lex . bump_unchecked (13) ; return $ miss ; } $ lex . bump_unchecked (12) ; return $ miss ; } $ lex . bump_unchecked (11) ; return $ miss ; } $ lex . bump_unchecked (10) ; return $ miss ; } $ lex . bump_unchecked (9) ; return $ miss ; } $ lex . bump_unchecked (8) ; return $ miss ; } $ lex . bump_unchecked (7) ; return $ miss ; } $ lex . bump_unchecked (6) ; return $ miss ; } $ lex . bump_unchecked (5) ; return $ miss ; } $ lex . bump_unchecked (4) ; return $ miss ; } $ lex . bump_unchecked (3) ; return $ miss ; } $ lex . bump_unchecked (2) ; return $ miss ; } $ lex . bump_unchecked (1) ; return $ miss ; } return $ miss ; } while $ lex . test ($ test) { $ lex . bump_unchecked (1) ; } $ miss } ; } #[inline] fn goto1_x<'s>(lex: &mut Lexer<'s>) { lex.set(Ok(Token::Letter)); } #[inline] fn goto3_at1_with3<'s>(lex: &mut Lexer<'s>) { match lex.read_at::<&[u8; 2usize]>(1usize) { Some(b"-z") => { lex.bump_unchecked(3usize); goto1_x(lex) } _ => _error(lex), } } #[inline] fn goto4<'s>(lex: &mut Lexer<'s>) { let arr = match lex.read::<&[u8; 3usize]>() { Some(arr) => arr, None => return _end(lex), }; match arr[0] { b'a' => goto3_at1_with3(lex), _ => _error(lex), } } goto4(lex) } }