45 lines
706 B
Rust
45 lines
706 B
Rust
#[derive(Debug, Eq, PartialEq, Clone)]
|
|
pub struct Token {
|
|
start: usize,
|
|
end: usize,
|
|
kind: TokenKind,
|
|
}
|
|
|
|
impl Token {
|
|
pub fn new(start: usize, end: usize, kind: TokenKind) -> Self {
|
|
Self { start, end, kind }
|
|
}
|
|
|
|
pub fn start(&self) -> usize {
|
|
self.start
|
|
}
|
|
|
|
pub fn end(&self) -> usize {
|
|
self.end
|
|
}
|
|
|
|
pub fn kind(&self) -> TokenKind {
|
|
self.kind
|
|
}
|
|
}
|
|
|
|
#[derive(Debug, Clone, Copy, Eq, PartialEq)]
|
|
pub enum TokenKind {
|
|
Fn,
|
|
Identifier,
|
|
LeftParentheses,
|
|
RightParentheses,
|
|
End,
|
|
Let,
|
|
Equals,
|
|
IntegerLiteral,
|
|
LongLiteral,
|
|
String,
|
|
Extern,
|
|
Comma,
|
|
Colon,
|
|
RightArrow,
|
|
Plus,
|
|
Minus,
|
|
}
|