use ordered_float::OrderedFloat;
use super::span::Span;
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct Token {
pub token_type: TokenType,
pub span: Span,
}
impl Token {
pub fn new(token: TokenType, span: Span) -> Token {
Token {
token_type: token,
span,
}
}
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum TokenType {
Auto,
Func,
Returns,
Return,
If,
Else,
For,
While,
Match,
Const,
Class,
Interface,
Enum,
Import,
Is,
As,
In,
Break,
Continue,
None,
Common,
OpenParen, CloseParen, OpenBrace, CloseBrace, OpenBracket, CloseBracket, Dot, DotDot, Comma,
Colon,
Eq,
Plus,
Minus,
Star,
StarStar,
Slash,
Percent,
Lt,
Gt,
Le,
Ge,
EqEq,
NotEq,
Bang,
Incr,
Decr,
PlusEq,
MinusEq,
StarEq,
SlashEq,
PercentEq,
And,
Or,
Ref,
Int(i64),
Float(OrderedFloat<f64>),
Bool(bool),
Char(char),
Str(String),
Underscore,
Id(String),
Eof,
NewLine,
LineComment(String),
MultilineComment(String),
}