// lexer/token.rs #[derive(Debug, Clone, PartialEq)] pub enum TokenKind { // 单字符 LeftParen, RightParen, LeftBrace, RightBrace, LeftBracket, RightBracket, Comma, Semicolon, Dot, Colon, Question, // 运算符 Plus, Minus, Star, Slash, Percent, Bang, Equal, Greater, GreaterEqual, Less, LessEqual, EqualEqual, BangEqual, AndAnd, OrOr, PlusEqual, MinusEqual, StarEqual, SlashEqual, PercentEqual, // 字面量 Identifier(String), Number(f64), String(String), // 关键字 Let, Const, Fn, If, Else, While, For, In, Break, Continue, Return, True, False, Nil, EOF, } #[derive(Debug, Clone)] pub struct Token { pub kind: TokenKind, pub line: usize, pub column: usize, }