#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] pub enum TokenKind { // Keywords Return, If, Else, True, False, Nil, // Expressions Name, Number, String, // Binary operators Plus, Minus, Star, Slash, // Unary operators (not already covered) Bang, // Boolean operators And, Or, // Comparison BangEq, EqEq, Greater, GreaterEq, Less, LessEq, // Braces, parens, etc LParen, RParen, LBrace, RBrace, LBracket, RBracket, // Assignment Eq, // Dot, comma Dot, Comma, Arrow, Colon, // Line end Eol, // File end Eof, } #[derive(Debug, Clone)] pub struct Token { pub line: usize, //pub index: usize, pub text: String, pub kind: TokenKind, }