68 lines
843 B
Rust
68 lines
843 B
Rust
|
|
#[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,
|
||
|
|
}
|