#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct Span {
pub start: usize,
pub end: usize,
}
impl Span {
pub fn new(start: usize, end: usize) -> Self {
Self { start, end }
}
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum TokenKind {
Ident(String),
Str(String),
KwVersion,
KwImport,
KwAs,
KwLet,
KwDefault,
KwBeam,
KwIf,
KwThen,
KwElse,
KwTrue,
KwFalse,
KwHook,
LBrace,
RBrace,
LBracket,
RBracket,
LParen,
RParen,
Comma,
Colon,
Eq,
EqEq,
NotEq,
AndAnd,
OrOr,
Plus,
Dot,
Newline,
Eof,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct Token {
pub kind: TokenKind,
pub span: Span,
}
impl Token {
pub fn new(kind: TokenKind, span: Span) -> Self {
Self { kind, span }
}
}