1#[macro_export]
2macro_rules! T {
3 ("eval") => {
4 $crate::token::TokenKind::Eval
5 };
6 ("die") => {
7 $crate::token::TokenKind::Die
8 };
9 ("self") => {
10 $crate::token::TokenKind::Self_
11 };
12 ("parent") => {
13 $crate::token::TokenKind::Parent
14 };
15 ("`") => {
16 $crate::token::TokenKind::Backtick
17 };
18 ("<<<") => {
19 $crate::token::TokenKind::DocumentStart(_)
20 };
21 (">>>") => {
22 $crate::token::TokenKind::DocumentEnd
23 };
24 ("from") => {
25 $crate::token::TokenKind::From
26 };
27 ("print") => {
28 $crate::token::TokenKind::Print
29 };
30 ("$") => {
31 $crate::token::TokenKind::Dollar
32 };
33 ("__halt_compiler") => {
34 $crate::token::TokenKind::HaltCompiler
35 };
36 ("readonly") => {
37 $crate::token::TokenKind::Readonly
38 };
39 ("global") => {
40 $crate::token::TokenKind::Global
41 };
42 ("abstract") => {
43 $crate::token::TokenKind::Abstract
44 };
45 ("&") => {
46 $crate::token::TokenKind::Ampersand
47 };
48 ("&=") => {
49 $crate::token::TokenKind::AmpersandEqual
50 };
51 ("&&") => {
52 $crate::token::TokenKind::AmpersandAmpersand
53 };
54 ("&&=") => {
55 $crate::token::TokenKind::AmpersandAmpersandEqual
56 };
57 ("array") => {
58 $crate::token::TokenKind::Array
59 };
60 ("(array)") => {
61 $crate::token::TokenKind::ArrayCast
62 };
63 ("->") => {
64 $crate::token::TokenKind::MinusGreaterThan
65 };
66 ("?->") => {
67 $crate::token::TokenKind::QuestionMinusGreaterThan
68 };
69 ("@") => {
70 $crate::token::TokenKind::At
71 };
72 ("as") => {
73 $crate::token::TokenKind::As
74 };
75 ("*") => {
76 $crate::token::TokenKind::Asterisk
77 };
78 ("#[") => {
79 $crate::token::TokenKind::HashLeftBracket
80 };
81 ("!") => {
82 $crate::token::TokenKind::Bang
83 };
84 ("!=") => {
85 $crate::token::TokenKind::BangEqual
86 };
87 ("<>") => {
88 $crate::token::TokenKind::LessThanGreaterThan
89 };
90 ("!==") => {
91 $crate::token::TokenKind::BangEqualEqual
92 };
93 ("<=>") => {
94 $crate::token::TokenKind::LessThanEqualGreaterThan
95 };
96 ("(bool)") => {
97 $crate::token::TokenKind::BoolCast
98 };
99 ("(boolean)") => {
100 $crate::token::TokenKind::BooleanCast
101 };
102 ("and") => {
103 $crate::token::TokenKind::And
104 };
105 ("or") => {
106 $crate::token::TokenKind::Or
107 };
108 ("break") => {
109 $crate::token::TokenKind::Break
110 };
111 ("callable") => {
112 $crate::token::TokenKind::Callable
113 };
114 ("^") => {
115 $crate::token::TokenKind::Caret
116 };
117 ("^=") => {
118 $crate::token::TokenKind::CaretEqual
119 };
120 ("case") => {
121 $crate::token::TokenKind::Case
122 };
123 ("catch") => {
124 $crate::token::TokenKind::Catch
125 };
126 ("class") => {
127 $crate::token::TokenKind::Class
128 };
129 ("__CLASS__") => {
130 $crate::token::TokenKind::ClassConstant
131 };
132 ("__TRAIT__") => {
133 $crate::token::TokenKind::TraitConstant
134 };
135 ("__FUNCTION__") => {
136 $crate::token::TokenKind::FunctionConstant
137 };
138 ("__METHOD__") => {
139 $crate::token::TokenKind::MethodConstant
140 };
141 ("__LINE__") => {
142 $crate::token::TokenKind::LineConstant
143 };
144 ("__FILE__") => {
145 $crate::token::TokenKind::FileConstant
146 };
147 ("clone") => {
148 $crate::token::TokenKind::Clone
149 };
150 ("-=") => {
151 $crate::token::TokenKind::MinusEqual
152 };
153 ("?>") => {
154 $crate::token::TokenKind::CloseTag
155 };
156 ("??") => {
157 $crate::token::TokenKind::QuestionQuestion
158 };
159 ("??=") => {
160 $crate::token::TokenKind::QuestionQuestionEqual
161 };
162 ("*=") => {
163 $crate::token::TokenKind::AsteriskEqual
164 };
165 (":") => {
166 $crate::token::TokenKind::Colon
167 };
168 (",") => {
169 $crate::token::TokenKind::Comma
170 };
171 ("// comment") => {
172 $crate::token::TokenKind::SingleLineComment
173 };
174 ("# comment") => {
175 $crate::token::TokenKind::HashComment
176 };
177 ("/* comment */") => {
178 $crate::token::TokenKind::MultiLineComment
179 };
180 ("/** comment */") => {
181 $crate::token::TokenKind::DocBlockComment
182 };
183 ("const") => {
184 $crate::token::TokenKind::Const
185 };
186 ("continue") => {
187 $crate::token::TokenKind::Continue
188 };
189 ("declare") => {
190 $crate::token::TokenKind::Declare
191 };
192 ("--") => {
193 $crate::token::TokenKind::MinusMinus
194 };
195 ("default") => {
196 $crate::token::TokenKind::Default
197 };
198 ("__DIR__") => {
199 $crate::token::TokenKind::DirConstant
200 };
201 ("/=") => {
202 $crate::token::TokenKind::SlashEqual
203 };
204 ("do") => {
205 $crate::token::TokenKind::Do
206 };
207 ("${") => {
208 $crate::token::TokenKind::DollarLeftBrace
209 };
210 (".") => {
211 $crate::token::TokenKind::Dot
212 };
213 (".=") => {
214 $crate::token::TokenKind::DotEqual
215 };
216 ("=>") => {
217 $crate::token::TokenKind::EqualGreaterThan
218 };
219 ("(double)") => {
220 $crate::token::TokenKind::DoubleCast
221 };
222 ("(real)") => {
223 $crate::token::TokenKind::RealCast
224 };
225 ("(float)") => {
226 $crate::token::TokenKind::FloatCast
227 };
228 ("::") => {
229 $crate::token::TokenKind::ColonColon
230 };
231 ("==") => {
232 $crate::token::TokenKind::EqualEqual
233 };
234 ("\"") => {
235 $crate::token::TokenKind::DoubleQuote
236 };
237 ("else") => {
238 $crate::token::TokenKind::Else
239 };
240 ("echo") => {
241 $crate::token::TokenKind::Echo
242 };
243 ("...") => {
244 $crate::token::TokenKind::DotDotDot
245 };
246 ("elseif") => {
247 $crate::token::TokenKind::ElseIf
248 };
249 ("empty") => {
250 $crate::token::TokenKind::Empty
251 };
252 ("enddeclare") => {
253 $crate::token::TokenKind::EndDeclare
254 };
255 ("endfor") => {
256 $crate::token::TokenKind::EndFor
257 };
258 ("endforeach") => {
259 $crate::token::TokenKind::EndForeach
260 };
261 ("endif") => {
262 $crate::token::TokenKind::EndIf
263 };
264 ("endswitch") => {
265 $crate::token::TokenKind::EndSwitch
266 };
267 ("endwhile") => {
268 $crate::token::TokenKind::EndWhile
269 };
270 ("enum") => {
271 $crate::token::TokenKind::Enum
272 };
273 ("=") => {
274 $crate::token::TokenKind::Equal
275 };
276 ("extends") => {
277 $crate::token::TokenKind::Extends
278 };
279 ("false") => {
280 $crate::token::TokenKind::False
281 };
282 ("final") => {
283 $crate::token::TokenKind::Final
284 };
285 ("finally") => {
286 $crate::token::TokenKind::Finally
287 };
288 ("fn") => {
289 $crate::token::TokenKind::Fn
290 };
291 ("for") => {
292 $crate::token::TokenKind::For
293 };
294 ("foreach") => {
295 $crate::token::TokenKind::Foreach
296 };
297 ("\\Fully\\Qualified\\Identifier") => {
298 $crate::token::TokenKind::FullyQualifiedIdentifier
299 };
300 ("function") => {
301 $crate::token::TokenKind::Function
302 };
303 ("goto") => {
304 $crate::token::TokenKind::Goto
305 };
306 (">") => {
307 $crate::token::TokenKind::GreaterThan
308 };
309 (">=") => {
310 $crate::token::TokenKind::GreaterThanEqual
311 };
312 ("Identifier") => {
313 $crate::token::TokenKind::Identifier
314 };
315 ("if") => {
316 $crate::token::TokenKind::If
317 };
318 ("implements") => {
319 $crate::token::TokenKind::Implements
320 };
321 ("include") => {
322 $crate::token::TokenKind::Include
323 };
324 ("include_once") => {
325 $crate::token::TokenKind::IncludeOnce
326 };
327 ("++") => {
328 $crate::token::TokenKind::PlusPlus
329 };
330 ("instanceof") => {
331 $crate::token::TokenKind::Instanceof
332 };
333 ("insteadof") => {
334 $crate::token::TokenKind::Insteadof
335 };
336 ("exit") => {
337 $crate::token::TokenKind::Exit
338 };
339 ("unset") => {
340 $crate::token::TokenKind::Unset
341 };
342 ("isset") => {
343 $crate::token::TokenKind::Isset
344 };
345 ("list") => {
346 $crate::token::TokenKind::List
347 };
348 ("(int)") => {
349 $crate::token::TokenKind::IntCast
350 };
351 ("(integer)") => {
352 $crate::token::TokenKind::IntegerCast
353 };
354 ("interface") => {
355 $crate::token::TokenKind::Interface
356 };
357 ("{") => {
358 $crate::token::TokenKind::LeftBrace
359 };
360 ("[") => {
361 $crate::token::TokenKind::LeftBracket
362 };
363 ("(") => {
364 $crate::token::TokenKind::LeftParenthesis
365 };
366 (")") => {
367 $crate::token::TokenKind::RightParenthesis
368 };
369 ("<<") => {
370 $crate::token::TokenKind::LeftShift
371 };
372 ("<<=") => {
373 $crate::token::TokenKind::LeftShiftEqual
374 };
375 (">>") => {
376 $crate::token::TokenKind::RightShift
377 };
378 (">>=") => {
379 $crate::token::TokenKind::RightShiftEqual
380 };
381 ("<") => {
382 $crate::token::TokenKind::LessThan
383 };
384 ("<=") => {
385 $crate::token::TokenKind::LessThanEqual
386 };
387 ("match") => {
388 $crate::token::TokenKind::Match
389 };
390 ("-") => {
391 $crate::token::TokenKind::Minus
392 };
393 ("namespace") => {
394 $crate::token::TokenKind::Namespace
395 };
396 ("\\") => {
397 $crate::token::TokenKind::NamespaceSeparator
398 };
399 ("__NAMESPACE__") => {
400 $crate::token::TokenKind::NamespaceConstant
401 };
402 ("new") => {
403 $crate::token::TokenKind::New
404 };
405 ("null") => {
406 $crate::token::TokenKind::Null
407 };
408 ("(object)") => {
409 $crate::token::TokenKind::ObjectCast
410 };
411 ("(unset)") => {
412 $crate::token::TokenKind::UnsetCast
413 };
414 ("(void)") => {
415 $crate::token::TokenKind::VoidCast
416 };
417 ("<?php") => {
418 $crate::token::TokenKind::OpenTag
419 };
420 ("<?=") => {
421 $crate::token::TokenKind::EchoTag
422 };
423 ("<?") => {
424 $crate::token::TokenKind::ShortOpenTag
425 };
426 ("%") => {
427 $crate::token::TokenKind::Percent
428 };
429 ("%=") => {
430 $crate::token::TokenKind::PercentEqual
431 };
432 ("|") => {
433 $crate::token::TokenKind::Pipe
434 };
435 ("|=") => {
436 $crate::token::TokenKind::PipeEqual
437 };
438 ("+") => {
439 $crate::token::TokenKind::Plus
440 };
441 ("+=") => {
442 $crate::token::TokenKind::PlusEqual
443 };
444 ("**") => {
445 $crate::token::TokenKind::AsteriskAsterisk
446 };
447 ("**=") => {
448 $crate::token::TokenKind::AsteriskAsteriskEqual
449 };
450 ("private(set)") => {
451 $crate::token::TokenKind::PrivateSet
452 };
453 ("private") => {
454 $crate::token::TokenKind::Private
455 };
456 ("protected") => {
457 $crate::token::TokenKind::Protected
458 };
459 ("protected(set)") => {
460 $crate::token::TokenKind::ProtectedSet
461 };
462 ("public") => {
463 $crate::token::TokenKind::Public
464 };
465 ("public(set)") => {
466 $crate::token::TokenKind::PublicSet
467 };
468 ("Qualified\\Identifier") => {
469 $crate::token::TokenKind::QualifiedIdentifier
470 };
471 ("?") => {
472 $crate::token::TokenKind::Question
473 };
474 ("?:") => {
475 $crate::token::TokenKind::QuestionColon
476 };
477 ("require") => {
478 $crate::token::TokenKind::Require
479 };
480 ("require_once") => {
481 $crate::token::TokenKind::RequireOnce
482 };
483 ("return") => {
484 $crate::token::TokenKind::Return
485 };
486 ("}") => {
487 $crate::token::TokenKind::RightBrace
488 };
489 ("]") => {
490 $crate::token::TokenKind::RightBracket
491 };
492 (";") => {
493 $crate::token::TokenKind::Semicolon
494 };
495 ("/") => {
496 $crate::token::TokenKind::Slash
497 };
498 ("static") => {
499 $crate::token::TokenKind::Static
500 };
501 ("(string)") => {
502 $crate::token::TokenKind::StringCast
503 };
504 ("(binary)") => {
505 $crate::token::TokenKind::BinaryCast
506 };
507 ("switch") => {
508 $crate::token::TokenKind::Switch
509 };
510 ("throw") => {
511 $crate::token::TokenKind::Throw
512 };
513 ("trait") => {
514 $crate::token::TokenKind::Trait
515 };
516 ("===") => {
517 $crate::token::TokenKind::EqualEqualEqual
518 };
519 ("true") => {
520 $crate::token::TokenKind::True
521 };
522 ("try") => {
523 $crate::token::TokenKind::Try
524 };
525 ("use") => {
526 $crate::token::TokenKind::Use
527 };
528 ("var") => {
529 $crate::token::TokenKind::Var
530 };
531 ("$variable") => {
532 $crate::token::TokenKind::Variable
533 };
534 ("yield") => {
535 $crate::token::TokenKind::Yield
536 };
537 ("while") => {
538 $crate::token::TokenKind::While
539 };
540 ("~") => {
541 $crate::token::TokenKind::Tilde
542 };
543 ("||") => {
544 $crate::token::TokenKind::PipePipe
545 };
546 ("xor") => {
547 $crate::token::TokenKind::Xor
548 };
549 ("|>") => {
550 $crate::token::TokenKind::PipeGreaterThan
551 };
552 ($name:ident) => {
553 $crate::token::TokenKind::$name
554 };
555 ($first:tt | $($rest:tt)+) => {
556 $crate::T![$first] | $crate::T![$($rest)+]
557 };
558 ($($kind:tt),+ $(,)?) => {
559 &[$($crate::T![$kind]),+]
560 };
561}