2021-05-15 14:53:53 +00:00
|
|
|
use crate::defines::{LiteralFloat, LiteralInt};
|
2021-06-05 18:10:40 +00:00
|
|
|
use crate::span::Span;
|
|
|
|
|
|
|
|
pub struct LexToken {
|
|
|
|
pub token_type: TokenType,
|
2021-06-05 19:03:14 +00:00
|
|
|
pub span: Span,
|
2021-06-05 18:10:40 +00:00
|
|
|
}
|
2021-05-15 14:53:53 +00:00
|
|
|
|
2021-06-05 19:03:14 +00:00
|
|
|
#[derive(PartialEq, Debug, Clone)]
|
2021-06-05 18:10:40 +00:00
|
|
|
pub enum TokenType {
|
2021-05-15 14:53:53 +00:00
|
|
|
EndOfFile,
|
|
|
|
WhiteSpace,
|
|
|
|
Identifier(String),
|
|
|
|
IntegerLiteral(LiteralInt),
|
|
|
|
FloatLiteral(LiteralFloat),
|
|
|
|
StringLiteral(String),
|
|
|
|
|
|
|
|
Semicolon,
|
|
|
|
Colon,
|
2022-01-01 16:48:57 +00:00
|
|
|
ColonColon,
|
|
|
|
Comma,
|
2022-04-02 21:30:05 +00:00
|
|
|
Dot,
|
2022-04-03 13:25:26 +00:00
|
|
|
QuestionMark,
|
2021-05-15 14:53:53 +00:00
|
|
|
OpenBracket,
|
|
|
|
CloseBracket,
|
|
|
|
OpenCurlyBracket,
|
|
|
|
CloseCurlyBracket,
|
|
|
|
OpenBlockBracket,
|
|
|
|
CloseBlockBracket,
|
|
|
|
|
|
|
|
// Keywords
|
|
|
|
AndKeyword,
|
|
|
|
AbstractKeyword,
|
|
|
|
AutoKeyword,
|
|
|
|
BoolKeyword,
|
|
|
|
BreakKeyword,
|
|
|
|
CaseKeyword,
|
|
|
|
CastKeyword,
|
|
|
|
CatchKeyword,
|
|
|
|
ClassKeyword,
|
|
|
|
ConstKeyword,
|
|
|
|
ContinueKeyword,
|
|
|
|
DefaultKeyword,
|
|
|
|
DoKeyword,
|
|
|
|
DoubleKeyword,
|
|
|
|
ElseKeyword,
|
|
|
|
EnumKeyword,
|
|
|
|
ExplicitKeyword,
|
|
|
|
ExternalKeyword,
|
|
|
|
FalseKeyword,
|
|
|
|
FinalKeyword,
|
|
|
|
FloatKeyword,
|
|
|
|
ForKeyword,
|
|
|
|
FromKeyword,
|
|
|
|
FuncDefKeyword,
|
|
|
|
FunctionKeyword,
|
|
|
|
GetKeyword,
|
|
|
|
IfKeyword,
|
|
|
|
ImportKeyword,
|
|
|
|
InKeyword,
|
|
|
|
InOutKeyword,
|
|
|
|
IntKeyword,
|
|
|
|
InterfaceKeyword,
|
|
|
|
Int8Keyword,
|
|
|
|
Int16Keyword,
|
|
|
|
Int32Keyword,
|
|
|
|
Int64Keyword,
|
|
|
|
IsKeyword,
|
|
|
|
MixinKeyword,
|
|
|
|
NamespaceKeyword,
|
|
|
|
NotKeyword,
|
|
|
|
NullKeyword,
|
|
|
|
OrKeyword,
|
|
|
|
OutKeyword,
|
|
|
|
OverrideKeyword,
|
|
|
|
PrivateKeyword,
|
|
|
|
PropertyKeyword,
|
|
|
|
ProtectedKeyword,
|
|
|
|
ReturnKeyword,
|
|
|
|
SetKeyword,
|
|
|
|
SharedKeyword,
|
|
|
|
SuperKeyword,
|
|
|
|
SwitchKeyword,
|
|
|
|
ThisKeyword,
|
|
|
|
TrueKeyword,
|
|
|
|
TryKeyword,
|
|
|
|
TypeDefKeyword,
|
|
|
|
UintKeyword,
|
|
|
|
Uint8Keyword,
|
|
|
|
Uint16Keyword,
|
|
|
|
Uint32Keyword,
|
|
|
|
Uint64Keyword,
|
|
|
|
VoidKeyword,
|
|
|
|
WhileKeyword,
|
|
|
|
XorKeyword,
|
|
|
|
|
|
|
|
// AssignOp
|
|
|
|
Equals,
|
|
|
|
PlusEquals,
|
|
|
|
MinusEquals,
|
|
|
|
StarEquals,
|
|
|
|
SlashEquals,
|
|
|
|
LineEquals,
|
|
|
|
AmpersandEquals,
|
|
|
|
RoofEquals,
|
|
|
|
PercentEquals,
|
|
|
|
StarStarEquals,
|
|
|
|
LeftLeftEquals,
|
|
|
|
RightRightEquals,
|
|
|
|
RightRightRightEquals,
|
|
|
|
|
|
|
|
// LogicOp
|
|
|
|
AmpersandAmpersand,
|
|
|
|
LineLine,
|
|
|
|
RoofRoof,
|
|
|
|
|
|
|
|
// CompOp
|
|
|
|
EqualsEquals,
|
|
|
|
NotEquals,
|
|
|
|
NotIsKeyword,
|
|
|
|
GreaterThan,
|
|
|
|
GreaterThanEquals,
|
|
|
|
LessThan,
|
|
|
|
LessThanEquals,
|
|
|
|
|
|
|
|
// MathOp
|
|
|
|
Plus,
|
|
|
|
Minus,
|
|
|
|
Star,
|
|
|
|
Slash,
|
|
|
|
Percent,
|
|
|
|
StarStar,
|
|
|
|
|
|
|
|
// BitOp
|
|
|
|
Ampersand,
|
|
|
|
VerticalLine,
|
|
|
|
Roof,
|
|
|
|
LeftLeft,
|
|
|
|
RightRight,
|
|
|
|
RightRightRight,
|
|
|
|
|
|
|
|
// ExprPreOp
|
|
|
|
ExclamationMark,
|
|
|
|
PlusPlus,
|
|
|
|
MinusMinus,
|
|
|
|
Tilde,
|
|
|
|
AtSymbol,
|
|
|
|
}
|