• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /**
2  * Copyright (c) 2021-2022 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  * http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #ifndef ES2PANDA_PARSER_INCLUDE_TOKEN_TYPE_H
17 #define ES2PANDA_PARSER_INCLUDE_TOKEN_TYPE_H
18 
19 namespace panda::es2panda::lexer {
20 enum class TokenType {
21     EOS,
22 
23     LITERAL_IDENT,
24     LITERAL_STRING,
25     LITERAL_CHAR,
26     LITERAL_NUMBER,
27     LITERAL_REGEXP,
28     LITERAL_TRUE,
29     LITERAL_FALSE,
30     LITERAL_NULL,
31 
32     // Keep this order
33     PUNCTUATOR_NULLISH_COALESCING,
34     PUNCTUATOR_LOGICAL_OR,
35     PUNCTUATOR_LOGICAL_AND,
36     PUNCTUATOR_BITWISE_OR,
37     PUNCTUATOR_BITWISE_XOR,
38     PUNCTUATOR_BITWISE_AND,
39     PUNCTUATOR_EQUAL,
40     PUNCTUATOR_NOT_EQUAL,
41     PUNCTUATOR_STRICT_EQUAL,
42     PUNCTUATOR_NOT_STRICT_EQUAL,
43     PUNCTUATOR_LESS_THAN,
44     PUNCTUATOR_LESS_THAN_EQUAL,
45     PUNCTUATOR_GREATER_THAN,
46     PUNCTUATOR_GREATER_THAN_EQUAL,
47     PUNCTUATOR_LEFT_SHIFT,
48     PUNCTUATOR_RIGHT_SHIFT,
49     PUNCTUATOR_UNSIGNED_RIGHT_SHIFT,
50     PUNCTUATOR_PLUS,
51     PUNCTUATOR_MINUS,
52     PUNCTUATOR_MULTIPLY,
53     PUNCTUATOR_DIVIDE,
54     PUNCTUATOR_MOD,
55     KEYW_IN,
56     KEYW_INSTANCEOF,
57     PUNCTUATOR_EXPONENTIATION,
58 
59     PUNCTUATOR_LEFT_PARENTHESIS,
60     PUNCTUATOR_RIGHT_PARENTHESIS,
61     PUNCTUATOR_LEFT_BRACE,
62     PUNCTUATOR_RIGHT_BRACE,
63     PUNCTUATOR_PERIOD,
64     PUNCTUATOR_PERIOD_PERIOD_PERIOD,
65     PUNCTUATOR_PERIOD_QUESTION,
66     PUNCTUATOR_COMMA,
67     PUNCTUATOR_COLON,
68     PUNCTUATOR_SEMI_COLON,
69     PUNCTUATOR_LEFT_SQUARE_BRACKET,
70     PUNCTUATOR_RIGHT_SQUARE_BRACKET,
71     PUNCTUATOR_QUESTION_MARK,
72     PUNCTUATOR_QUESTION_DOT,
73     PUNCTUATOR_TILDE,
74     PUNCTUATOR_EXCLAMATION_MARK,
75     PUNCTUATOR_PLUS_PLUS,
76     PUNCTUATOR_MINUS_MINUS,
77     PUNCTUATOR_SUBSTITUTION,
78     PUNCTUATOR_UNSIGNED_RIGHT_SHIFT_EQUAL,
79     PUNCTUATOR_RIGHT_SHIFT_EQUAL,
80     PUNCTUATOR_LEFT_SHIFT_EQUAL,
81     PUNCTUATOR_PLUS_EQUAL,
82     PUNCTUATOR_MINUS_EQUAL,
83     PUNCTUATOR_MULTIPLY_EQUAL,
84     PUNCTUATOR_DIVIDE_EQUAL,
85     PUNCTUATOR_MOD_EQUAL,
86     PUNCTUATOR_BITWISE_AND_EQUAL,
87     PUNCTUATOR_BITWISE_OR_EQUAL,
88     PUNCTUATOR_BITWISE_XOR_EQUAL,
89     PUNCTUATOR_LOGICAL_AND_EQUAL,
90     PUNCTUATOR_LOGICAL_OR_EQUAL,
91     PUNCTUATOR_LOGICAL_NULLISH_EQUAL,
92     PUNCTUATOR_EXPONENTIATION_EQUAL,
93     PUNCTUATOR_ARROW,
94     PUNCTUATOR_BACK_TICK,
95     PUNCTUATOR_HASH_MARK,
96     PUNCTUATOR_AT,
97     PUNCTUATOR_FORMAT,
98     PUNCTUATOR_DOLLAR_DOLLAR,
99 
100     /* contextual keywords */
101     KEYW_GET,
102     KEYW_SET,
103     KEYW_OF,
104     KEYW_FROM,
105     KEYW_AS,
106     KEYW_META,
107     KEYW_REQUIRE,
108     KEYW_ABSTRACT,
109     KEYW_TARGET,
110     KEYW_OUT,
111 
112     /* reserved keywords */
113     FIRST_KEYW,
114     KEYW_ANY = FIRST_KEYW,
115     KEYW_AWAIT,
116     KEYW_BIGINT,
117     KEYW_BOOLEAN,
118     KEYW_BYTE,
119     KEYW_BREAK,
120     KEYW_CASE,
121     KEYW_CATCH,
122     KEYW_CHAR,
123     KEYW_CLASS,
124     KEYW_CONST,
125     KEYW_CONSTRUCTOR,
126     KEYW_CONTINUE,
127     KEYW_DEBUGGER,
128     KEYW_DEFAULT,
129     KEYW_DELETE,
130     KEYW_DO,
131     KEYW_DOUBLE,
132     KEYW_ELSE,
133     KEYW_ENUM,
134     KEYW_EXPORT,
135     KEYW_EXTENDS,
136     KEYW_FINALLY,
137     KEYW_FLOAT,
138     KEYW_FOR,
139     KEYW_FUNCTION,
140     KEYW_IF,
141     KEYW_IMPORT,
142     KEYW_INT,
143     KEYW_LAUNCH,
144     KEYW_LONG,
145     KEYW_NATIVE,
146     KEYW_NEVER,
147     KEYW_NEW,
148     KEYW_NUMBER,
149     KEYW_OBJECT,
150     KEYW_FINAL,
151     KEYW_OVERRIDE,
152     KEYW_REGEXP,
153     KEYW_RETHROWS,
154     KEYW_RETURN,
155     KEYW_SHORT,
156     KEYW_STRING,
157     KEYW_STRUCT,
158     KEYW_SUPER,
159     KEYW_SWITCH,
160     KEYW_THIS,
161     KEYW_THROW,
162     KEYW_THROWS,
163     KEYW_TYPE,
164     KEYW_TRY,
165     KEYW_TYPEOF,
166     KEYW_UNDEFINED,
167     KEYW_UNKNOWN,
168     KEYW_VAR,
169     KEYW_VOID,
170     KEYW_WHILE,
171     KEYW_WITH,
172     KEYW_I8,
173     KEYW_I16,
174     KEYW_I32,
175     KEYW_I64,
176     KEYW_ISIZE,
177     KEYW_U8,
178     KEYW_U16,
179     KEYW_U32,
180     KEYW_U64,
181     KEYW_USIZE,
182     KEYW_F32,
183     KEYW_F64,
184     KEYW_V128,
185     KEYW_FUNCREF,
186     KEYW_EXTERNREF,
187     KEYW_ANYREF,
188     KEYW_EQREF,
189     KEYW_I31REF,
190     KEYW_DATAREF,
191 
192     KEYW_ASYNC,
193     KEYW_READONLY,
194     KEYW_KEYOF,
195     KEYW_MODULE,
196     KEYW_NAMESPACE,
197     KEYW_INFER,
198     KEYW_DECLARE,
199     KEYW_ARGUMENTS,
200     KEYW_EVAL,
201     KEYW_STATIC,
202     KEYW_GLOBAL,
203     KEYW_IS,
204     KEYW_ASSERTS,
205     KEYW_ASSERT,
206     KEYW_TRAP,
207 
208     /* strict mode future reserved keywords */
209     KEYW_PRIVATE,
210     KEYW_PROTECTED,
211     KEYW_PUBLIC,
212     KEYW_INTERNAL,
213     KEYW_IMPLEMENTS,
214     KEYW_INTERFACE,
215     KEYW_PACKAGE,
216 
217     /* context dependent future */
218     KEYW_LET,
219     KEYW_YIELD,
220 };
221 
222 const char *TokenToString(TokenType type);
223 }  // namespace panda::es2panda::lexer
224 
225 #endif
226