Files
aster/src/lexer/token.rs
T

48 lines
722 B
Rust

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