use logos::Logos; #[derive(Logos, Debug, PartialEq, Eq)] #[logos(skip r"[ \t\n\f]+")] pub enum Token<'a> { #[regex("[a-zA-Z0-9_\\-]+", |lex| lex.slice())] Word(&'a str), #[regex("\\$[a-zA-Z0-9_\\-]+", |lex| &lex.slice()[1..])] VarIdent(&'a str), #[token("@..")] InputSpread, #[regex("\\@[a-zA-Z0-9_\\-]+", |lex| &lex.slice()[1..])] InputIdent(&'a str), #[token(",")] Comma, #[token("|")] Pipe, #[token("@|")] MappingPipe, #[token("!|")] NullPipe, #[token("@")] At, #[token(">")] GreaterThan, #[token("=")] Equals, #[token(":")] Colon, #[token("[")] BracketOpen, #[token("]")] BracketClose, #[token("(")] ParenOpen, #[token(")")] ParenClose, #[token("{")] BraceOpen, #[token("}")] BraceClose, } #[cfg(test)] mod tests;