///|
enum TokenKind {
Eof
Identifier(String)
Number(String)
StringLiteral(String)
True
False
Null
In
And
Or
Bang
EqualEqual
BangEqual
Less
LessEqual
Greater
GreaterEqual
Plus
Minus
Star
Slash
Percent
LeftParen
RightParen
LeftBracket
RightBracket
Comma
Dot
QuestionDot
QuestionLeftBracket
} derive(Eq, Debug)
///|
struct Token {
kind : TokenKind
span : Span
} derive(Eq, Debug)
///|
fn Token::new(kind : TokenKind, start : Int, end : Int) -> Token {
{ kind, span: Span::new(start, end) }
}