use std::ops::Range;
#[derive(Clone, Copy, Debug, PartialEq)]
pub(super) struct Token {
pub(super) typ: TokenType,
pub(super) start: usize,
pub(super) len: u32,
}
#[rustfmt::skip]
#[derive(Clone, Copy, Debug, PartialEq)]
pub(super) enum TokenType {
And, Break, Do, Else, ElseIf, End, False, For, Function, If, In, Local,
Nil, Not, Or, Repeat, Return, Then, True, Until, While,
Plus, Minus, Star, Slash, Mod, Caret, Hash,
Equal, NotEqual, LessEqual, GreaterEqual, Less, Greater,
LParen, LParenLineStart, RParen, LCurly, RCurly, LSquare, RSquare,
Semi, Colon, Comma, Dot, DotDot, DotDotDot, Assign,
Identifier,
LiteralNumber,
LiteralHexNumber,
LiteralString,
EndOfFile,
}
impl Token {
pub(super) fn range(&self) -> Range<usize> {
let start = self.start;
let end = start + self.len as usize;
start..end
}
}