use internship::IStr;
#[derive(PartialEq, Debug, Clone, Copy)]
pub struct Number {
pub integer: u32,
pub decimal: u32,
pub exponent: i64,
pub base: u8,
}
impl Number {
pub fn new(integer: u32, decimal: u32, exponent: i64, base: u8) -> Self {
Self {
integer,
decimal,
exponent,
base,
}
}
}
#[derive(PartialEq, Debug, Clone)]
pub enum Token {
And,
AndAssign,
Assign,
AssignBigger,
Bigger,
BiggerEqual,
BoolLiteral(bool),
Caret,
CaretAssign,
Colon,
Comma,
Semicolon,
Slash,
SlashAssign,
Dot,
DoubleAnd,
DoubleAssign,
DoubleBigger,
DoubleBiggerEqual,
DoubleLesser,
DoubleLesserEqual,
DoubleMinus,
DoubleOr,
DoublePlus,
DoubleStar,
DoubleStarAssign,
EOF,
Regex(String),
Exclamation,
ExclamationAssign,
ExclamationDoubleAssign,
IdentifierName(IStr),
KAs,
KAsync,
KAwait,
KBreak,
KCase,
KCatch,
KClass,
KConst,
KContinue,
KDebugger,
KDefault,
KDelete,
KDo,
KElse,
KExtend,
KFinally,
KFor,
KFrom,
KFunction,
KGet,
KIf,
KIn,
KImport,
KLet,
KNew,
KOf,
KReturn,
KSet,
KStatic,
KSwitch,
KThis,
KThrow,
KTry,
KTypeof,
KVar,
KVoid,
KWhile,
KWith,
LCurly,
LessEqual,
Lesser,
LineTerminator,
LNull,
LUndefined,
LRound,
LSquare,
Minus,
MinusAssign,
NumericLiteral(Number),
Or,
OrAssign,
Percent,
PercentAssign,
Plus,
PlusAssign,
QuestionMark,
RCurly,
RRound,
RSquare,
Star,
StarAssign,
StringLiteral(String),
Template(String),
Tilde,
TripleAssign,
TripleBigger,
TripleBiggerEqual,
TripleDot,
}