#[derive(Debug, PartialEq, Clone, Copy)]
pub enum TokenKind {
Unknown,
Literal { kind: LiteralKind },
Whitespace,
Ident,
Semi,
Eof,
Slash,
LineComment,
BlockComment { terminated: bool },
Minus,
Colon,
Dot,
Eq,
Gt,
And,
Lt,
Bang,
Plus,
Tilde,
Pound,
Question,
Or,
Percent,
Caret,
Star,
Backtick,
At,
CloseBracket,
OpenBracket,
CloseCurly,
OpenCurly,
CloseParen,
OpenParen,
Comma,
UnknownPrefix,
PositionalParam,
QuotedIdent { terminated: bool },
}
#[derive(Debug, Clone, Copy)]
pub struct Token {
pub kind: TokenKind,
pub len: u32,
}
impl Token {
pub(crate) fn new(kind: TokenKind, len: u32) -> Token {
Token { kind, len }
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord)]
pub enum Base {
Binary = 2,
Octal = 8,
Decimal = 10,
Hexadecimal = 16,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord)]
pub enum LiteralKind {
Int { base: Base, empty_int: bool },
Float { base: Base, empty_exponent: bool },
Str { terminated: bool },
ByteStr { terminated: bool },
BitStr { terminated: bool },
DollarQuotedString { terminated: bool },
UnicodeEscStr { terminated: bool },
EscStr { terminated: bool },
}