mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 22:37:35 +00:00
LibJS: Use some macro magic to avoid duplicating all the token types
This commit is contained in:
parent
f221771717
commit
a1c718e387
2 changed files with 99 additions and 265 deletions
|
@ -31,96 +31,101 @@
|
|||
|
||||
namespace JS {
|
||||
|
||||
#define ENUMERATE_JS_TOKENS \
|
||||
__ENUMERATE_JS_TOKEN(Ampersand) \
|
||||
__ENUMERATE_JS_TOKEN(AmpersandEquals) \
|
||||
__ENUMERATE_JS_TOKEN(Asterisk) \
|
||||
__ENUMERATE_JS_TOKEN(AsteriskAsteriskEquals) \
|
||||
__ENUMERATE_JS_TOKEN(AsteriskEquals) \
|
||||
__ENUMERATE_JS_TOKEN(Await) \
|
||||
__ENUMERATE_JS_TOKEN(BoolLiteral) \
|
||||
__ENUMERATE_JS_TOKEN(BracketClose) \
|
||||
__ENUMERATE_JS_TOKEN(BracketOpen) \
|
||||
__ENUMERATE_JS_TOKEN(Break) \
|
||||
__ENUMERATE_JS_TOKEN(Caret) \
|
||||
__ENUMERATE_JS_TOKEN(Case) \
|
||||
__ENUMERATE_JS_TOKEN(Catch) \
|
||||
__ENUMERATE_JS_TOKEN(Class) \
|
||||
__ENUMERATE_JS_TOKEN(Colon) \
|
||||
__ENUMERATE_JS_TOKEN(Comma) \
|
||||
__ENUMERATE_JS_TOKEN(Const) \
|
||||
__ENUMERATE_JS_TOKEN(CurlyClose) \
|
||||
__ENUMERATE_JS_TOKEN(CurlyOpen) \
|
||||
__ENUMERATE_JS_TOKEN(Default) \
|
||||
__ENUMERATE_JS_TOKEN(Delete) \
|
||||
__ENUMERATE_JS_TOKEN(Do) \
|
||||
__ENUMERATE_JS_TOKEN(DoubleAmpersand) \
|
||||
__ENUMERATE_JS_TOKEN(DoubleAsterisk) \
|
||||
__ENUMERATE_JS_TOKEN(DoublePipe) \
|
||||
__ENUMERATE_JS_TOKEN(DoubleQuestionMark) \
|
||||
__ENUMERATE_JS_TOKEN(Else) \
|
||||
__ENUMERATE_JS_TOKEN(Eof) \
|
||||
__ENUMERATE_JS_TOKEN(Equals) \
|
||||
__ENUMERATE_JS_TOKEN(EqualsEquals) \
|
||||
__ENUMERATE_JS_TOKEN(EqualsEqualsEquals) \
|
||||
__ENUMERATE_JS_TOKEN(ExclamationMark) \
|
||||
__ENUMERATE_JS_TOKEN(ExclamationMarkEquals) \
|
||||
__ENUMERATE_JS_TOKEN(ExclamationMarkEqualsEquals) \
|
||||
__ENUMERATE_JS_TOKEN(Finally) \
|
||||
__ENUMERATE_JS_TOKEN(For) \
|
||||
__ENUMERATE_JS_TOKEN(Function) \
|
||||
__ENUMERATE_JS_TOKEN(GreaterThan) \
|
||||
__ENUMERATE_JS_TOKEN(GreaterThanEquals) \
|
||||
__ENUMERATE_JS_TOKEN(Identifier) \
|
||||
__ENUMERATE_JS_TOKEN(If) \
|
||||
__ENUMERATE_JS_TOKEN(In) \
|
||||
__ENUMERATE_JS_TOKEN(Instanceof) \
|
||||
__ENUMERATE_JS_TOKEN(Interface) \
|
||||
__ENUMERATE_JS_TOKEN(Invalid) \
|
||||
__ENUMERATE_JS_TOKEN(LessThan) \
|
||||
__ENUMERATE_JS_TOKEN(LessThanEquals) \
|
||||
__ENUMERATE_JS_TOKEN(Let) \
|
||||
__ENUMERATE_JS_TOKEN(Minus) \
|
||||
__ENUMERATE_JS_TOKEN(MinusEquals) \
|
||||
__ENUMERATE_JS_TOKEN(MinusMinus) \
|
||||
__ENUMERATE_JS_TOKEN(New) \
|
||||
__ENUMERATE_JS_TOKEN(NullLiteral) \
|
||||
__ENUMERATE_JS_TOKEN(NumericLiteral) \
|
||||
__ENUMERATE_JS_TOKEN(ParenClose) \
|
||||
__ENUMERATE_JS_TOKEN(ParenOpen) \
|
||||
__ENUMERATE_JS_TOKEN(Percent) \
|
||||
__ENUMERATE_JS_TOKEN(PercentEquals) \
|
||||
__ENUMERATE_JS_TOKEN(Period) \
|
||||
__ENUMERATE_JS_TOKEN(Pipe) \
|
||||
__ENUMERATE_JS_TOKEN(PipeEquals) \
|
||||
__ENUMERATE_JS_TOKEN(Plus) \
|
||||
__ENUMERATE_JS_TOKEN(PlusEquals) \
|
||||
__ENUMERATE_JS_TOKEN(PlusPlus) \
|
||||
__ENUMERATE_JS_TOKEN(QuestionMark) \
|
||||
__ENUMERATE_JS_TOKEN(QuestionMarkPeriod) \
|
||||
__ENUMERATE_JS_TOKEN(RegexLiteral) \
|
||||
__ENUMERATE_JS_TOKEN(Return) \
|
||||
__ENUMERATE_JS_TOKEN(Semicolon) \
|
||||
__ENUMERATE_JS_TOKEN(ShiftLeft) \
|
||||
__ENUMERATE_JS_TOKEN(ShiftLeftEquals) \
|
||||
__ENUMERATE_JS_TOKEN(ShiftRight) \
|
||||
__ENUMERATE_JS_TOKEN(ShiftRightEquals) \
|
||||
__ENUMERATE_JS_TOKEN(Slash) \
|
||||
__ENUMERATE_JS_TOKEN(SlashEquals) \
|
||||
__ENUMERATE_JS_TOKEN(StringLiteral) \
|
||||
__ENUMERATE_JS_TOKEN(Switch) \
|
||||
__ENUMERATE_JS_TOKEN(Throw) \
|
||||
__ENUMERATE_JS_TOKEN(Tilde) \
|
||||
__ENUMERATE_JS_TOKEN(Try) \
|
||||
__ENUMERATE_JS_TOKEN(Typeof) \
|
||||
__ENUMERATE_JS_TOKEN(UndefinedLiteral) \
|
||||
__ENUMERATE_JS_TOKEN(UnsignedShiftRight) \
|
||||
__ENUMERATE_JS_TOKEN(UnsignedShiftRightEquals) \
|
||||
__ENUMERATE_JS_TOKEN(UnterminatedStringLiteral) \
|
||||
__ENUMERATE_JS_TOKEN(Var) \
|
||||
__ENUMERATE_JS_TOKEN(Void) \
|
||||
__ENUMERATE_JS_TOKEN(While) \
|
||||
__ENUMERATE_JS_TOKEN(Yield)
|
||||
|
||||
enum class TokenType {
|
||||
Ampersand,
|
||||
AmpersandEquals,
|
||||
Asterisk,
|
||||
AsteriskAsteriskEquals,
|
||||
AsteriskEquals,
|
||||
Await,
|
||||
BoolLiteral,
|
||||
BracketClose,
|
||||
BracketOpen,
|
||||
Break,
|
||||
Caret,
|
||||
Case,
|
||||
Catch,
|
||||
Class,
|
||||
Colon,
|
||||
Comma,
|
||||
Const,
|
||||
CurlyClose,
|
||||
CurlyOpen,
|
||||
Default,
|
||||
Delete,
|
||||
Do,
|
||||
DoubleAmpersand,
|
||||
DoubleAsterisk,
|
||||
DoublePipe,
|
||||
DoubleQuestionMark,
|
||||
Else,
|
||||
Eof,
|
||||
Equals,
|
||||
EqualsEquals,
|
||||
EqualsEqualsEquals,
|
||||
ExclamationMark,
|
||||
ExclamationMarkEquals,
|
||||
ExclamationMarkEqualsEquals,
|
||||
Finally,
|
||||
For,
|
||||
Function,
|
||||
GreaterThan,
|
||||
GreaterThanEquals,
|
||||
Identifier,
|
||||
If,
|
||||
In,
|
||||
Instanceof,
|
||||
Interface,
|
||||
Invalid,
|
||||
LessThan,
|
||||
LessThanEquals,
|
||||
Let,
|
||||
Minus,
|
||||
MinusEquals,
|
||||
MinusMinus,
|
||||
New,
|
||||
NullLiteral,
|
||||
NumericLiteral,
|
||||
ParenClose,
|
||||
ParenOpen,
|
||||
Percent,
|
||||
PercentEquals,
|
||||
Period,
|
||||
Pipe,
|
||||
PipeEquals,
|
||||
Plus,
|
||||
PlusEquals,
|
||||
PlusPlus,
|
||||
QuestionMark,
|
||||
QuestionMarkPeriod,
|
||||
RegexLiteral,
|
||||
Return,
|
||||
Semicolon,
|
||||
ShiftLeft,
|
||||
ShiftLeftEquals,
|
||||
ShiftRight,
|
||||
ShiftRightEquals,
|
||||
Slash,
|
||||
SlashEquals,
|
||||
StringLiteral,
|
||||
Switch,
|
||||
Throw,
|
||||
Tilde,
|
||||
Try,
|
||||
Typeof,
|
||||
UndefinedLiteral,
|
||||
UnsignedShiftRight,
|
||||
UnsignedShiftRightEquals,
|
||||
UnterminatedStringLiteral,
|
||||
Var,
|
||||
Void,
|
||||
While,
|
||||
Yield,
|
||||
#define __ENUMERATE_JS_TOKEN(x) x,
|
||||
ENUMERATE_JS_TOKENS
|
||||
#undef __ENUMERATE_JS_TOKEN
|
||||
};
|
||||
|
||||
class Token {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue