forked from katzen-cafe/iowo
46 lines
864 B
Rust
46 lines
864 B
Rust
|
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;
|