Skip to main content

wowlab_parsers/parsers/access/
lexer.rs

1use logos::{Lexer as LogosLexer, Logos};
2
3/// Lexer tokens for the access-control grammar.
4#[derive(Clone, Debug, Logos, PartialEq)]
5#[logos(skip r"[ \t]+")]
6pub(super) enum Token<'a> {
7    #[token("public")]
8    Public,
9
10    #[token("discord")]
11    Discord,
12
13    #[token("friends")]
14    Friends,
15
16    #[token(":")]
17    Colon,
18
19    #[token(",")]
20    Comma,
21
22    #[regex(r"[a-zA-Z0-9_-]+")]
23    Ident(&'a str),
24}
25
26/// Logos lexer for access-control [`Token`]s.
27type Lexer<'a> = LogosLexer<'a, Token<'a>>;
28
29/// Build a lexer for the given access-control input.
30pub(super) fn lex(input: &str) -> Lexer<'_> {
31    Token::lexer(input)
32}