esr/lexer/token.rs
1// Lookup table layout:
2// ====================
3//
4// EOF ; : , ( ) [ ] { } => NEW
5// ++ -- ! ~ TYPOF VOID DELET * / % ** +
6// - << >> >>> < <= > >= INSOF IN === !==
7// == != & ^ | && || ? = += -= **=
8// *= /= %= <<= >>= >>>= &= ^= |= ... VAR LET
9// CONST BREAK DO CASE ELSE CATCH EXPRT CLASS EXTND RET WHILE FINLY
10// SUPER WITH CONT FOR SWTCH YIELD DBGGR FUNCT THIS DEFLT IF THROW
11// IMPRT TRY STATI TRUE FALSE NULL UNDEF STR NUM BIN REGEX ENUM
12// IMPL PCKG PROT IFACE PRIV PUBLI IDENT ACCSS TPL_O TPL_C ERR_T ERR_E
13
14#[derive(Debug, PartialEq, Clone, Copy)]
15pub enum Token {
16 EndOfProgram,
17 Semicolon,
18 Colon,
19 Comma,
20 ParenOpen,
21 ParenClose,
22 BracketOpen,
23 BracketClose,
24 BraceOpen,
25 BraceClose,
26 OperatorFatArrow, // … => …
27 OperatorNew, // new …
28 OperatorIncrement, // ++ … | … ++
29 OperatorDecrement, // -- … | … --
30 OperatorLogicalNot, // ! …
31 OperatorBitwiseNot, // ~ …
32 OperatorTypeof, // typeof …
33 OperatorVoid, // void …
34 OperatorDelete, // delete …
35 OperatorMultiplication, // … * …
36 OperatorDivision, // … / …
37 OperatorRemainder, // … % …
38 OperatorExponent, // … ** …
39 OperatorAddition, // … + … | + …
40 OperatorSubtraction, // … - … | - …
41 OperatorBitShiftLeft, // … << …
42 OperatorBitShiftRight, // … >> …
43 OperatorUBitShiftRight, // … >>> …
44 OperatorLesser, // … < …
45 OperatorLesserEquals, // … <= …
46 OperatorGreater, // … > …
47 OperatorGreaterEquals, // … >= …
48 OperatorInstanceof, // … instanceof …
49 OperatorIn, // … in …
50 OperatorStrictEquality, // … === …
51 OperatorStrictInequality, // … !== …
52 OperatorEquality, // … == …
53 OperatorInequality, // … != …
54 OperatorBitwiseAnd, // … & …
55 OperatorBitwiseXor, // … ^ …
56 OperatorBitwiseOr, // … | …
57 OperatorLogicalAnd, // … && …
58 OperatorLogicalOr, // … || …
59 OperatorConditional, // … ? … : …
60 OperatorAssign, // … = …
61 OperatorAddAssign, // … += …
62 OperatorSubtractAssign, // … -= …
63 OperatorExponentAssign, // … **= …
64 OperatorMultiplyAssign, // … *= …
65 OperatorDivideAssign, // … /= …
66 OperatorRemainderAssign, // … %= …
67 OperatorBSLAssign, // … <<= …
68 OperatorBSRAssign, // … >>= …
69 OperatorUBSRAssign, // … >>>= …
70 OperatorBitAndAssign, // … &= …
71 OperatorBitXorAssign, // … ^= …
72 OperatorBitOrAssign, // … |= …
73 OperatorSpread, // ... …
74 DeclarationVar,
75 DeclarationLet,
76 DeclarationConst,
77 Break,
78 Do,
79 Case,
80 Else,
81 Catch,
82 Export,
83 Class,
84 Extends,
85 Return,
86 While,
87 Finally,
88 Super,
89 With,
90 Continue,
91 For,
92 Switch,
93 Yield,
94 Debugger,
95 Function,
96 This,
97 Default,
98 If,
99 Throw,
100 Import,
101 Try,
102 Static,
103 LiteralTrue,
104 LiteralFalse,
105 LiteralNull,
106 LiteralUndefined,
107 LiteralString,
108 LiteralNumber,
109 LiteralBinary,
110 LiteralRegEx,
111 ReservedEnum,
112 ReservedImplements,
113 ReservedPackage,
114 ReservedProtected,
115 ReservedInterface,
116 ReservedPrivate,
117 ReservedPublic,
118 Identifier,
119 Accessor,
120 TemplateOpen,
121 TemplateClosed,
122 UnexpectedToken,
123 UnexpectedEndOfProgram,
124}
125
126impl Token {
127 #[inline]
128 pub fn is_word(&self) -> bool {
129 use self::Token::*;
130
131 match self {
132 Identifier |
133 Break |
134 Do |
135 Case |
136 Else |
137 Catch |
138 Export |
139 Class |
140 Extends |
141 Return |
142 While |
143 Finally |
144 Super |
145 With |
146 Continue |
147 For |
148 Switch |
149 Yield |
150 Debugger |
151 Function |
152 This |
153 Default |
154 If |
155 Throw |
156 Import |
157 Try |
158 Static |
159 OperatorNew |
160 OperatorTypeof |
161 OperatorVoid |
162 OperatorDelete |
163 OperatorInstanceof |
164 LiteralTrue |
165 LiteralFalse |
166 LiteralNull |
167 LiteralUndefined => true,
168
169 _ => false,
170 }
171 }
172}