#[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 { trailing_junk_start: u32 },
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,
trailing_junk_start: u32,
},
Numeric {
base: Base,
empty_exponent_start: Option<u32>,
trailing_junk_start: u32,
},
Str { terminated: bool },
ByteStr { terminated: bool },
BitStr { terminated: bool },
DollarQuotedString { terminated: bool },
UnicodeEscStr { terminated: bool },
EscStr { terminated: bool },
}