1 ///////////////////////////////////////////////////////////////////////////////////////////////
2 // checkstyle: Checks Java source code and other text files for adherence to a set of rules.
3 // Copyright (C) 2001-2026 the original author or authors.
4 //
5 // This library is free software; you can redistribute it and/or
6 // modify it under the terms of the GNU Lesser General Public
7 // License as published by the Free Software Foundation; either
8 // version 2.1 of the License, or (at your option) any later version.
9 //
10 // This library is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 // Lesser General Public License for more details.
14 //
15 // You should have received a copy of the GNU Lesser General Public
16 // License along with this library; if not, write to the Free Software
17 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 ///////////////////////////////////////////////////////////////////////////////////////////////
19
20 package com.puppycrawl.tools.checkstyle.api;
21
22 import com.puppycrawl.tools.checkstyle.grammar.java.JavaLanguageLexer;
23
24 /**
25 * Contains the constants for all the tokens contained in the Abstract
26 * Syntax Tree.
27 *
28 * <p>Implementation detail: This class has been introduced to break
29 * the circular dependency between packages.</p>
30 *
31 * @noinspection ClassWithTooManyDependents
32 * @noinspectionreason ClassWithTooManyDependents - this class is a core part of our API
33 */
34 public final class TokenTypes {
35
36 /**
37 * This is the root node for the source file. It's children
38 * are an optional package definition, zero or more import statements,
39 * and zero or more type declarations.
40 *
41 * <p>For example:</p>
42 * {@snippet :
43 * import java.util.List;
44 *
45 * class MyClass{}
46 * interface MyInterface{}
47 * ;
48 * }
49 *
50 * <p>parses as:</p>
51 *
52 * {@snippet :
53 * COMPILATION_UNIT -> COMPILATION_UNIT
54 * |--IMPORT -> import
55 * | |--DOT -> .
56 * | | |--DOT -> .
57 * | | | |--IDENT -> java
58 * | | | `--IDENT -> util
59 * | | `--IDENT -> List
60 * | `--SEMI -> ;
61 * |--CLASS_DEF -> CLASS_DEF
62 * | |--MODIFIERS -> MODIFIERS
63 * | |--LITERAL_CLASS -> class
64 * | |--IDENT -> MyClass
65 * | `--OBJBLOCK -> OBJBLOCK
66 * | |--LCURLY -> {
67 * | `--RCURLY -> }
68 * |--INTERFACE_DEF -> INTERFACE_DEF
69 * | |--MODIFIERS -> MODIFIERS
70 * | |--LITERAL_INTERFACE -> interface
71 * | |--IDENT -> MyInterface
72 * | `--OBJBLOCK -> OBJBLOCK
73 * | |--LCURLY -> {
74 * | `--RCURLY -> }
75 * `--SEMI -> ;
76 * }
77 *
78 * @see #PACKAGE_DEF
79 * @see #IMPORT
80 * @see #CLASS_DEF
81 * @see #INTERFACE_DEF
82 * @see #RECORD_DEF
83 * @see #ANNOTATION_DEF
84 * @see #ENUM_DEF
85 */
86 public static final int COMPILATION_UNIT = JavaLanguageLexer.COMPILATION_UNIT;
87
88 /**
89 * The root of an AST for a JEP 512 (JDK 25) compact source file. This node
90 * replaces {@link #COMPILATION_UNIT} as the root when the source file declares
91 * any top-level method or field. It represents a {@code CompactCompilationUnit},
92 * which is one of the three mutually exclusive compilation-unit
93 * forms ({@code OrdinaryCompilationUnit}, {@code CompactCompilationUnit},
94 * {@code ModularCompilationUnit}). Import declarations and top-level members
95 * appear as direct children of this node. Compact source files cannot declare
96 * a package.
97 *
98 * <p>For example:</p>
99 * {@snippet :
100 * import java.util.List;
101 *
102 * int counter = 3;
103 * void main() {}
104 * }
105 *
106 * <p>parses as:</p>
107 * {@snippet :
108 * COMPACT_COMPILATION_UNIT -> COMPACT_COMPILATION_UNIT
109 * |--IMPORT -> import
110 * | |--DOT -> .
111 * | | |--DOT -> .
112 * | | | |--IDENT -> java
113 * | | | `--IDENT -> util
114 * | | `--IDENT -> List
115 * | `--SEMI -> ;
116 * |--VARIABLE_DEF -> VARIABLE_DEF
117 * | |--MODIFIERS -> MODIFIERS
118 * | |--TYPE -> TYPE
119 * | | `--LITERAL_INT -> int
120 * | |--IDENT -> counter
121 * | |--ASSIGN -> =
122 * | | `--EXPR -> EXPR
123 * | | `--NUM_INT -> 3
124 * | `--SEMI -> ;
125 * `--METHOD_DEF -> METHOD_DEF
126 * |--MODIFIERS -> MODIFIERS
127 * |--TYPE -> TYPE
128 * | `--LITERAL_VOID -> void
129 * |--IDENT -> main
130 * |--LPAREN -> (
131 * |--PARAMETERS -> PARAMETERS
132 * |--RPAREN -> )
133 * `--SLIST -> {
134 * `--RCURLY -> }
135 * }
136 *
137 * @see <a href="https://openjdk.org/jeps/512">JEP 512: Compact Source Files
138 * and Instance Main Methods</a>
139 * @see #COMPILATION_UNIT
140 */
141 public static final int COMPACT_COMPILATION_UNIT =
142 JavaLanguageLexer.COMPACT_COMPILATION_UNIT;
143
144 /**
145 * Modifiers for type, method, and field declarations. The
146 * modifiers element is always present even though it may have no
147 * children.
148 *
149 * <p>For example:</p>
150 * {@snippet :
151 * public int x;
152 * }
153 *
154 * <p>parses as:</p>
155 * {@snippet :
156 * VARIABLE_DEF -> VARIABLE_DEF
157 * |--MODIFIERS -> MODIFIERS
158 * | `--LITERAL_PUBLIC -> public
159 * |--TYPE -> TYPE
160 * | `--LITERAL_INT -> int
161 * |--IDENT -> x
162 * `--SEMI -> ;
163 * }
164 *
165 * @see <a
166 * href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-8.html">Java
167 * Language Specification, §8</a>
168 * @see #LITERAL_PUBLIC
169 * @see #LITERAL_PROTECTED
170 * @see #LITERAL_PRIVATE
171 * @see #ABSTRACT
172 * @see #LITERAL_STATIC
173 * @see #FINAL
174 * @see #LITERAL_TRANSIENT
175 * @see #LITERAL_VOLATILE
176 * @see #LITERAL_SYNCHRONIZED
177 * @see #LITERAL_NATIVE
178 * @see #STRICTFP
179 * @see #ANNOTATION
180 * @see #LITERAL_DEFAULT
181 */
182 public static final int MODIFIERS = JavaLanguageLexer.MODIFIERS;
183
184 /**
185 * An object block. These are children of class, interface, enum,
186 * annotation and enum constant declarations.
187 * Also, object blocks are children of the new keyword when defining
188 * anonymous inner types.
189 *
190 * <p>For example:</p>
191 * {@snippet :
192 * class Test {}
193 * }
194 *
195 * <p>parses as:</p>
196 * {@snippet :
197 * CLASS_DEF -> CLASS_DEF
198 * |--MODIFIERS -> MODIFIERS
199 * |--LITERAL_CLASS -> class
200 * |--IDENT -> Test
201 * `--OBJBLOCK -> OBJBLOCK
202 * |--LCURLY -> {
203 * `--RCURLY -> }
204 * }
205 *
206 * @see #LCURLY
207 * @see #INSTANCE_INIT
208 * @see #STATIC_INIT
209 * @see #CLASS_DEF
210 * @see #CTOR_DEF
211 * @see #METHOD_DEF
212 * @see #VARIABLE_DEF
213 * @see #RCURLY
214 * @see #INTERFACE_DEF
215 * @see #LITERAL_NEW
216 * @see #ENUM_DEF
217 * @see #ENUM_CONSTANT_DEF
218 * @see #ANNOTATION_DEF
219 */
220 public static final int OBJBLOCK = JavaLanguageLexer.OBJBLOCK;
221 /**
222 * A list of statements.
223 *
224 * <p>For example:</p>
225 * {@snippet :
226 * if (c == 1) {
227 * c = 0;
228 * }
229 * }
230 *
231 * <p>parses as:</p>
232 * {@snippet :
233 * LITERAL_IF -> if
234 * |--LPAREN -> (
235 * |--EXPR -> EXPR
236 * | `--EQUAL -> ==
237 * | |--IDENT -> c
238 * | `--NUM_INT -> 1
239 * |--RPAREN -> )
240 * `--SLIST -> {
241 * |--EXPR -> EXPR
242 * | `--ASSIGN -> =
243 * | |--IDENT -> c
244 * | `--NUM_INT -> 0
245 * |--SEMI -> ;
246 * `--RCURLY -> }
247 * }
248 *
249 * @see #RCURLY
250 * @see #EXPR
251 * @see #LABELED_STAT
252 * @see #LITERAL_THROWS
253 * @see #LITERAL_RETURN
254 * @see #SEMI
255 * @see #METHOD_DEF
256 * @see #CTOR_DEF
257 * @see #LITERAL_FOR
258 * @see #LITERAL_WHILE
259 * @see #LITERAL_IF
260 * @see #LITERAL_ELSE
261 * @see #CASE_GROUP
262 */
263 public static final int SLIST = JavaLanguageLexer.SLIST;
264 /**
265 * A constructor declaration.
266 *
267 * <p>For example:</p>
268 * {@snippet :
269 * public SpecialEntry(int value, String text)
270 * {
271 * this.value = value;
272 * this.text = text;
273 * }
274 * }
275 *
276 * <p>parses as:</p>
277 * {@snippet :
278 * CTOR_DEF -> CTOR_DEF
279 * |--MODIFIERS -> MODIFIERS
280 * | `--LITERAL_PUBLIC -> public
281 * |--IDENT -> SpecialEntry
282 * |--LPAREN -> (
283 * |--PARAMETERS -> PARAMETERS
284 * | |--PARAMETER_DEF -> PARAMETER_DEF
285 * | | |--MODIFIERS -> MODIFIERS
286 * | | |--TYPE -> TYPE
287 * | | | `--LITERAL_INT -> int
288 * | | `--IDENT -> value
289 * | |--COMMA -> ,
290 * | `--PARAMETER_DEF -> PARAMETER_DEF
291 * | |--MODIFIERS -> MODIFIERS
292 * | |--TYPE -> TYPE
293 * | | `--IDENT -> String
294 * | `--IDENT -> text
295 * |--RPAREN -> )
296 * `--SLIST -> {
297 * |--EXPR -> EXPR
298 * | `--ASSIGN -> =
299 * | |--DOT -> .
300 * | |--LITERAL_THIS -> this
301 * | | `--IDENT -> value
302 * | `--IDENT -> value
303 * |--SEMI -> ;
304 * |--EXPR -> EXPR
305 * | `--ASSIGN -> =
306 * | |--DOT -> .
307 * | | |--LITERAL_THIS -> this
308 * | | `--IDENT -> text
309 * | `--IDENT -> text
310 * |--SEMI -> ;
311 * `--RCURLY -> }
312 * }
313 *
314 * @see #OBJBLOCK
315 * @see #CLASS_DEF
316 */
317 public static final int CTOR_DEF = JavaLanguageLexer.CTOR_DEF;
318 /**
319 * A method declaration. The children are modifiers, type parameters,
320 * return type, method name, parameter list, an optional throws list, and
321 * statement list. The statement list is omitted if the method
322 * declaration appears in an interface declaration. Method
323 * declarations may appear inside object blocks of class
324 * declarations, interface declarations, enum declarations,
325 * enum constant declarations or anonymous inner-class declarations.
326 *
327 * <p>For example:</p>
328 *
329 * {@snippet :
330 * public static int square(int x)
331 * {
332 * return x*x;
333 * }
334 * }
335 *
336 * <p>parses as:</p>
337 *
338 * {@snippet :
339 * --METHOD_DEF -> METHOD_DEF
340 * |--MODIFIERS -> MODIFIERS
341 * | |--LITERAL_PUBLIC -> public
342 * | `--LITERAL_STATIC -> static
343 * |--TYPE -> TYPE
344 * | `--LITERAL_INT -> int
345 * |--IDENT -> square
346 * |--LPAREN -> (
347 * |--PARAMETERS -> PARAMETERS
348 * | `--PARAMETER_DEF -> PARAMETER_DEF
349 * | |--MODIFIERS -> MODIFIERS
350 * | |--TYPE -> TYPE
351 * | | `--LITERAL_INT -> int
352 * | `--IDENT -> x
353 * |--RPAREN -> )
354 * `--SLIST -> {
355 * |--LITERAL_RETURN -> return
356 * | |--EXPR -> EXPR
357 * | | `--STAR -> *
358 * | | |--IDENT -> x
359 * | | `--IDENT -> x
360 * | `--SEMI -> ;
361 * `--RCURLY -> }
362 * }
363 *
364 * @see #MODIFIERS
365 * @see #TYPE_PARAMETERS
366 * @see #TYPE
367 * @see #IDENT
368 * @see #PARAMETERS
369 * @see #LITERAL_THROWS
370 * @see #SLIST
371 * @see #OBJBLOCK
372 */
373 public static final int METHOD_DEF = JavaLanguageLexer.METHOD_DEF;
374
375 /**
376 * A field or local variable declaration. The children are
377 * modifiers, type, the identifier name, and an optional
378 * assignment statement.
379 *
380 * <p>For example:</p>
381 * {@snippet :
382 * final double PI = 3.14;
383 * }
384 *
385 * <p>parses as:</p>
386 * {@snippet :
387 * VARIABLE_DEF -> VARIABLE_DEF
388 * |--MODIFIERS -> MODIFIERS
389 * | `--FINAL -> final
390 * |--TYPE -> TYPE
391 * | `--LITERAL_DOUBLE -> double
392 * |--IDENT -> PI
393 * |--ASSIGN -> =
394 * | `--EXPR -> EXPR
395 * | `--NUM_FLOAT -> 3.14
396 * `--SEMI -> ;
397 * }
398 *
399 * @see #MODIFIERS
400 * @see #TYPE
401 * @see #IDENT
402 * @see #ASSIGN
403 */
404 public static final int VARIABLE_DEF =
405 JavaLanguageLexer.VARIABLE_DEF;
406
407 /**
408 * An instance initializer. Zero or more instance initializers
409 * may appear in class and enum definitions. This token will be a child
410 * of the object block of the declaring type.
411 *
412 * <p>For example:</p>
413 * {@snippet :
414 * public class MyClass {
415 * private int foo;
416 * {foo = 10;}
417 * }
418 * }
419 *
420 * <p>parses as:</p>
421 * {@snippet :
422 * CLASS_DEF -> CLASS_DEF
423 * |--MODIFIERS -> MODIFIERS
424 * | `--LITERAL_PUBLIC -> public
425 * |--LITERAL_CLASS -> class
426 * |--IDENT -> MyClass
427 * `--OBJBLOCK -> OBJBLOCK
428 * |--LCURLY -> {
429 * |--VARIABLE_DEF -> VARIABLE_DEF
430 * | |--MODIFIERS -> MODIFIERS
431 * | | `--LITERAL_PRIVATE -> private
432 * | |--TYPE -> TYPE
433 * | | `--LITERAL_INT -> int
434 * | |--IDENT -> foo
435 * | `--SEMI -> ;
436 * |--INSTANCE_INIT -> INSTANCE_INIT
437 * | `--SLIST -> {
438 * | |--EXPR -> EXPR
439 * | | `--ASSIGN -> =
440 * | | |--IDENT -> foo
441 * | | `--NUM_INT -> 10
442 * | |--SEMI -> ;
443 * | `--RCURLY -> }
444 * `--RCURLY -> }
445 * }
446 *
447 * @see <a
448 * href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-8.html#jls-8.6">Java
449 * Language Specification§8.6</a>
450 * @see #SLIST
451 * @see #OBJBLOCK
452 */
453 public static final int INSTANCE_INIT =
454 JavaLanguageLexer.INSTANCE_INIT;
455
456 /**
457 * A static initialization block. Zero or more static
458 * initializers may be children of the object block of a class
459 * or enum declaration (interfaces cannot have static initializers). The
460 * first and only child is a statement list.
461 *
462 * <p>For Example:</p>
463 * {@snippet :
464 * static {
465 * num = 10;
466 * }
467 * }
468 *
469 * <p>parses as:</p>
470 * {@snippet :
471 * STATIC_INIT -> STATIC_INIT
472 * `--SLIST -> {
473 * |--EXPR -> EXPR
474 * | `--ASSIGN -> =
475 * | |--IDENT -> num
476 * | `--NUM_INT -> 10
477 * |--SEMI -> ;
478 * `--RCURLY -> }
479 * }
480 *
481 * @see <a
482 * href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-8.html#jls-8.7">Java
483 * Language Specification, §8.7</a>
484 * @see #SLIST
485 * @see #OBJBLOCK
486 */
487 public static final int STATIC_INIT =
488 JavaLanguageLexer.STATIC_INIT;
489
490 /**
491 * A type. This is either a return type of a method or a type of
492 * a variable or field. The first child of this element is the
493 * actual type. This may be a primitive type, an identifier, a
494 * dot which is the root of a fully qualified type, or an array of
495 * any of these. The second child may be type arguments to the type.
496 *
497 * <p>
498 * For example:
499 * {@code boolean var = true;}
500 * </p>
501 *
502 * <p>parses as:</p>
503 * {@snippet :
504 * |--VARIABLE_DEF -> VARIABLE_DEF
505 * | |--MODIFIERS -> MODIFIERS
506 * | |--TYPE -> TYPE
507 * | | `--LITERAL_BOOLEAN -> boolean
508 * | |--IDENT -> var
509 * | `--ASSIGN -> =
510 * | `--EXPR -> EXPR
511 * | `--LITERAL_TRUE -> true
512 * |--SEMI -> ;
513 * }
514 *
515 * @see #VARIABLE_DEF
516 * @see #METHOD_DEF
517 * @see #PARAMETER_DEF
518 * @see #IDENT
519 * @see #DOT
520 * @see #LITERAL_VOID
521 * @see #LITERAL_BOOLEAN
522 * @see #LITERAL_BYTE
523 * @see #LITERAL_CHAR
524 * @see #LITERAL_SHORT
525 * @see #LITERAL_INT
526 * @see #LITERAL_FLOAT
527 * @see #LITERAL_LONG
528 * @see #LITERAL_DOUBLE
529 * @see #ARRAY_DECLARATOR
530 * @see #TYPE_ARGUMENTS
531 */
532 public static final int TYPE = JavaLanguageLexer.TYPE;
533 /**
534 * A class declaration.
535 *
536 * <p>For example:</p>
537 * {@snippet :
538 * public class Test {
539 * }
540 * }
541 *
542 * <p>parses as:</p>
543 * {@snippet :
544 * CLASS_DEF -> CLASS_DEF
545 * |--MODIFIERS -> MODIFIERS
546 * | `--LITERAL_PUBLIC -> public
547 * |--LITERAL_CLASS -> class
548 * |--IDENT -> Test
549 * `--OBJBLOCK -> OBJBLOCK
550 * |--LCURLY -> {
551 * `--RCURLY -> }
552 * }
553 *
554 * @see <a
555 * href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-8.html">Java
556 * Language Specification, §8</a>
557 * @see #MODIFIERS
558 * @see #IDENT
559 * @see #EXTENDS_CLAUSE
560 * @see #IMPLEMENTS_CLAUSE
561 * @see #OBJBLOCK
562 * @see #LITERAL_NEW
563 */
564 public static final int CLASS_DEF = JavaLanguageLexer.CLASS_DEF;
565 /**
566 * An interface declaration.
567 *
568 * <p>For example:</p>
569 *
570 * {@snippet :
571 * public interface MyInterface {
572 *
573 * }
574 * }
575 *
576 * <p>parses as:</p>
577 *
578 * {@snippet :
579 * INTERFACE_DEF -> INTERFACE_DEF
580 * |--MODIFIERS -> MODIFIERS
581 * | `--LITERAL_PUBLIC -> public
582 * |--LITERAL_INTERFACE -> interface
583 * |--IDENT -> MyInterface
584 * `--OBJBLOCK -> OBJBLOCK
585 * |--LCURLY -> {
586 * `--RCURLY -> }
587 * }
588 *
589 * @see <a
590 * href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-9.html">Java
591 * Language Specification, §9</a>
592 * @see #MODIFIERS
593 * @see #IDENT
594 * @see #EXTENDS_CLAUSE
595 * @see #OBJBLOCK
596 */
597 public static final int INTERFACE_DEF =
598 JavaLanguageLexer.INTERFACE_DEF;
599
600 /**
601 * The package declaration. This is optional, but if it is
602 * included, then there is only one package declaration per source
603 * file and it must be the first non-comment in the file. A package
604 * declaration may be annotated in which case the annotations comes
605 * before the rest of the declaration (and are the first children).
606 *
607 * <p>For example:</p>
608 *
609 * {@snippet :
610 * package com.puppycrawl.tools.checkstyle.api;
611 * }
612 *
613 * <p>parses as:</p>
614 *
615 * {@snippet :
616 * PACKAGE_DEF -> package
617 * |--ANNOTATIONS -> ANNOTATIONS
618 * |--DOT -> .
619 * | |--DOT -> .
620 * | | |--DOT -> .
621 * | | | |--DOT -> .
622 * | | | | |--IDENT -> com
623 * | | | | `--IDENT -> puppycrawl
624 * | | | `--IDENT -> tools
625 * | | `--IDENT -> checkstyle
626 * | `--IDENT -> api
627 * `--SEMI -> ;
628 * }
629 *
630 * @see <a
631 * href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-7.html#jls-7.4">Java
632 * Language Specification §7.4</a>
633 * @see #DOT
634 * @see #IDENT
635 * @see #SEMI
636 * @see #ANNOTATIONS
637 * @see FullIdent
638 */
639 public static final int PACKAGE_DEF = JavaLanguageLexer.PACKAGE_DEF;
640 /**
641 * An array declaration.
642 *
643 * <p>If the array declaration represents a type, then the type of
644 * the array elements is the first child. Multidimensional arrays
645 * may be regarded as arrays of arrays. In other words, the first
646 * child of the array declaration is another array
647 * declaration.</p>
648 *
649 * <p>For example:</p>
650 * {@snippet :
651 * int[] x;
652 * }
653 *
654 * <p>parses as:</p>
655 * {@snippet :
656 * VARIABLE_DEF -> VARIABLE_DEF
657 * |--MODIFIERS -> MODIFIERS
658 * |--TYPE -> TYPE
659 * | |--LITERAL_INT -> int
660 * | `--ARRAY_DECLARATOR -> [
661 * | `--RBRACK -> ]
662 * |--IDENT -> x
663 * `--SEMI -> ;
664 * }
665 *
666 * <p>The array declaration may also represent an inline array
667 * definition. In this case, the first child will be either an
668 * expression specifying the length of the array or an array
669 * initialization block.</p>
670 *
671 * @see <a
672 * href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-10.html">Java
673 * Language Specification §10</a>
674 * @see #TYPE
675 * @see #ARRAY_INIT
676 */
677 public static final int ARRAY_DECLARATOR =
678 JavaLanguageLexer.ARRAY_DECLARATOR;
679
680 /**
681 * An extends clause. This appears as part of class and interface
682 * definitions. This element appears even if the
683 * {@code extends} keyword is not explicitly used. The child
684 * is an optional identifier.
685 *
686 * <p>For example:</p>
687 * {@snippet :
688 * public class Test extends ArrayList {
689 * }
690 * }
691 *
692 * <p>parses as:</p>
693 * {@snippet :
694 * CLASS_DEF -> CLASS_DEF
695 * |--MODIFIERS -> MODIFIERS
696 * | `--LITERAL_PUBLIC -> public
697 * |--LITERAL_CLASS -> class
698 * |--IDENT -> Test
699 * |--EXTENDS_CLAUSE -> extends
700 * | `--IDENT -> ArrayList
701 * `--OBJBLOCK -> OBJBLOCK
702 * |--LCURLY -> {
703 * `--RCURLY -> }
704 * }
705 *
706 * @see #IDENT
707 * @see #DOT
708 * @see #CLASS_DEF
709 * @see #INTERFACE_DEF
710 * @see FullIdent
711 */
712 public static final int EXTENDS_CLAUSE =
713 JavaLanguageLexer.EXTENDS_CLAUSE;
714
715 /**
716 * An implements clause. This always appears in a class or enum
717 * declaration, even if there are no implemented interfaces. The
718 * children are a comma separated list of zero or more
719 * identifiers.
720 *
721 * <p>For example:</p>
722 * {@snippet :
723 * public class MyClass implements Collection {
724 *
725 * }
726 * }
727 *
728 * <p>parses as:</p>
729 * {@snippet :
730 * CLASS_DEF -> CLASS_DEF
731 * |--MODIFIERS -> MODIFIERS
732 * | `--LITERAL_PUBLIC -> public
733 * |--LITERAL_CLASS -> class
734 * |--IDENT -> MyClass
735 * |--IMPLEMENTS_CLAUSE -> implements
736 * | `--IDENT -> Collection
737 * `--OBJBLOCK -> OBJBLOCK
738 * |--LCURLY -> {
739 * `--RCURLY -> }
740 * }
741 *
742 * @see #IDENT
743 * @see #DOT
744 * @see #COMMA
745 * @see #CLASS_DEF
746 * @see #ENUM_DEF
747 */
748 public static final int IMPLEMENTS_CLAUSE =
749 JavaLanguageLexer.IMPLEMENTS_CLAUSE;
750
751 /**
752 * A list of parameters to a method or constructor. The children
753 * are zero or more parameter declarations separated by commas.
754 *
755 * <p>For example</p>
756 * {@snippet :
757 * int start, int end
758 * }
759 *
760 * <p>parses as:</p>
761 * {@snippet :
762 * PARAMETERS -> PARAMETERS
763 * |--PARAMETER_DEF -> PARAMETER_DEF
764 * | |--MODIFIERS -> MODIFIERS
765 * | |--TYPE -> TYPE
766 * | | `--LITERAL_INT -> int
767 * | `--IDENT -> start
768 * |--COMMA -> ,
769 * `--PARAMETER_DEF -> PARAMETER_DEF
770 * |--MODIFIERS -> MODIFIERS
771 * |--TYPE -> TYPE
772 * | `--LITERAL_INT -> int
773 * `--IDENT -> end
774 * }
775 *
776 * @see #PARAMETER_DEF
777 * @see #COMMA
778 * @see #METHOD_DEF
779 * @see #CTOR_DEF
780 */
781 public static final int PARAMETERS = JavaLanguageLexer.PARAMETERS;
782 /**
783 * A parameter declaration. The last parameter in a list of parameters may
784 * be variable length (indicated by the ELLIPSIS child node immediately
785 * after the TYPE child).
786 *
787 * <p>For example</p>
788 * {@snippet :
789 * void foo(SomeType SomeType.this, int firstParameter, int... secondParameter) {}
790 * }
791 *
792 * <p>parses as:</p>
793 * {@snippet :
794 * METHOD_DEF -> METHOD_DEF
795 * |--MODIFIERS -> MODIFIERS
796 * |--TYPE -> TYPE
797 * | `--LITERAL_VOID -> void
798 * |--IDENT -> foo
799 * |--LPAREN -> (
800 * |--PARAMETERS -> PARAMETERS
801 * | |--PARAMETER_DEF -> PARAMETER_DEF
802 * | | |--MODIFIERS -> MODIFIERS
803 * | | |--TYPE -> TYPE
804 * | | | `--IDENT -> SomeType
805 * | | `--DOT -> .
806 * | | |--IDENT -> SomeType
807 * | | `--LITERAL_THIS -> this
808 * | |--COMMA -> ,
809 * | |--PARAMETER_DEF -> PARAMETER_DEF
810 * | | |--MODIFIERS -> MODIFIERS
811 * | | |--TYPE -> TYPE
812 * | | | `--LITERAL_INT -> int
813 * | | `--IDENT -> firstParameter
814 * | |--COMMA -> ,
815 * | `--PARAMETER_DEF -> PARAMETER_DEF
816 * | |--MODIFIERS -> MODIFIERS
817 * | |--TYPE -> TYPE
818 * | | `--LITERAL_INT -> int
819 * | |--ELLIPSIS -> ...
820 * | `--IDENT -> secondParameter
821 * |--RPAREN -> )
822 * `--SLIST -> {
823 * `--RCURLY -> }
824 *
825 * }
826 *
827 * @see #MODIFIERS
828 * @see #TYPE
829 * @see #IDENT
830 * @see #PARAMETERS
831 * @see #ELLIPSIS
832 */
833 public static final int PARAMETER_DEF =
834 JavaLanguageLexer.PARAMETER_DEF;
835
836 /**
837 * A labeled statement.
838 *
839 * <p>For example:</p>
840 * {@snippet :
841 * outer:
842 * while (i < 10) {
843 * if (i == 5)
844 * continue outer;
845 * i++;
846 * }
847 * }
848 *
849 * <p>parses as:</p>
850 * {@snippet :
851 * LABELED_STAT -> :
852 * |--IDENT -> outer
853 * `--LITERAL_WHILE -> while
854 * |--LPAREN -> (
855 * |--EXPR -> EXPR
856 * | `--LT -> <
857 * | |--IDENT -> i
858 * | `--NUM_INT -> 10
859 * |--RPAREN -> )
860 * `--SLIST -> {
861 * |--LITERAL_IF -> if
862 * | |--LPAREN -> (
863 * | |--EXPR -> EXPR
864 * | | `--EQUAL -> ==
865 * | | |--IDENT -> i
866 * | | `--NUM_INT -> 5
867 * | |--RPAREN -> )
868 * | `--LITERAL_CONTINUE -> continue
869 * | |--IDENT -> outer
870 * | `--SEMI -> ;
871 * |--EXPR -> EXPR
872 * | `--POST_INC -> ++
873 * | `--IDENT -> i
874 * |--SEMI -> ;
875 * `--RCURLY -> }
876 * }
877 *
878 * @see <a
879 * href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-14.html#jls-14.7">Java
880 * Language Specification, §14.7</a>
881 * @see #SLIST
882 */
883 public static final int LABELED_STAT =
884 JavaLanguageLexer.LABELED_STAT;
885
886 /**
887 * A type-cast.
888 *
889 * <p>For example:</p>
890 * {@snippet :
891 * (String)it.next()
892 * }
893 *
894 * <p>parses as:</p>
895 * {@snippet :
896 * `--TYPECAST -> (
897 * |--TYPE -> TYPE
898 * | `--IDENT -> String
899 * |--RPAREN -> )
900 * `--METHOD_CALL -> (
901 * |--DOT -> .
902 * | |--IDENT -> it
903 * | `--IDENT -> next
904 * |--ELIST -> ELIST
905 * `--RPAREN -> )
906 * }
907 *
908 * @see <a
909 * href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.16">Java
910 * Language Specification, §15.16</a>
911 * @see #EXPR
912 * @see #TYPE
913 * @see #TYPE_ARGUMENTS
914 * @see #RPAREN
915 */
916 public static final int TYPECAST = JavaLanguageLexer.TYPECAST;
917 /**
918 * The array index operator.
919 *
920 * <p>For example:</p>
921 * {@snippet :
922 * arr[0] = 10;
923 * }
924 *
925 * <p>parses as:</p>
926 * {@snippet :
927 * |--EXPR -> EXPR
928 * | `--ASSIGN -> =
929 * | |--INDEX_OP -> [
930 * | | |--IDENT -> arr
931 * | | |--EXPR -> EXPR
932 * | | | `--NUM_INT -> 0
933 * | | `--RBRACK -> ]
934 * | `--NUM_INT -> 10
935 * |--SEMI -> ;
936 * }
937 *
938 * @see #EXPR
939 */
940 public static final int INDEX_OP = JavaLanguageLexer.INDEX_OP;
941 /**
942 * The {@code ++} (postfix increment) operator.
943 *
944 * <p>For example:</p>
945 * {@snippet :
946 * a++;
947 * }
948 *
949 * <p>parses as:</p>
950 * {@snippet :
951 * |--EXPR -> EXPR
952 * | `--POST_INC -> ++
953 * | `--IDENT -> a
954 * |--SEMI -> ;
955 * }
956 *
957 * @see <a
958 * href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.14.1">Java
959 * Language Specification, §15.14.1</a>
960 * @see #EXPR
961 * @see #INC
962 */
963 public static final int POST_INC = JavaLanguageLexer.POST_INC;
964 /**
965 * The {@code --} (postfix decrement) operator.
966 *
967 * <p>For example:</p>
968 * {@snippet :
969 * a--;
970 * }
971 *
972 * <p>parses as:</p>
973 * {@snippet :
974 * |--EXPR -> EXPR
975 * | `--POST_DEC -> --
976 * | `--IDENT -> a
977 * |--SEMI -> ;
978 * }
979 *
980 * @see <a
981 * href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.14.2">Java
982 * Language Specification, §15.14.2</a>
983 * @see #EXPR
984 * @see #DEC
985 */
986 public static final int POST_DEC = JavaLanguageLexer.POST_DEC;
987 /**
988 * A method call. A method call may have type arguments however these
989 * are attached to the appropriate node in the qualified method name.
990 *
991 * <p>For example:</p>
992 * {@snippet :
993 * Integer.parseInt("123");
994 * }
995 *
996 * <p>parses as:</p>
997 * {@snippet :
998 * |--EXPR -> EXPR
999 * | `--METHOD_CALL -> (
1000 * | |--DOT -> .
1001 * | | |--IDENT -> Integer
1002 * | | `--IDENT -> parseInt
1003 * | |--ELIST -> ELIST
1004 * | | `--EXPR -> EXPR
1005 * | | `--STRING_LITERAL -> "123"
1006 * | `--RPAREN -> )
1007 * |--SEMI -> ;
1008 * }
1009 *
1010 *
1011 * @see #IDENT
1012 * @see #TYPE_ARGUMENTS
1013 * @see #DOT
1014 * @see #ELIST
1015 * @see #RPAREN
1016 * @see FullIdent
1017 */
1018 public static final int METHOD_CALL = JavaLanguageLexer.METHOD_CALL;
1019
1020 /**
1021 * A reference to a method or constructor without arguments. Part of Java 8 syntax.
1022 * The token should be used for subscribing for double colon literal.
1023 * {@link #DOUBLE_COLON} token does not appear in the tree.
1024 *
1025 * <p>For example:</p>
1026 * {@snippet :
1027 * Comparator<String> compare = String::compareToIgnoreCase;
1028 * }
1029 *
1030 * <p>parses as:
1031 * {@snippet :
1032 * |--VARIABLE_DEF -> VARIABLE_DEF
1033 * | |--MODIFIERS -> MODIFIERS
1034 * | |--TYPE -> TYPE
1035 * | | |--IDENT -> Comparator
1036 * | | `--TYPE_ARGUMENTS -> TYPE_ARGUMENTS
1037 * | | |--GENERIC_START -> <
1038 * | | |--TYPE_ARGUMENT -> TYPE_ARGUMENT
1039 * | | | `--IDENT -> String
1040 * | | `--GENERIC_END -> >
1041 * | |--IDENT -> compare
1042 * | `--ASSIGN -> =
1043 * | `--EXPR -> EXPR
1044 * | `--METHOD_REF -> ::
1045 * | |--IDENT -> String
1046 * | `--IDENT -> compareToIgnoreCase
1047 * |--SEMI -> ;
1048 * }
1049 *
1050 * @see #IDENT
1051 * @see #DOUBLE_COLON
1052 */
1053 public static final int METHOD_REF = JavaLanguageLexer.METHOD_REF;
1054 /**
1055 * An expression. Operators with lower precedence appear at a
1056 * higher level in the tree than operators with higher precedence.
1057 * Parentheses are siblings to the operator they enclose.
1058 *
1059 * <p>For example:</p>
1060 * {@snippet :
1061 * int x = 4 + 2 * (5 % 3) + (1 << 3) - 4 * 5;
1062 * }
1063 *
1064 * <p>parses as:</p>
1065 * {@snippet :
1066 * |--VARIABLE_DEF -> VARIABLE_DEF
1067 * | |--MODIFIERS -> MODIFIERS
1068 * | |--TYPE -> TYPE
1069 * | | `--LITERAL_INT -> int
1070 * | |--IDENT -> x
1071 * | `--ASSIGN -> =
1072 * | `--EXPR -> EXPR
1073 * | `--MINUS -> -
1074 * | |--PLUS -> +
1075 * | | |--PLUS -> +
1076 * | | | |--NUM_INT -> 4
1077 * | | | `--STAR -> *
1078 * | | | |--NUM_INT -> 2
1079 * | | | |--LPAREN -> (
1080 * | | | |--MOD -> %
1081 * | | | | |--NUM_INT -> 5
1082 * | | | | `--NUM_INT -> 3
1083 * | | | `--RPAREN -> )
1084 * | | |--LPAREN -> (
1085 * | | |--SL -> <<
1086 * | | | |--NUM_INT -> 1
1087 * | | | `--NUM_INT -> 3
1088 * | | `--RPAREN -> )
1089 * | `--STAR -> *
1090 * | |--NUM_INT -> 4
1091 * | `--NUM_INT -> 5
1092 * |--SEMI -> ;
1093 * }
1094 *
1095 * @see #ELIST
1096 * @see #ASSIGN
1097 * @see #LPAREN
1098 * @see #RPAREN
1099 */
1100 public static final int EXPR = JavaLanguageLexer.EXPR;
1101 /**
1102 * An array initialization. This may occur as part of an array
1103 * declaration or inline with {@code new}.
1104 *
1105 * <p>For example:</p>
1106 * {@snippet :
1107 * int[] y =
1108 * {
1109 * 1,
1110 * 2,
1111 * };
1112 * }
1113 *
1114 * <p>parses as:</p>
1115 * {@snippet :
1116 * VARIABLE_DEF -> VARIABLE_DEF
1117 * |--MODIFIERS -> MODIFIERS
1118 * |--TYPE -> TYPE
1119 * | |--LITERAL_INT -> int
1120 * | `--ARRAY_DECLARATOR -> [
1121 * | `--RBRACK -> ]
1122 * |--IDENT -> y
1123 * |--ASSIGN -> =
1124 * | `--ARRAY_INIT -> {
1125 * | |--EXPR -> EXPR
1126 * | | `--NUM_INT -> 1
1127 * | |--COMMA -> ,
1128 * | |--EXPR -> EXPR
1129 * | | `--NUM_INT -> 2
1130 * | |--COMMA -> ,
1131 * | `--RCURLY -> }
1132 * `--SEMI -> ;
1133 * }
1134 *
1135 * <p>Also consider:</p>
1136 * {@snippet :
1137 * int[] z = new int[]
1138 * {
1139 * 1,
1140 * 2,
1141 * };
1142 * }
1143 *
1144 * <p>which parses as:</p>
1145 * {@snippet :
1146 * VARIABLE_DEF -> VARIABLE_DEF
1147 * |--MODIFIERS -> MODIFIERS
1148 * |--TYPE -> TYPE [2:4]
1149 * | |--LITERAL_INT -> int
1150 * | `--ARRAY_DECLARATOR -> [
1151 * | `--RBRACK -> ]
1152 * |--IDENT -> z
1153 * |--ASSIGN -> =
1154 * | `--EXPR -> EXPR
1155 * | `--LITERAL_NEW -> new
1156 * | |--LITERAL_INT -> int
1157 * | |--ARRAY_DECLARATOR -> [
1158 * | | `--RBRACK -> ]
1159 * | `--ARRAY_INIT -> {
1160 * | |--EXPR -> EXPR
1161 * | | `--NUM_INT -> 1
1162 * | |--COMMA -> ,
1163 * | |--EXPR -> EXPR
1164 * | | `--NUM_INT -> 2
1165 * | |--COMMA -> ,
1166 * | `--RCURLY -> }
1167 * `--SEMI -> ;
1168 * }
1169 *
1170 * @see #ARRAY_DECLARATOR
1171 * @see #TYPE
1172 * @see #LITERAL_NEW
1173 * @see #COMMA
1174 */
1175 public static final int ARRAY_INIT = JavaLanguageLexer.ARRAY_INIT;
1176 /**
1177 * An import declaration. Import declarations are option, but
1178 * must appear after the package declaration and before the first type
1179 * declaration.
1180 *
1181 * <p>For example:</p>
1182 *
1183 * {@snippet :
1184 * import java.io.IOException;
1185 * }
1186 *
1187 * <p>parses as:</p>
1188 *
1189 * {@snippet :
1190 * IMPORT -> import
1191 * |--DOT -> .
1192 * | |--DOT -> .
1193 * | | |--IDENT -> java
1194 * | | `--IDENT -> io
1195 * | `--IDENT -> IOException
1196 * `--SEMI -> ;
1197 * }
1198 *
1199 * @see <a
1200 * href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-7.html#jls-7.5">Java
1201 * Language Specification §7.5</a>
1202 * @see #DOT
1203 * @see #IDENT
1204 * @see #STAR
1205 * @see #SEMI
1206 * @see FullIdent
1207 */
1208 public static final int IMPORT = JavaLanguageLexer.IMPORT;
1209 /**
1210 * The {@code -} (unary minus) operator.
1211 *
1212 * <p>For example:</p>
1213 * {@snippet :
1214 * a = -b;
1215 * }
1216 *
1217 * <p>parses as:</p>
1218 * {@snippet :
1219 * |--EXPR -> EXPR
1220 * | `--ASSIGN -> =
1221 * | |--IDENT -> a
1222 * | `--UNARY_MINUS -> -
1223 * | `--IDENT -> b
1224 * |--SEMI -> ;
1225 * }
1226 *
1227 * @see <a
1228 * href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.15.4">Java
1229 * Language Specification, §15.15.4</a>
1230 * @see #EXPR
1231 */
1232 public static final int UNARY_MINUS = JavaLanguageLexer.UNARY_MINUS;
1233 /**
1234 * The {@code +} (unary plus) operator.
1235 *
1236 * <p>For example:</p>
1237 * {@snippet :
1238 * a = + b;
1239 * }
1240 *
1241 * <p>parses as:</p>
1242 * {@snippet :
1243 * |--EXPR -> EXPR
1244 * | `--ASSIGN -> =
1245 * | |--IDENT -> a
1246 * | `--UNARY_PLUS -> +
1247 * | `--IDENT -> b
1248 * |--SEMI -> ;
1249 * }
1250 *
1251 * @see <a
1252 * href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.15.3">Java
1253 * Language Specification, §15.15.3</a>
1254 * @see #EXPR
1255 */
1256 public static final int UNARY_PLUS = JavaLanguageLexer.UNARY_PLUS;
1257 /**
1258 * A group of case clauses. Case clauses with no associated
1259 * statements are grouped together into a case group. The last
1260 * child is a statement list containing the statements to execute
1261 * upon a match.
1262 *
1263 * <p>For example:</p>
1264 * {@snippet :
1265 * case 0:
1266 * case 1:
1267 * case 2:
1268 * x = 3;
1269 * break;
1270 * }
1271 *
1272 * <p>parses as:</p>
1273 * {@snippet :
1274 * CASE_GROUP -> CASE_GROUP
1275 * |--LITERAL_CASE -> case
1276 * | |--EXPR -> EXPR
1277 * | | `--NUM_INT -> 0
1278 * | `--COLON -> :
1279 * |--LITERAL_CASE -> case
1280 * | |--EXPR -> EXPR
1281 * | | `--NUM_INT -> 1
1282 * | `--COLON -> :
1283 * |--LITERAL_CASE -> case
1284 * | |--EXPR -> EXPR
1285 * | | `--NUM_INT -> 2
1286 * | `--COLON -> :
1287 * `--SLIST -> SLIST
1288 * |--EXPR -> EXPR
1289 * | `--ASSIGN -> =
1290 * | |--IDENT -> x
1291 * | `--NUM_INT -> 3
1292 * |--SEMI -> ;
1293 * `--LITERAL_BREAK -> break
1294 * `--SEMI -> ;
1295 * }
1296 *
1297 * @see #LITERAL_CASE
1298 * @see #LITERAL_DEFAULT
1299 * @see #LITERAL_SWITCH
1300 * @see #LITERAL_YIELD
1301 */
1302 public static final int CASE_GROUP = JavaLanguageLexer.CASE_GROUP;
1303 /**
1304 * An expression list. The children are a comma separated list of
1305 * expressions.
1306 *
1307 * <p>For example:</p>
1308 * {@snippet :
1309 * new ArrayList(50);
1310 * }
1311 *
1312 * <p>parses as:</p>
1313 * {@snippet :
1314 * |--EXPR -> EXPR
1315 * | `--LITERAL_NEW -> new
1316 * | |--IDENT -> ArrayList
1317 * | |--TYPE_ARGUMENTS -> TYPE_ARGUMENTS
1318 * | | |--GENERIC_START -> <
1319 * | | `--GENERIC_END -> >
1320 * | |--LPAREN -> (
1321 * | |--ELIST -> ELIST
1322 * | | `--EXPR -> EXPR
1323 * | | `--NUM_INT -> 50
1324 * | `--RPAREN -> )
1325 * |--SEMI -> ;
1326 * }
1327 *
1328 * @see #LITERAL_NEW
1329 * @see #FOR_INIT
1330 * @see #FOR_ITERATOR
1331 * @see #EXPR
1332 * @see #METHOD_CALL
1333 * @see #CTOR_CALL
1334 * @see #SUPER_CTOR_CALL
1335 */
1336 public static final int ELIST = JavaLanguageLexer.ELIST;
1337 /**
1338 * A for loop initializer. This is a child of
1339 * {@code LITERAL_FOR}. The children of this element may be
1340 * a comma separated list of variable declarations, an expression
1341 * list, or empty.
1342 *
1343 * <p>For example:</p>
1344 * {@snippet :
1345 * for (int i = 0; i < arr.length; i++) {}
1346 * }
1347 *
1348 * <p>parses as:</p>
1349 * {@snippet :
1350 * LITERAL_FOR -> for
1351 * |--LPAREN -> (
1352 * |--FOR_INIT -> FOR_INIT
1353 * | `--VARIABLE_DEF -> VARIABLE_DEF
1354 * | |--MODIFIERS -> MODIFIERS
1355 * | |--TYPE -> TYPE
1356 * | | `--LITERAL_INT -> int
1357 * | |--IDENT -> i
1358 * | `--ASSIGN -> =
1359 * | `--EXPR -> EXPR
1360 * | `--NUM_INT -> 0
1361 * |--SEMI -> ;
1362 * |--FOR_CONDITION -> FOR_CONDITION
1363 * | `--EXPR -> EXPR
1364 * | `--LT -> <
1365 * | |--IDENT -> i
1366 * | `--DOT -> .
1367 * | |--IDENT -> arr
1368 * | `--IDENT -> length
1369 * |--SEMI -> ;
1370 * |--FOR_ITERATOR -> FOR_ITERATOR
1371 * | `--ELIST -> ELIST
1372 * | `--EXPR -> EXPR
1373 * | `--POST_INC -> ++
1374 * | `--IDENT -> i
1375 * |--RPAREN -> )
1376 * `--SLIST -> {
1377 * `--RCURLY -> }
1378 * }
1379 *
1380 * @see #VARIABLE_DEF
1381 * @see #ELIST
1382 * @see #LITERAL_FOR
1383 */
1384 public static final int FOR_INIT = JavaLanguageLexer.FOR_INIT;
1385 /**
1386 * A for loop condition. This is a child of
1387 * {@code LITERAL_FOR}. The child of this element is an
1388 * optional expression.
1389 *
1390 * <p>For example:</p>
1391 * {@snippet :
1392 * for (int i = 0; i < arr.length; i++) {}
1393 * }
1394 *
1395 * <p>parses as:</p>
1396 * {@snippet :
1397 * LITERAL_FOR -> for
1398 * |--LPAREN -> (
1399 * |--FOR_INIT -> FOR_INIT
1400 * | `--VARIABLE_DEF -> VARIABLE_DEF
1401 * | |--MODIFIERS -> MODIFIERS
1402 * | |--TYPE -> TYPE
1403 * | | `--LITERAL_INT -> int
1404 * | |--IDENT -> i
1405 * | `--ASSIGN -> =
1406 * | `--EXPR -> EXPR
1407 * | `--NUM_INT -> 0
1408 * |--SEMI -> ;
1409 * |--FOR_CONDITION -> FOR_CONDITION
1410 * | `--EXPR -> EXPR
1411 * | `--LT -> <
1412 * | |--IDENT -> i
1413 * | `--DOT -> .
1414 * | |--IDENT -> arr
1415 * | `--IDENT -> length
1416 * |--SEMI -> ;
1417 * |--FOR_ITERATOR -> FOR_ITERATOR
1418 * | `--ELIST -> ELIST
1419 * | `--EXPR -> EXPR
1420 * | `--POST_INC -> ++
1421 * | `--IDENT -> i
1422 * |--RPAREN -> )
1423 * `--SLIST -> {
1424 * `--RCURLY -> }
1425 * }
1426 *
1427 * @see #EXPR
1428 * @see #LITERAL_FOR
1429 */
1430 public static final int FOR_CONDITION =
1431 JavaLanguageLexer.FOR_CONDITION;
1432
1433 /**
1434 * A for loop iterator. This is a child of
1435 * {@code LITERAL_FOR}. The child of this element is an
1436 * optional expression list.
1437 *
1438 * <p>For example:</p>
1439 * {@snippet :
1440 * for (int i = 0; i < arr.length; i++) {}
1441 * }
1442 *
1443 * <p>parses as:</p>
1444 * {@snippet :
1445 * LITERAL_FOR -> for
1446 * |--LPAREN -> (
1447 * |--FOR_INIT -> FOR_INIT
1448 * | `--VARIABLE_DEF -> VARIABLE_DEF
1449 * | |--MODIFIERS -> MODIFIERS
1450 * | |--TYPE -> TYPE
1451 * | | `--LITERAL_INT -> int
1452 * | |--IDENT -> i
1453 * | `--ASSIGN -> =
1454 * | `--EXPR -> EXPR
1455 * | `--NUM_INT -> 0
1456 * |--SEMI -> ;
1457 * |--FOR_CONDITION -> FOR_CONDITION
1458 * | `--EXPR -> EXPR
1459 * | `--LT -> <
1460 * | |--IDENT -> i
1461 * | `--DOT -> .
1462 * | |--IDENT -> arr
1463 * | `--IDENT -> length
1464 * |--SEMI -> ;
1465 * |--FOR_ITERATOR -> FOR_ITERATOR
1466 * | `--ELIST -> ELIST
1467 * | `--EXPR -> EXPR
1468 * | `--POST_INC -> ++
1469 * | `--IDENT -> i
1470 * |--RPAREN -> )
1471 * `--SLIST -> {
1472 * `--RCURLY -> }
1473 * }
1474 *
1475 * @see #ELIST
1476 * @see #LITERAL_FOR
1477 */
1478 public static final int FOR_ITERATOR =
1479 JavaLanguageLexer.FOR_ITERATOR;
1480
1481 /**
1482 * The empty statement. This goes in place of an
1483 * {@code SLIST} for a {@code for} or {@code while}
1484 * loop body.
1485 *
1486 * <p>For example:</p>
1487 * {@snippet :
1488 * while(true);
1489 * }
1490 *
1491 * <p>parses as:</p>
1492 * {@snippet :
1493 * LITERAL_WHILE -> while
1494 * |--LPAREN -> (
1495 * |--EXPR -> EXPR
1496 * | `--LITERAL_TRUE -> true
1497 * |--RPAREN -> )
1498 * `--EMPTY_STAT -> ;
1499 * }
1500 *
1501 * @see <a
1502 * href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-14.html#jls-14.6">Java
1503 * Language Specification, §14.6</a>
1504 * @see #LITERAL_FOR
1505 * @see #LITERAL_WHILE
1506 */
1507 public static final int EMPTY_STAT = JavaLanguageLexer.EMPTY_STAT;
1508 /**
1509 * The {@code final} keyword.
1510 *
1511 * <p>For example:</p>
1512 * {@snippet :
1513 * public final int x = 0;
1514 * }
1515 *
1516 * <p>parses as:</p>
1517 * {@snippet :
1518 * VARIABLE_DEF -> VARIABLE_DEF
1519 * |--MODIFIERS -> MODIFIERS
1520 * | |--LITERAL_PUBLIC -> public
1521 * | `--FINAL -> final
1522 * |--TYPE -> TYPE
1523 * | `--LITERAL_INT -> int
1524 * |--IDENT -> x
1525 * |--ASSIGN -> =
1526 * | `--EXPR -> EXPR
1527 * | `--NUM_INT -> 0
1528 * `--SEMI -> ;
1529 * }
1530 *
1531 * @see #MODIFIERS
1532 */
1533 public static final int FINAL = JavaLanguageLexer.FINAL;
1534 /**
1535 * The {@code abstract} keyword.
1536 *
1537 * <p>For example:</p>
1538 * {@snippet :
1539 * public abstract class MyClass
1540 * {
1541 * }
1542 * }
1543 *
1544 * <p>parses as:</p>
1545 * {@snippet :
1546 * --CLASS_DEF
1547 * |--MODIFIERS
1548 * | |--LITERAL_PUBLIC (public)
1549 * | `--ABSTRACT (abstract)
1550 * |--LITERAL_CLASS (class)
1551 * |--IDENT (MyClass)
1552 * `--OBJBLOCK
1553 * |--LCURLY ({)
1554 * `--RCURLY (})
1555 * }
1556 *
1557 * @see #MODIFIERS
1558 */
1559 public static final int ABSTRACT = JavaLanguageLexer.ABSTRACT;
1560 /**
1561 * The {@code strictfp} keyword.
1562 *
1563 * <p>For example: {@code public strictfp class Test {}}</p>
1564 *
1565 * <p>parses as:</p>
1566 * {@snippet :
1567 * CLASS_DEF -> CLASS_DEF
1568 * |--MODIFIERS -> MODIFIERS
1569 * | |--LITERAL_PUBLIC -> public
1570 * | `--STRICTFP -> strictfp
1571 * |--LITERAL_CLASS -> class
1572 * |--IDENT -> Test
1573 * `--OBJBLOCK -> OBJBLOCK
1574 * |--LCURLY -> {
1575 * `--RCURLY -> }
1576 * }
1577 *
1578 * @see #MODIFIERS
1579 */
1580 public static final int STRICTFP = JavaLanguageLexer.STRICTFP;
1581 /**
1582 * A super constructor call.
1583 *
1584 * <p>For example:</p>
1585 * {@snippet :
1586 * super(1);
1587 * }
1588 *
1589 * <p>parses as:</p>
1590 * {@snippet :
1591 * SUPER_CTOR_CALL -> super
1592 * |--LPAREN -> (
1593 * |--ELIST -> ELIST
1594 * | `--EXPR -> EXPR
1595 * | `--NUM_INT -> 1
1596 * |--RPAREN -> )
1597 * `--SEMI -> ;
1598 * }
1599 *
1600 * @see #ELIST
1601 * @see #RPAREN
1602 * @see #SEMI
1603 * @see #CTOR_CALL
1604 */
1605 public static final int SUPER_CTOR_CALL =
1606 JavaLanguageLexer.SUPER_CTOR_CALL;
1607
1608 /**
1609 * A constructor call.
1610 *
1611 * <p>For example:</p>
1612 * {@snippet :
1613 * this(1);
1614 * }
1615 *
1616 * <p>parses as:</p>
1617 * {@snippet :
1618 * CTOR_CALL -> this
1619 * |--LPAREN -> (
1620 * |--ELIST -> ELIST
1621 * | `--EXPR -> EXPR
1622 * | `--NUM_INT -> 1
1623 * |--RPAREN -> )
1624 * `--SEMI -> ;
1625 * }
1626 *
1627 * @see #ELIST
1628 * @see #RPAREN
1629 * @see #SEMI
1630 * @see #SUPER_CTOR_CALL
1631 */
1632 public static final int CTOR_CALL = JavaLanguageLexer.CTOR_CALL;
1633
1634 /**
1635 * The statement terminator ({@code ;}). Depending on the
1636 * context, this make occur as a sibling, a child, or not at all.
1637 *
1638 * <p>For example:</p>
1639 * {@snippet :
1640 * for(;;);
1641 * }
1642 *
1643 * <p>parses as:</p>
1644 * {@snippet :
1645 * LITERAL_FOR -> for
1646 * |--LPAREN -> (
1647 * |--FOR_INIT -> FOR_INIT
1648 * |--SEMI -> ;
1649 * |--FOR_CONDITION -> FOR_CONDITION
1650 * |--SEMI -> ;
1651 * |--FOR_ITERATOR -> FOR_ITERATOR
1652 * |--RPAREN -> )
1653 * `--EMPTY_STAT -> ;
1654 * }
1655 *
1656 * @see #PACKAGE_DEF
1657 * @see #IMPORT
1658 * @see #SLIST
1659 * @see #ARRAY_INIT
1660 * @see #LITERAL_FOR
1661 */
1662 public static final int SEMI = JavaLanguageLexer.SEMI;
1663
1664 /**
1665 * The {@code ]} symbol.
1666 *
1667 * <p>For example:</p>
1668 * {@snippet :
1669 * int a[];
1670 * }
1671 *
1672 * <p>parses as:</p>
1673 * {@snippet :
1674 * VARIABLE_DEF -> VARIABLE_DEF
1675 * |--MODIFIERS -> MODIFIERS
1676 * |--TYPE -> TYPE
1677 * | |--LITERAL_INT -> int
1678 * | `--ARRAY_DECLARATOR -> [
1679 * | `--RBRACK -> ]
1680 * |--IDENT -> a
1681 * `--SEMI -> ;
1682 * }
1683 *
1684 * @see #INDEX_OP
1685 * @see #ARRAY_DECLARATOR
1686 */
1687 public static final int RBRACK = JavaLanguageLexer.RBRACK;
1688 /**
1689 * The {@code void} keyword.
1690 *
1691 * <p>For example:</p>
1692 * {@snippet :
1693 * void LITERAL_VOID(){}
1694 * }
1695 *
1696 * <p>'void' parses as:</p>
1697 * {@snippet :
1698 * METHOD_DEF -> METHOD_DEF
1699 * |--MODIFIERS -> MODIFIERS
1700 * |--TYPE -> TYPE
1701 * | `--LITERAL_VOID -> void
1702 * |--IDENT -> LITERAL_VOID
1703 * }
1704 *
1705 * @see #TYPE
1706 */
1707 public static final int LITERAL_VOID =
1708 JavaLanguageLexer.LITERAL_VOID;
1709
1710 /**
1711 * The {@code boolean} keyword.
1712 *
1713 * <p>For example:</p>
1714 * {@snippet :
1715 * public boolean flag;
1716 * }
1717 *
1718 * <p>parses as:</p>
1719 * {@snippet :
1720 * VARIABLE_DEF -> VARIABLE_DEF
1721 * |--MODIFIERS -> MODIFIERS
1722 * | `--LITERAL_PUBLIC -> public
1723 * |--TYPE -> TYPE
1724 * | `--LITERAL_BOOLEAN -> boolean
1725 * |--IDENT -> flag
1726 * `--SEMI -> ;
1727 * }
1728 *
1729 * @see #TYPE
1730 */
1731 public static final int LITERAL_BOOLEAN =
1732 JavaLanguageLexer.LITERAL_BOOLEAN;
1733
1734 /**
1735 * The {@code byte} keyword.
1736 *
1737 * <p>For example:</p>
1738 * {@snippet :
1739 * public byte x;
1740 * }
1741 *
1742 * <p>parses as:</p>
1743 * {@snippet :
1744 * VARIABLE_DEF -> VARIABLE_DEF
1745 * |--MODIFIERS -> MODIFIERS
1746 * | `--LITERAL_PUBLIC -> public
1747 * |--TYPE -> TYPE
1748 * | `--LITERAL_BYTE -> byte
1749 * |--IDENT -> x
1750 * `--SEMI -> ;
1751 * }
1752 *
1753 * @see #TYPE
1754 */
1755 public static final int LITERAL_BYTE =
1756 JavaLanguageLexer.LITERAL_BYTE;
1757
1758 /**
1759 * The {@code char} keyword.
1760 *
1761 * <p>For example:</p>
1762 * {@snippet :
1763 * char a = 'A';
1764 * }
1765 *
1766 * <p>parses as:</p>
1767 * {@snippet :
1768 * VARIABLE_DEF -> VARIABLE_DEF
1769 * |--MODIFIERS -> MODIFIERS
1770 * |--TYPE -> TYPE
1771 * | `--LITERAL_CHAR -> char
1772 * |--IDENT -> a
1773 * |--ASSIGN -> =
1774 * | `--EXPR -> EXPR
1775 * | `--CHAR_LITERAL -> 'A'
1776 * `--SEMI -> ;
1777 * }
1778 *
1779 * @see #TYPE
1780 */
1781 public static final int LITERAL_CHAR =
1782 JavaLanguageLexer.LITERAL_CHAR;
1783
1784 /**
1785 * The {@code short} keyword.
1786 *
1787 * <p>For example:</p>
1788 * {@snippet :
1789 * public short x;
1790 * }
1791 *
1792 * <p>parses as:</p>
1793 * {@snippet :
1794 * VARIABLE_DEF -> VARIABLE_DEF
1795 * |--MODIFIERS -> MODIFIERS
1796 * | `--LITERAL_PUBLIC -> public
1797 * |--TYPE -> TYPE
1798 * | `--LITERAL_SHORT -> short
1799 * |--IDENT -> x
1800 * `--SEMI -> ;
1801 * }
1802 *
1803 * @see #TYPE
1804 */
1805 public static final int LITERAL_SHORT =
1806 JavaLanguageLexer.LITERAL_SHORT;
1807
1808 /**
1809 * The {@code int} keyword.
1810 *
1811 * <p>For example:</p>
1812 * {@snippet :
1813 * public int x;
1814 * }
1815 *
1816 * <p>parses as:</p>
1817 * {@snippet :
1818 * VARIABLE_DEF -> VARIABLE_DEF
1819 * |--MODIFIERS -> MODIFIERS
1820 * | `--LITERAL_PUBLIC -> public
1821 * |--TYPE -> TYPE
1822 * | `--LITERAL_INT -> int
1823 * |--IDENT -> x
1824 * `--SEMI -> ;
1825 * }
1826 *
1827 * @see #TYPE
1828 */
1829 public static final int LITERAL_INT = JavaLanguageLexer.LITERAL_INT;
1830 /**
1831 * The {@code float} keyword.
1832 *
1833 * <p>For example:</p>
1834 * {@snippet :
1835 * public float x;
1836 * }
1837 *
1838 * <p>parses as:</p>
1839 * {@snippet :
1840 * VARIABLE_DEF -> VARIABLE_DEF
1841 * |--MODIFIERS -> MODIFIERS
1842 * | `--LITERAL_PUBLIC -> public
1843 * |--TYPE -> TYPE
1844 * | `--LITERAL_FLOAT -> float
1845 * |--IDENT -> x
1846 * `--SEMI -> ;
1847 * }
1848 *
1849 * @see #TYPE
1850 */
1851 public static final int LITERAL_FLOAT =
1852 JavaLanguageLexer.LITERAL_FLOAT;
1853
1854 /**
1855 * The {@code long} keyword.
1856 *
1857 * <p>For example:</p>
1858 * {@snippet :
1859 * public long x;
1860 * }
1861 *
1862 * <p>parses as:</p>
1863 * {@snippet :
1864 * VARIABLE_DEF -> VARIABLE_DEF
1865 * |--MODIFIERS -> MODIFIERS
1866 * | `--LITERAL_PUBLIC -> public
1867 * |--TYPE -> TYPE
1868 * | `--LITERAL_LONG -> long
1869 * |--IDENT -> x
1870 * `--SEMI -> ;
1871 * }
1872 *
1873 * @see #TYPE
1874 */
1875 public static final int LITERAL_LONG =
1876 JavaLanguageLexer.LITERAL_LONG;
1877
1878 /**
1879 * The {@code double} keyword.
1880 *
1881 * <p>For example:</p>
1882 * {@snippet :
1883 * public double x;
1884 * }
1885 *
1886 * <p>parses as:</p>
1887 * {@snippet :
1888 * VARIABLE_DEF -> VARIABLE_DEF
1889 * |--MODIFIERS -> MODIFIERS
1890 * | `--LITERAL_PUBLIC -> public
1891 * |--TYPE -> TYPE
1892 * | `--LITERAL_DOUBLE -> double
1893 * |--IDENT -> x
1894 * `--SEMI -> ;
1895 * }
1896 *
1897 * @see #TYPE
1898 */
1899 public static final int LITERAL_DOUBLE =
1900 JavaLanguageLexer.LITERAL_DOUBLE;
1901
1902 /**
1903 * An identifier. These can be names of types, subpackages,
1904 * fields, methods, parameters, and local variables.
1905 *
1906 * <p>For example:</p>
1907 * {@snippet :
1908 * int a = 10;
1909 * }
1910 *
1911 * <p>parses as:</p>
1912 * {@snippet :
1913 * VARIABLE_DEF -> VARIABLE_DEF
1914 * |--MODIFIERS -> MODIFIERS
1915 * |--TYPE -> TYPE
1916 * | `--LITERAL_INT -> int
1917 * |--IDENT -> a
1918 * | `--ASSIGN -> =
1919 * | `--EXPR -> EXPR
1920 * | `--NUM_INT -> 10
1921 * `--SEMI -> ;
1922 * }
1923 *
1924 */
1925 public static final int IDENT = JavaLanguageLexer.IDENT;
1926 /**
1927 * The {@code .} (dot) operator.
1928 *
1929 * <p>For example:</p>
1930 * {@snippet :
1931 * return person.name;
1932 * }
1933 *
1934 * <p>parses as:</p>
1935 * {@snippet :
1936 * --LITERAL_RETURN -> return
1937 * |--EXPR -> EXPR
1938 * | `--DOT -> .
1939 * | |--IDENT -> person
1940 * | `--IDENT -> name
1941 * `--SEMI -> ;
1942 * }
1943 *
1944 * @see FullIdent
1945 */
1946 public static final int DOT = JavaLanguageLexer.DOT;
1947 /**
1948 * The {@code *} (multiplication or wildcard) operator.
1949 *
1950 * <p>For example:</p>
1951 * {@snippet :
1952 * f = m * a;
1953 * }
1954 *
1955 * <p>parses as:</p>
1956 * {@snippet :
1957 * |--EXPR -> EXPR
1958 * | `--ASSIGN -> =
1959 * | |--IDENT -> f
1960 * | `--STAR -> *
1961 * | |--IDENT -> m
1962 * | `--IDENT -> a
1963 * |--SEMI -> ;
1964 * }
1965 *
1966 * @see <a
1967 * href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-7.html#jls-7.5.2">Java
1968 * Language Specification, §7.5.2</a>
1969 * @see <a
1970 * href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.17.1">Java
1971 * Language Specification, §15.17.1</a>
1972 * @see #EXPR
1973 * @see #IMPORT
1974 */
1975 public static final int STAR = JavaLanguageLexer.STAR;
1976 /**
1977 * The {@code private} keyword.
1978 *
1979 * <p>For example:</p>
1980 * {@snippet :
1981 * private int x;
1982 * }
1983 *
1984 * <p>parses as:</p>
1985 * {@snippet :
1986 * VARIABLE_DEF -> VARIABLE_DEF
1987 * |--MODIFIERS -> MODIFIERS
1988 * | `--LITERAL_PRIVATE -> private
1989 * |--TYPE -> TYPE
1990 * | `--LITERAL_INT -> int
1991 * |--IDENT -> x
1992 * `--SEMI -> ;
1993 * }
1994 *
1995 * @see #MODIFIERS
1996 */
1997 public static final int LITERAL_PRIVATE =
1998 JavaLanguageLexer.LITERAL_PRIVATE;
1999
2000 /**
2001 * The {@code public} keyword.
2002 *
2003 * <p>For example:</p>
2004 * {@snippet :
2005 * public int x;
2006 * }
2007 *
2008 * <p>parses as:</p>
2009 * {@snippet :
2010 * VARIABLE_DEF -> VARIABLE_DEF
2011 * |--MODIFIERS -> MODIFIERS
2012 * | `--LITERAL_PUBLIC -> public
2013 * |--TYPE -> TYPE
2014 * | `--LITERAL_INT -> int
2015 * |--IDENT -> x
2016 * `--SEMI -> ;
2017 * }
2018 *
2019 * @see #MODIFIERS
2020 */
2021 public static final int LITERAL_PUBLIC =
2022 JavaLanguageLexer.LITERAL_PUBLIC;
2023
2024 /**
2025 * The {@code protected} keyword.
2026 *
2027 * <p>For example:</p>
2028 * {@snippet :
2029 * protected int x;
2030 * }
2031 *
2032 * <p>parses as:</p>
2033 * {@snippet :
2034 * VARIABLE_DEF -> VARIABLE_DEF
2035 * |--MODIFIERS -> MODIFIERS
2036 * | `--LITERAL_PROTECTED -> protected
2037 * |--TYPE -> TYPE
2038 * | `--LITERAL_INT -> int
2039 * |--IDENT -> x
2040 * `--SEMI -> ;
2041 * }
2042 *
2043 * @see #MODIFIERS
2044 */
2045 public static final int LITERAL_PROTECTED =
2046 JavaLanguageLexer.LITERAL_PROTECTED;
2047
2048 /**
2049 * The {@code static} keyword.
2050 *
2051 * <p>For example:</p>
2052 * {@snippet :
2053 * public static int x;
2054 * }
2055 *
2056 * <p>parses as:</p>
2057 * {@snippet :
2058 * VARIABLE_DEF -> VARIABLE_DEF
2059 * |--MODIFIERS -> MODIFIERS
2060 * | |--LITERAL_PUBLIC -> public
2061 * | `--LITERAL_STATIC -> static
2062 * |--TYPE -> TYPE
2063 * | `--LITERAL_INT -> int
2064 * |--IDENT -> x
2065 * `--SEMI -> ;
2066 * }
2067 *
2068 * @see #MODIFIERS
2069 */
2070 public static final int LITERAL_STATIC =
2071 JavaLanguageLexer.LITERAL_STATIC;
2072
2073 /**
2074 * The {@code transient} keyword.
2075 *
2076 * <p>For example:</p>
2077 * {@snippet :
2078 * transient int a;
2079 * }
2080 *
2081 * <p>parses as:</p>
2082 * {@snippet :
2083 * VARIABLE_DEF -> VARIABLE_DEF
2084 * |--MODIFIERS -> MODIFIERS
2085 * | `--LITERAL_TRANSIENT -> transient
2086 * |--TYPE -> TYPE
2087 * | `--LITERAL_INT -> int
2088 * |--IDENT -> a
2089 * `--SEMI -> ;
2090 * }
2091 *
2092 * @see #MODIFIERS
2093 */
2094 public static final int LITERAL_TRANSIENT =
2095 JavaLanguageLexer.LITERAL_TRANSIENT;
2096
2097 /**
2098 * The {@code native} keyword.
2099 *
2100 * <p>For example:</p>
2101 * {@snippet :
2102 * native void foo(){}
2103 * }
2104 *
2105 * <p>parses as:</p>
2106 * {@snippet :
2107 * METHOD_DEF -> METHOD_DEF
2108 * |--MODIFIERS -> MODIFIERS
2109 * | `--LITERAL_NATIVE -> native
2110 * |--TYPE -> TYPE
2111 * | `--LITERAL_VOID -> void
2112 * |--IDENT -> foo
2113 * |--LPAREN -> (
2114 * |--PARAMETERS -> PARAMETERS
2115 * |--RPAREN -> )
2116 * `--SLIST -> {
2117 * `--RCURLY -> }
2118 * }
2119 *
2120 * @see #MODIFIERS
2121 */
2122 public static final int LITERAL_NATIVE =
2123 JavaLanguageLexer.LITERAL_NATIVE;
2124
2125 /**
2126 * The {@code synchronized} keyword. This may be used as a
2127 * modifier of a method or in the definition of a synchronized
2128 * block.
2129 *
2130 * <p>For example:</p>
2131 *
2132 * {@snippet :
2133 * synchronized(this)
2134 * {
2135 * x++;
2136 * }
2137 * }
2138 *
2139 * <p>parses as:</p>
2140 *
2141 * {@snippet :
2142 * |--LITERAL_SYNCHRONIZED -> synchronized
2143 * | |--LPAREN -> (
2144 * | |--EXPR -> EXPR
2145 * | | `--LITERAL_THIS -> this
2146 * | |--RPAREN -> )
2147 * | `--SLIST -> {
2148 * | |--EXPR -> EXPR
2149 * | | `--POST_INC -> ++
2150 * | | `--IDENT -> x
2151 * | |--SEMI -> ;
2152 * | `--RCURLY -> }
2153 * `--RCURLY -> }
2154 * }
2155 *
2156 * @see #MODIFIERS
2157 * @see #LPAREN
2158 * @see #EXPR
2159 * @see #RPAREN
2160 * @see #SLIST
2161 * @see #RCURLY
2162 */
2163 public static final int LITERAL_SYNCHRONIZED =
2164 JavaLanguageLexer.LITERAL_SYNCHRONIZED;
2165
2166 /**
2167 * The {@code volatile} keyword. This may be used as a
2168 * modifier of a field.
2169 *
2170 * <p>For example:</p>
2171 * {@snippet :
2172 * private volatile int x;
2173 * }
2174 *
2175 * <p>parses as:</p>
2176 * {@snippet :
2177 * VARIABLE_DEF -> VARIABLE_DEF
2178 * |--MODIFIERS -> MODIFIERS
2179 * | |--LITERAL_PRIVATE -> private
2180 * | `--LITERAL_VOLATILE -> volatile
2181 * |--TYPE -> TYPE
2182 * | `--LITERAL_INT -> int
2183 * |--IDENT -> x
2184 * `--SEMI -> ;
2185 * }
2186 *
2187 * @see #MODIFIERS
2188 */
2189 public static final int LITERAL_VOLATILE =
2190 JavaLanguageLexer.LITERAL_VOLATILE;
2191
2192 /**
2193 * The {@code class} keyword. This element appears both
2194 * as part of a class declaration, and inline to reference a
2195 * class object.
2196 *
2197 * <p>For example:</p>
2198 * {@snippet :
2199 * class Test {
2200 * }
2201 * }
2202 *
2203 * <p>parses as:</p>
2204 * {@snippet :
2205 * CLASS_DEF -> CLASS_DEF
2206 * |--MODIFIERS -> MODIFIERS
2207 * |--LITERAL_CLASS -> class
2208 * |--IDENT -> Test
2209 * `--OBJBLOCK -> OBJBLOCK
2210 * |--LCURLY -> {
2211 * `--RCURLY -> }
2212 * }
2213 *
2214 * <p>For example:</p>
2215 * {@snippet :
2216 * int.class
2217 * }
2218 *
2219 * <p>parses as:</p>
2220 * {@snippet :
2221 * EXPR -> EXPR
2222 * `--DOT -> .
2223 * |--LITERAL_INT -> int
2224 * `--LITERAL_CLASS -> class
2225 * }
2226 *
2227 * @see #DOT
2228 * @see #IDENT
2229 * @see #CLASS_DEF
2230 * @see FullIdent
2231 */
2232 public static final int LITERAL_CLASS =
2233 JavaLanguageLexer.LITERAL_CLASS;
2234
2235 /**
2236 * The {@code interface} keyword. This token appears in
2237 * interface definition.
2238 *
2239 * <p>For example:</p>
2240 *
2241 * {@snippet :
2242 * public interface MyInterface {
2243 *
2244 * }
2245 * }
2246 *
2247 * <p>parses as:</p>
2248 *
2249 * {@snippet :
2250 * INTERFACE_DEF -> INTERFACE_DEF
2251 * |--MODIFIERS -> MODIFIERS
2252 * | `--LITERAL_PUBLIC -> public
2253 * |--LITERAL_INTERFACE -> interface
2254 * |--IDENT -> MyInterface
2255 * `--OBJBLOCK -> OBJBLOCK
2256 * |--LCURLY -> {
2257 * `--RCURLY -> }
2258 * }
2259 *
2260 * @see #INTERFACE_DEF
2261 */
2262 public static final int LITERAL_INTERFACE =
2263 JavaLanguageLexer.LITERAL_INTERFACE;
2264
2265 /**
2266 * A left curly brace (<code>{</code>).
2267 *
2268 * <p>For example:</p>
2269 *
2270 * {@snippet :
2271 * class App {
2272 * int num;
2273 * }
2274 * }
2275 *
2276 * <p>parses as:</p>
2277 * {@snippet :
2278 * CLASS_DEF -> CLASS_DEF
2279 * |--MODIFIERS -> MODIFIERS
2280 * |--LITERAL_CLASS -> class
2281 * |--IDENT -> App
2282 * `--OBJBLOCK -> OBJBLOCK
2283 * |--LCURLY -> {
2284 * |--VARIABLE_DEF -> VARIABLE_DEF
2285 * | |--MODIFIERS -> MODIFIERS
2286 * | |--TYPE -> TYPE
2287 * | | `--LITERAL_INT -> int
2288 * | |--IDENT -> num
2289 * | `--SEMI -> ;
2290 * `--RCURLY -> }
2291 * }
2292 *
2293 * @see #OBJBLOCK
2294 * @see #ARRAY_INIT
2295 * @see #SLIST
2296 */
2297 public static final int LCURLY = JavaLanguageLexer.LCURLY;
2298 /**
2299 * A right curly brace (<code>}</code>).
2300 *
2301 * <p>For example:</p>
2302 * {@snippet :
2303 * void foo(){}
2304 * }
2305 *
2306 * <p>parses as:</p>
2307 * {@snippet :
2308 * METHOD_DEF -> METHOD_DEF
2309 * |--MODIFIERS -> MODIFIERS
2310 * |--TYPE -> TYPE
2311 * | `--LITERAL_VOID -> void
2312 * |--IDENT -> foo
2313 * |--LPAREN -> (
2314 * |--PARAMETERS -> PARAMETERS
2315 * |--RPAREN -> )
2316 * `--SLIST -> {
2317 * `--RCURLY -> }
2318 * }
2319 *
2320 * @see #OBJBLOCK
2321 * @see #ARRAY_INIT
2322 * @see #SLIST
2323 */
2324 public static final int RCURLY = JavaLanguageLexer.RCURLY;
2325
2326 /**
2327 * The {@code ,} (comma) operator.
2328 *
2329 * <p>For example:</p>
2330 * {@snippet :
2331 * int a, b;
2332 * }
2333 *
2334 * <p>parses as:</p>
2335 * {@snippet :
2336 * |--VARIABLE_DEF -> VARIABLE_DEF
2337 * | |--MODIFIERS -> MODIFIERS
2338 * | |--TYPE -> TYPE
2339 * | | `--LITERAL_INT -> int
2340 * | `--IDENT -> a
2341 * |--COMMA -> ,
2342 * |--VARIABLE_DEF -> VARIABLE_DEF
2343 * | |--MODIFIERS -> MODIFIERS
2344 * | |--TYPE -> TYPE
2345 * | | `--LITERAL_INT -> int
2346 * | `--IDENT -> b
2347 * |--SEMI -> ;
2348 * }
2349 *
2350 * @see #ARRAY_INIT
2351 * @see #FOR_INIT
2352 * @see #FOR_ITERATOR
2353 * @see #LITERAL_THROWS
2354 * @see #IMPLEMENTS_CLAUSE
2355 */
2356 public static final int COMMA = JavaLanguageLexer.COMMA;
2357
2358 /**
2359 * A left parenthesis ({@code (}).
2360 *
2361 * <p>For example:</p>
2362 * {@snippet :
2363 * Integer val = new Integer();
2364 * while (false) {
2365 * val += (-3);
2366 * }
2367 * }
2368 *
2369 * <p>parses as:</p>
2370 * {@snippet :
2371 * |--VARIABLE_DEF -> VARIABLE_DEF
2372 * | |--MODIFIERS -> MODIFIERS
2373 * | |--TYPE -> TYPE
2374 * | | `--IDENT -> Integer
2375 * | |--IDENT -> val
2376 * | `--ASSIGN -> =
2377 * | `--EXPR -> EXPR
2378 * | `--LITERAL_NEW -> new
2379 * | |--IDENT -> Integer
2380 * | |--LPAREN -> (
2381 * | |--ELIST -> ELIST
2382 * | `--RPAREN -> )
2383 * |--SEMI -> ;
2384 * |--LITERAL_WHILE -> while
2385 * | |--LPAREN -> (
2386 * | |--EXPR -> EXPR
2387 * | | `--LITERAL_FALSE -> false
2388 * | |--RPAREN -> )
2389 * | `--SLIST -> {
2390 * | |--EXPR -> EXPR
2391 * | | `--PLUS_ASSIGN -> +=
2392 * | | |--IDENT -> val
2393 * | | |--LPAREN -> (
2394 * | | |--UNARY_MINUS -> -
2395 * | | | `--NUM_INT -> 3
2396 * | | `--RPAREN -> )
2397 * | |--SEMI -> ;
2398 * | `--RCURLY -> }
2399 * }
2400 *
2401 * @see #LITERAL_FOR
2402 * @see #LITERAL_NEW
2403 * @see #EXPR
2404 * @see #LITERAL_SWITCH
2405 * @see #LITERAL_CATCH
2406 */
2407 public static final int LPAREN = JavaLanguageLexer.LPAREN;
2408 /**
2409 * A right parenthesis ({@code )}).
2410 *
2411 * <p>For example:</p>
2412 * {@snippet :
2413 * void check() {
2414 * }
2415 * }
2416 *
2417 * <p>parses as:</p>
2418 * {@snippet :
2419 * METHOD_DEF -> METHOD_DEF
2420 * |--MODIFIERS -> MODIFIERS
2421 * |--TYPE -> TYPE
2422 * | `--LITERAL_VOID -> void
2423 * |--IDENT -> check
2424 * |--LPAREN -> (
2425 * |--PARAMETERS -> PARAMETERS
2426 * |--RPAREN -> )
2427 * `--SLIST -> {
2428 * `--RCURLY -> }
2429 * }
2430 *
2431 * @see #LITERAL_FOR
2432 * @see #LITERAL_NEW
2433 * @see #METHOD_CALL
2434 * @see #TYPECAST
2435 * @see #EXPR
2436 * @see #LITERAL_SWITCH
2437 * @see #LITERAL_CATCH
2438 */
2439 public static final int RPAREN = JavaLanguageLexer.RPAREN;
2440 /**
2441 * The {@code this} keyword use to refer the current object.
2442 * This can also be used to call the constructor.
2443 *
2444 * <p>For example:</p>
2445 * {@snippet :
2446 * this.name = name;
2447 * }
2448 *
2449 * <p>parses as:</p>
2450 * {@snippet :
2451 * EXPR -> EXPR
2452 * `--ASSIGN -> =
2453 * |--DOT -> .
2454 * | |--LITERAL_THIS -> this
2455 * | `--IDENT -> name
2456 * `--IDENT -> name
2457 * SEMI -> ;
2458 * }
2459 *
2460 * <p>Also consider:</p>
2461 * {@snippet :
2462 * this(1, "NULL");
2463 * }
2464 *
2465 * <p>parses as:</p>
2466 * {@snippet :
2467 * CTOR_CALL -> this
2468 * |--LPAREN -> (
2469 * |--ELIST -> ELIST
2470 * | |--EXPR -> EXPR
2471 * | | `--NUM_INT -> 1
2472 * | |--COMMA -> ,
2473 * | `--EXPR -> EXPR
2474 * | `--STRING_LITERAL -> "NULL"
2475 * |--RPAREN -> )
2476 * `--SEMI -> ;
2477 * }
2478 *
2479 * @see #EXPR
2480 * @see #CTOR_CALL
2481 */
2482 public static final int LITERAL_THIS =
2483 JavaLanguageLexer.LITERAL_THIS;
2484
2485 /**
2486 * The {@code super} keyword.
2487 *
2488 * <p>For example:</p>
2489 * {@snippet :
2490 * super.toString();
2491 * }
2492 *
2493 * <p>parses as:</p>
2494 * {@snippet :
2495 * |--EXPR -> EXPR
2496 * | `--METHOD_CALL -> (
2497 * | |--DOT -> .
2498 * | | |--LITERAL_SUPER -> super
2499 * | | `--IDENT -> toString
2500 * | |--ELIST -> ELIST
2501 * | `--RPAREN -> )
2502 * |--SEMI -> ;
2503 * }
2504 *
2505 * @see #EXPR
2506 * @see #SUPER_CTOR_CALL
2507 */
2508 public static final int LITERAL_SUPER =
2509 JavaLanguageLexer.LITERAL_SUPER;
2510
2511 /**
2512 * The {@code =} (assignment) operator.
2513 *
2514 * <p>For example:</p>
2515 * {@snippet :
2516 * a = b;
2517 * }
2518 *
2519 * <p>parses as:</p>
2520 * {@snippet :
2521 * |--EXPR -> EXPR
2522 * | `--ASSIGN -> =
2523 * | |--IDENT -> a
2524 * | `--IDENT -> b
2525 * |--SEMI -> ;
2526 * }
2527 *
2528 * @see <a
2529 * href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.26.1">Java
2530 * Language Specification, §15.26.1</a>
2531 * @see #EXPR
2532 */
2533 public static final int ASSIGN = JavaLanguageLexer.ASSIGN;
2534 /**
2535 * The {@code throws} keyword. The children are a number of
2536 * one or more identifiers separated by commas.
2537 *
2538 * <p>For example:</p>
2539 * {@snippet :
2540 * void test() throws FileNotFoundException, EOFException {
2541 * }
2542 * }
2543 *
2544 * <p>parses as:</p>
2545 * {@snippet :
2546 * METHOD_DEF -> METHOD_DEF
2547 * |--MODIFIERS -> MODIFIERS
2548 * |--TYPE -> TYPE
2549 * | `--LITERAL_VOID -> void
2550 * |--IDENT -> test
2551 * |--LPAREN -> (
2552 * |--PARAMETERS -> PARAMETERS
2553 * |--RPAREN -> )
2554 * |--LITERAL_THROWS -> throws
2555 * | |--IDENT -> FileNotFoundException
2556 * | |--COMMA -> ,
2557 * | `--IDENT -> EOFException
2558 * `--SLIST -> {
2559 * `--RCURLY -> }
2560 * }
2561 *
2562 * @see <a
2563 * href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-8.html#jls-8.4.4">Java
2564 * Language Specification, §8.4.4</a>
2565 * @see #IDENT
2566 * @see #DOT
2567 * @see #COMMA
2568 * @see #METHOD_DEF
2569 * @see #CTOR_DEF
2570 * @see FullIdent
2571 */
2572 public static final int LITERAL_THROWS =
2573 JavaLanguageLexer.LITERAL_THROWS;
2574
2575 /**
2576 * The {@code :} (colon) operator. This will appear as part
2577 * of the conditional operator ({@code ? :}).
2578 *
2579 * <p>For example:</p>
2580 * {@snippet :
2581 * num = isValid ? 1 : 0;
2582 * }
2583 *
2584 * <p>parses as:</p>
2585 * {@snippet :
2586 * |--EXPR -> EXPR
2587 * | `--ASSIGN -> =
2588 * | |--IDENT -> num
2589 * | `--QUESTION -> ?
2590 * | |--IDENT -> isValid
2591 * | |--NUM_INT -> 1
2592 * | |--COLON -> :
2593 * | `--NUM_INT -> 0
2594 * |--SEMI -> ;
2595 * }
2596 *
2597 * @see #QUESTION
2598 * @see #LABELED_STAT
2599 * @see #CASE_GROUP
2600 */
2601 public static final int COLON = JavaLanguageLexer.COLON;
2602
2603 /**
2604 * The {@code ::} (double colon) separator.
2605 * It is part of Java 8 syntax that is used for method reference.
2606 * The token does not appear in tree, {@link #METHOD_REF} should be used instead.
2607 *
2608 * <p>For example:</p>
2609 * {@snippet :
2610 * Function<Double, Double> square = MyClass::square;
2611 * }
2612 *
2613 * <p>parses as:</p>
2614 * {@snippet :
2615 * VARIABLE_DEF -> VARIABLE_DEF
2616 * |--MODIFIERS -> MODIFIERS
2617 * |--TYPE -> TYPE
2618 * | |--IDENT -> Function
2619 * | | `--TYPE_ARGUMENTS -> TYPE_ARGUMENTS
2620 * | | |--GENERIC_START -> <
2621 * | | |--TYPE_ARGUMENT -> TYPE_ARGUMENT
2622 * | | | `--IDENT -> Double
2623 * | | |--COMMA -> ,
2624 * | | |--TYPE_ARGUMENT -> TYPE_ARGUMENT
2625 * | | | `--IDENT -> Double
2626 * | | `--GENERIC_END -> >
2627 * | |--IDENT -> square
2628 * | |--ASSIGN -> =
2629 * | | `--EXPR -> EXPR
2630 * | | `--METHOD_REF -> ::
2631 * | | |--IDENT -> MyClass
2632 * | | `--IDENT -> square
2633 * | `--SEMI -> ;
2634 * }
2635 *
2636 * @see #METHOD_REF
2637 */
2638 public static final int DOUBLE_COLON = JavaLanguageLexer.DOUBLE_COLON;
2639 /**
2640 * The {@code if} keyword.
2641 *
2642 * <p>For example:</p>
2643 * {@snippet :
2644 * if (optimistic)
2645 * {
2646 * message = "half full";
2647 * }
2648 * else
2649 * {
2650 * message = "half empty";
2651 * }
2652 * }
2653 *
2654 * <p>parses as:</p>
2655 * {@snippet :
2656 * LITERAL_IF -> if
2657 * |--LPAREN -> (
2658 * |--EXPR -> EXPR
2659 * | `--IDENT -> optimistic
2660 * |--RPAREN -> )
2661 * |--SLIST -> {
2662 * | |--EXPR -> EXPR
2663 * | | `--ASSIGN -> =
2664 * | | |--IDENT -> message
2665 * | | `--STRING_LITERAL -> "half full"
2666 * | |--SEMI -> ;
2667 * | `--RCURLY -> }
2668 * `--LITERAL_ELSE -> else
2669 * `--SLIST -> {
2670 * |--EXPR -> EXPR
2671 * | `--ASSIGN -> =
2672 * | |--IDENT -> message
2673 * | `--STRING_LITERAL -> "half empty"
2674 * |--SEMI -> ;
2675 * `--RCURLY -> }
2676 * }
2677 *
2678 * @see #LPAREN
2679 * @see #EXPR
2680 * @see #RPAREN
2681 * @see #SLIST
2682 * @see #EMPTY_STAT
2683 * @see #LITERAL_ELSE
2684 */
2685 public static final int LITERAL_IF = JavaLanguageLexer.LITERAL_IF;
2686 /**
2687 * The {@code for} keyword. The children are {@code (},
2688 * an initializer, a condition, an iterator, a {@code )} and
2689 * either a statement list, a single expression, or an empty
2690 * statement.
2691 *
2692 * <p>For example:</p>
2693 * {@snippet :
2694 * for (int i = 0; i < arr.length; i++) {}
2695 * }
2696 *
2697 * <p>parses as:</p>
2698 * {@snippet :
2699 * LITERAL_FOR -> for
2700 * |--LPAREN -> (
2701 * |--FOR_INIT -> FOR_INIT
2702 * | `--VARIABLE_DEF -> VARIABLE_DEF
2703 * | |--MODIFIERS -> MODIFIERS
2704 * | |--TYPE -> TYPE
2705 * | | `--LITERAL_INT -> int
2706 * | |--IDENT -> i
2707 * | `--ASSIGN -> =
2708 * | `--EXPR -> EXPR
2709 * | `--NUM_INT -> 0
2710 * |--SEMI -> ;
2711 * |--FOR_CONDITION -> FOR_CONDITION
2712 * | `--EXPR -> EXPR
2713 * | `--LT -> <
2714 * | |--IDENT -> i
2715 * | `--DOT -> .
2716 * | |--IDENT -> arr
2717 * | `--IDENT -> length
2718 * |--SEMI -> ;
2719 * |--FOR_ITERATOR -> FOR_ITERATOR
2720 * | `--ELIST -> ELIST
2721 * | `--EXPR -> EXPR
2722 * | `--POST_INC -> ++
2723 * | `--IDENT -> i
2724 * |--RPAREN -> )
2725 * `--SLIST -> {
2726 * `--RCURLY -> }
2727 * }
2728 *
2729 * @see #LPAREN
2730 * @see #FOR_INIT
2731 * @see #SEMI
2732 * @see #FOR_CONDITION
2733 * @see #FOR_ITERATOR
2734 * @see #RPAREN
2735 * @see #SLIST
2736 * @see #EMPTY_STAT
2737 * @see #EXPR
2738 */
2739 public static final int LITERAL_FOR = JavaLanguageLexer.LITERAL_FOR;
2740 /**
2741 * The {@code while} keyword.
2742 *
2743 * <p>For example:</p>
2744 * {@snippet :
2745 * while (i < 5) {
2746 * i++;
2747 * }
2748 * }
2749 *
2750 * <p>parses as:</p>
2751 * {@snippet :
2752 * LITERAL_WHILE -> while
2753 * |--LPAREN -> (
2754 * |--EXPR -> EXPR
2755 * | `--LT -> <
2756 * | |--IDENT -> i
2757 * | `--NUM_INT -> 5
2758 * |--RPAREN -> )
2759 * `--SLIST -> {
2760 * |--EXPR -> EXPR
2761 * | `--POST_INC -> ++
2762 * | `--IDENT -> i
2763 * |--SEMI -> ;
2764 * `--RCURLY -> }
2765 * }
2766 */
2767 public static final int LITERAL_WHILE =
2768 JavaLanguageLexer.LITERAL_WHILE;
2769
2770 /**
2771 * The {@code do} keyword. Note that the while token does not
2772 * appear as part of the do-while construct.
2773 *
2774 * <p>For example:</p>
2775 * {@snippet :
2776 * do {
2777 * x = rand.nextInt();
2778 * } while (x < 5);
2779 * }
2780 *
2781 * <p>parses as:</p>
2782 * {@snippet :
2783 * LITERAL_DO -> do
2784 * |--SLIST -> {
2785 * | |--EXPR -> EXPR
2786 * | | `--ASSIGN -> =
2787 * | | |--IDENT -> x
2788 * | | `--METHOD_CALL -> (
2789 * | | |--DOT -> .
2790 * | | | |--IDENT -> rand
2791 * | | | `--IDENT -> nextInt
2792 * | | |--ELIST -> ELIST
2793 * | | `--RPAREN -> )
2794 * | |--SEMI -> ;
2795 * | `--RCURLY -> }
2796 * |--DO_WHILE -> while
2797 * |--LPAREN -> (
2798 * |--EXPR -> EXPR
2799 * | `--LT -> <
2800 * | |--IDENT -> x
2801 * | `--NUM_INT -> 5
2802 * |--RPAREN -> )
2803 * `--SEMI -> ;
2804 * }
2805 *
2806 * @see #SLIST
2807 * @see #EXPR
2808 * @see #EMPTY_STAT
2809 * @see #LPAREN
2810 * @see #RPAREN
2811 * @see #SEMI
2812 */
2813 public static final int LITERAL_DO = JavaLanguageLexer.LITERAL_DO;
2814 /**
2815 * Literal {@code while} in do-while loop.
2816 *
2817 * <p>For example:</p>
2818 * {@snippet :
2819 * do {
2820 *
2821 * } while (a > 0);
2822 * }
2823 *
2824 * <p>parses as:</p>
2825 * {@snippet :
2826 * --LITERAL_DO -> do
2827 * |--SLIST -> {
2828 * | `--RCURLY -> }
2829 * |--DO_WHILE -> while
2830 * |--LPAREN -> (
2831 * |--EXPR -> EXPR
2832 * | `--GT -> >
2833 * | |--IDENT -> a
2834 * | `--NUM_INT -> 0
2835 * |--RPAREN -> )
2836 * `--SEMI -> ;
2837 * }
2838 *
2839 * @see #LITERAL_DO
2840 */
2841 public static final int DO_WHILE = JavaLanguageLexer.DO_WHILE;
2842 /**
2843 * The {@code break} keyword. The first child is an optional
2844 * identifier and the last child is a semicolon.
2845 *
2846 * <p>For example:</p>
2847 * {@snippet :
2848 * for (;;) {
2849 * break;
2850 * }
2851 * }
2852 *
2853 * <p>parses as:</p>
2854 * {@snippet :
2855 * LITERAL_FOR -> for
2856 * |--LPAREN -> (
2857 * |--FOR_INIT -> FOR_INIT
2858 * |--SEMI -> ;
2859 * |--FOR_CONDITION -> FOR_CONDITION
2860 * |--SEMI -> ;
2861 * |--FOR_ITERATOR -> FOR_ITERATOR
2862 * |--RPAREN -> )
2863 * `--SLIST -> {
2864 * |--LITERAL_BREAK -> break
2865 * | `--SEMI -> ;
2866 * `--RCURLY -> }
2867 * }
2868 *
2869 * @see #IDENT
2870 * @see #SEMI
2871 * @see #SLIST
2872 */
2873 public static final int LITERAL_BREAK =
2874 JavaLanguageLexer.LITERAL_BREAK;
2875
2876 /**
2877 * The {@code continue} keyword. The first child is an
2878 * optional identifier and the last child is a semicolon.
2879 *
2880 * <p>For example:</p>
2881 * {@snippet :
2882 * for (;;) {
2883 * continue;
2884 * }
2885 * }
2886 *
2887 * <p>parses as:</p>
2888 * {@snippet :
2889 * LITERAL_FOR -> for
2890 * |--LPAREN -> (
2891 * |--FOR_INIT -> FOR_INIT
2892 * |--SEMI -> ;
2893 * |--FOR_CONDITION -> FOR_CONDITION
2894 * |--SEMI -> ;
2895 * |--FOR_ITERATOR -> FOR_ITERATOR
2896 * |--RPAREN -> )
2897 * `--SLIST -> {
2898 * |--LITERAL_CONTINUE -> continue
2899 * | `--SEMI -> ;
2900 * `--RCURLY -> }
2901 * }
2902 *
2903 * @see #IDENT
2904 * @see #SEMI
2905 * @see #SLIST
2906 */
2907 public static final int LITERAL_CONTINUE =
2908 JavaLanguageLexer.LITERAL_CONTINUE;
2909
2910 /**
2911 * The {@code return} keyword. The first child is an
2912 * optional expression for the return value. The last child is a
2913 * semicolon.
2914 *
2915 * <p>For example:</p>
2916 * {@snippet :
2917 * public int foo(int i) {
2918 * return i+1;
2919 * }
2920 * }
2921 *
2922 * <p>parses as:</p>
2923 * {@snippet :
2924 * METHOD_DEF -> METHOD_DEF
2925 * |--MODIFIERS -> MODIFIERS
2926 * | `--LITERAL_PUBLIC -> public
2927 * |--TYPE -> TYPE
2928 * | `--LITERAL_INT -> int
2929 * |--IDENT -> foo
2930 * |--LPAREN -> (
2931 * |--PARAMETERS -> PARAMETERS
2932 * | `--PARAMETER_DEF -> PARAMETER_DEF
2933 * | |--MODIFIERS -> MODIFIERS
2934 * | |--TYPE -> TYPE
2935 * | | `--LITERAL_INT -> int
2936 * | `--IDENT -> i
2937 * |--RPAREN -> )
2938 * `--SLIST -> {
2939 * |--LITERAL_RETURN -> return
2940 * | |--EXPR -> EXPR
2941 * | | `--PLUS -> +
2942 * | | |--IDENT -> i
2943 * | | `--NUM_INT -> 1
2944 * | `--SEMI -> ;
2945 * `--RCURLY -> }
2946 * }
2947 *
2948 * @see #EXPR
2949 * @see #SEMI
2950 * @see #SLIST
2951 */
2952 public static final int LITERAL_RETURN =
2953 JavaLanguageLexer.LITERAL_RETURN;
2954
2955 /**
2956 * The {@code switch} keyword.
2957 *
2958 * <p>For example:</p>
2959 * {@snippet :
2960 * switch (type) {
2961 * case 0:
2962 * background = Color.red;
2963 * break;
2964 * case 1:
2965 * background = Color.blue;
2966 * break;
2967 * default:
2968 * background = Color.green;
2969 * }
2970 * }
2971 *
2972 * <p>parses as:</p>
2973 * {@snippet :
2974 * LITERAL_SWITCH -> switch
2975 * |--LPAREN -> (
2976 * |--EXPR -> EXPR
2977 * | `--IDENT -> type
2978 * |--RPAREN -> )
2979 * |--LCURLY -> {
2980 * |--CASE_GROUP -> CASE_GROUP
2981 * | |--LITERAL_CASE -> case
2982 * | | |--EXPR -> EXPR
2983 * | | | `--NUM_INT -> 0
2984 * | | `--COLON -> :
2985 * | `--SLIST -> SLIST
2986 * | |--EXPR -> EXPR
2987 * | | `--ASSIGN -> =
2988 * | | |--IDENT -> background
2989 * | | `--DOT -> .
2990 * | | |--IDENT -> Color
2991 * | | `--IDENT -> red
2992 * | |--SEMI -> ;
2993 * | `--LITERAL_BREAK -> break
2994 * | `--SEMI -> ;
2995 * |--CASE_GROUP -> CASE_GROUP
2996 * | |--LITERAL_CASE -> case
2997 * | | |--EXPR -> EXPR
2998 * | | | `--NUM_INT -> 1
2999 * | | `--COLON -> :
3000 * | `--SLIST -> SLIST
3001 * | |--EXPR -> EXPR
3002 * | | `--ASSIGN -> =
3003 * | | |--IDENT -> background
3004 * | | `--DOT -> .
3005 * | | |--IDENT -> Color
3006 * | | `--IDENT -> blue
3007 * | |--SEMI -> ;
3008 * | `--LITERAL_BREAK -> break
3009 * | `--SEMI -> ;
3010 * |--CASE_GROUP -> CASE_GROUP
3011 * | |--LITERAL_DEFAULT -> default
3012 * | | `--COLON -> :
3013 * | `--SLIST -> SLIST
3014 * | |--EXPR -> EXPR
3015 * | | `--ASSIGN -> =
3016 * | | |--IDENT -> background
3017 * | | `--DOT -> .
3018 * | | |--IDENT -> Color
3019 * | | `--IDENT -> green
3020 * | `--SEMI -> ;
3021 * `--RCURLY -> }
3022 * }
3023 *
3024 * @see <a
3025 * href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-14.html#jls-14.10">Java
3026 * Language Specification, §14.10</a>
3027 * @see #LPAREN
3028 * @see #EXPR
3029 * @see #RPAREN
3030 * @see #LCURLY
3031 * @see #CASE_GROUP
3032 * @see #RCURLY
3033 * @see #SLIST
3034 * @see #SWITCH_RULE
3035 */
3036 public static final int LITERAL_SWITCH =
3037 JavaLanguageLexer.LITERAL_SWITCH;
3038
3039 /**
3040 * The {@code throw} keyword. The first child is an
3041 * expression that evaluates to a {@code Throwable} instance.
3042 *
3043 * <p>For example:</p>
3044 * {@snippet :
3045 * throw new ArithmeticException("An exception occurred.");
3046 * }
3047 *
3048 * <p>parses as:</p>
3049 * {@snippet :
3050 * LITERAL_THROW -> throw
3051 * |--EXPR -> EXPR
3052 * | `--LITERAL_NEW -> new
3053 * | |--IDENT -> ArithmeticException
3054 * | |--LPAREN -> (
3055 * | |--ELIST -> ELIST
3056 * | | `--EXPR -> EXPR
3057 * | | `--STRING_LITERAL -> "An exception occurred."
3058 * | `--RPAREN -> )
3059 * `--SEMI -> ;
3060 * }
3061 *
3062 * @see <a
3063 * href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-14.html#jls-14.17">Java
3064 * Language Specification, §14.17</a>
3065 * @see #SLIST
3066 * @see #EXPR
3067 */
3068 public static final int LITERAL_THROW =
3069 JavaLanguageLexer.LITERAL_THROW;
3070
3071 /**
3072 * The {@code else} keyword. This appears as a child of an
3073 * {@code if} statement.
3074 *
3075 * <p>For example:</p>
3076 * {@snippet :
3077 * if (flag) {
3078 *
3079 * } else {
3080 *
3081 * }
3082 * }
3083 *
3084 * <p>parses as:</p>
3085 * {@snippet :
3086 * LITERAL_IF -> if
3087 * |--LPAREN -> (
3088 * |--EXPR -> EXPR
3089 * | `--IDENT -> flag
3090 * |--RPAREN -> )
3091 * |--SLIST -> {
3092 * | `--RCURLY -> }
3093 * `--LITERAL_ELSE -> else
3094 * `--SLIST -> {
3095 * `--RCURLY -> }
3096 * }
3097 *
3098 * @see #SLIST
3099 * @see #EXPR
3100 * @see #EMPTY_STAT
3101 * @see #LITERAL_IF
3102 */
3103 public static final int LITERAL_ELSE =
3104 JavaLanguageLexer.LITERAL_ELSE;
3105
3106 /**
3107 * The {@code case} keyword. The first child is a constant
3108 * expression that evaluates to an integer.
3109 *
3110 * <p>For example:</p>
3111 * {@snippet :
3112 * switch(num){
3113 * case 0:
3114 * num = 1;
3115 * }
3116 * }
3117 *
3118 * <p>parses as:</p>
3119 * {@snippet :
3120 *
3121 * CASE_GROUP -> CASE_GROUP
3122 * |--LITERAL_CASE -> cas
3123 * | |--EXPR -> EXPR
3124 * | | `--NUM_INT -> 0
3125 * | `--COLON -> :
3126 * `--SLIST -> SLIST
3127 * |--EXPR -> EXPR
3128 * | `--ASSIGN -> =
3129 * | |--IDENT -> num
3130 * | `--NUM_INT -> 1
3131 * `--SEMI -> ;
3132 * }
3133 *
3134 * <p>For example:</p>
3135 * {@snippet :
3136 * switch(num){
3137 * case 1 -> num = -1
3138 * }
3139 * }
3140 *
3141 * <p>parses as:</p>
3142 * {@snippet :
3143 * SWITCH_RULE -> SWITCH_RULE
3144 * |--LITERAL_CASE -> case
3145 * | `--EXPR -> EXPR
3146 * | `--NUM_INT -> 1
3147 * |--LAMBDA -> ->
3148 * |--EXPR -> EXPR
3149 * | `--ASSIGN -> =
3150 * | |--IDENT -> num
3151 * | `--UNARY_MINUS -> -
3152 * | `--NUM_INT -> 1
3153 * `--SEMI -> ;
3154 * }
3155 *
3156 * @see #CASE_GROUP
3157 * @see #EXPR
3158 */
3159 public static final int LITERAL_CASE =
3160 JavaLanguageLexer.LITERAL_CASE;
3161
3162 /**
3163 * The {@code default} keyword. This element has no
3164 * children.
3165 *
3166 * <p>For example:</p>
3167 * {@snippet :
3168 * switch (type) {
3169 * case 1:
3170 * x = 1;
3171 * break;
3172 * default:
3173 * x = 3;
3174 * }
3175 * }
3176 *
3177 * <p>parses as:</p>
3178 * {@snippet :
3179 * LITERAL_SWITCH -> switch
3180 * |--LPAREN -> (
3181 * |--EXPR -> EXPR
3182 * | `--IDENT -> type
3183 * |--RPAREN -> )
3184 * |--LCURLY -> {
3185 * |--CASE_GROUP -> CASE_GROUP
3186 * | |--LITERAL_CASE -> case
3187 * | | |--EXPR -> EXPR
3188 * | | | `--NUM_INT -> 1
3189 * | | `--COLON -> :
3190 * | `--SLIST -> SLIST
3191 * | |--EXPR -> EXPR
3192 * | | `--ASSIGN -> =
3193 * | | |--IDENT -> x
3194 * | | `--NUM_INT -> 1
3195 * | | | |--SEMI -> ;
3196 * | `--LITERAL_BREAK -> break
3197 * | `--SEMI -> ;
3198 * |--CASE_GROUP -> CASE_GROUP
3199 * | |--LITERAL_DEFAULT -> default
3200 * | | `--COLON -> :
3201 * | `--SLIST -> SLIST
3202 * | |--EXPR -> EXPR
3203 * | | `--ASSIGN -> =
3204 * | | |--IDENT -> x
3205 * | | `--NUM_INT -> 3
3206 * | `--SEMI -> ;
3207 * `--RCURLY -> }
3208 * }
3209 *
3210 * @see #CASE_GROUP
3211 * @see #MODIFIERS
3212 * @see #SWITCH_RULE
3213 */
3214 public static final int LITERAL_DEFAULT =
3215 JavaLanguageLexer.LITERAL_DEFAULT;
3216
3217 /**
3218 * The {@code try} keyword. The children are a statement
3219 * list, zero or more catch blocks and then an optional finally
3220 * block.
3221 *
3222 * <p>For example:</p>
3223 * {@snippet :
3224 * try { } finally {}
3225 * }
3226 *
3227 * <p>parses as:</p>
3228 * {@snippet :
3229 * LITERAL_TRY -> try
3230 * |--SLIST -> {
3231 * | `--RCURLY -> }
3232 * `--LITERAL_FINALLY -> finally
3233 * `--SLIST -> {
3234 * `--RCURLY -> }
3235 * }
3236 *
3237 * @see <a
3238 * href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-14.html#jls-14.19">Java
3239 * Language Specification, §14.19</a>
3240 * @see #SLIST
3241 * @see #LITERAL_CATCH
3242 * @see #LITERAL_FINALLY
3243 */
3244 public static final int LITERAL_TRY = JavaLanguageLexer.LITERAL_TRY;
3245
3246 /**
3247 * The Java 7 try-with-resources construct.
3248 *
3249 * <p>For example:</p>
3250 * {@snippet :
3251 * try (Foo foo = new Foo(); Bar bar = new Bar()) {
3252 * }
3253 * }
3254 *
3255 * <p>parses as:</p>
3256 * {@snippet :
3257 * LITERAL_TRY -> try
3258 * |--RESOURCE_SPECIFICATION -> RESOURCE_SPECIFICATION
3259 * | |--LPAREN -> (
3260 * | |--RESOURCES -> RESOURCES
3261 * | | |--RESOURCE -> RESOURCE
3262 * | | | |--MODIFIERS -> MODIFIERS
3263 * | | | |--TYPE -> TYPE
3264 * | | | | `--IDENT -> Foo
3265 * | | | |--IDENT -> foo
3266 * | | | `--ASSIGN -> =
3267 * | | | `--EXPR -> EXPR
3268 * | | | `--LITERAL_NEW -> new
3269 * | | | |--IDENT -> Foo
3270 * | | | |--LPAREN -> (
3271 * | | | |--ELIST -> ELIST
3272 * | | | `--RPAREN -> )
3273 * | | |--SEMI -> ;
3274 * | | `--RESOURCE -> RESOURCE
3275 * | | |--MODIFIERS -> MODIFIERS
3276 * | | |--TYPE -> TYPE
3277 * | | | `--IDENT -> Bar
3278 * | | |--IDENT -> bar
3279 * | | `--ASSIGN -> =
3280 * | | `--EXPR -> EXPR
3281 * | | `--LITERAL_NEW -> new
3282 * | | |--IDENT -> Bar
3283 * | | |--LPAREN -> (
3284 * | | |--ELIST -> ELIST
3285 * | | `--RPAREN -> )
3286 * | `--RPAREN -> )
3287 * `--SLIST -> {
3288 * `--RCURLY -> }
3289 * }
3290 *
3291 * <p>Also consider:</p>
3292 * {@snippet :
3293 * try (BufferedReader br = new BufferedReader(new FileReader(path))) {
3294 * }
3295 * }
3296 *
3297 * <p>which parses as:</p>
3298 * {@snippet :
3299 * LITERAL_TRY -> try
3300 * |--RESOURCE_SPECIFICATION -> RESOURCE_SPECIFICATION
3301 * | |--LPAREN -> (
3302 * | |--RESOURCES -> RESOURCES
3303 * | | `--RESOURCE -> RESOURCE
3304 * | | |--MODIFIERS -> MODIFIERS
3305 * | | |--TYPE -> TYPE
3306 * | | | `--IDENT -> BufferedReader
3307 * | | |--IDENT -> br
3308 * | | `--ASSIGN -> =
3309 * | | `--EXPR -> EXPR
3310 * | | `--LITERAL_NEW -> new
3311 * | | |--IDENT -> BufferedReader
3312 * | | |--LPAREN -> (
3313 * | | |--ELIST -> ELIST
3314 * | | | `--EXPR -> EXPR
3315 * | | | `--LITERAL_NEW -> new
3316 * | | | |--IDENT -> FileReader
3317 * | | | |--LPAREN -> (
3318 * | | | |--ELIST -> ELIST
3319 * | | | | `--EXPR -> EXPR
3320 * | | | | `--IDENT -> path
3321 * | | | `--RPAREN -> )
3322 * | | `--RPAREN -> )
3323 * | `--RPAREN -> )
3324 * `--SLIST -> {
3325 * `--RCURLY -> }
3326 * }
3327 *
3328 * @see #LPAREN
3329 * @see #RESOURCES
3330 * @see #RESOURCE
3331 * @see #SEMI
3332 * @see #RPAREN
3333 * @see #LITERAL_TRY
3334 */
3335 public static final int RESOURCE_SPECIFICATION =
3336 JavaLanguageLexer.RESOURCE_SPECIFICATION;
3337
3338 /**
3339 * A list of resources in the Java 7 try-with-resources construct.
3340 * This is a child of RESOURCE_SPECIFICATION.
3341 *
3342 * <p>For example:</p>
3343 * {@snippet :
3344 * try (FileReader fr = new FileReader("config.xml")) {
3345 * } finally {}
3346 * }
3347 *
3348 * <p>parses as:</p>
3349 * {@snippet :
3350 * LITERAL_TRY -> try
3351 * |--RESOURCE_SPECIFICATION -> RESOURCE_SPECIFICATION
3352 * | |--LPAREN -> (
3353 * | |--RESOURCES -> RESOURCES
3354 * | | `--RESOURCE -> RESOURCE
3355 * | | |--MODIFIERS -> MODIFIERS
3356 * | | |--TYPE -> TYPE
3357 * | | | `--IDENT -> FileReader
3358 * | | |--IDENT -> fr
3359 * | | `--ASSIGN -> =
3360 * | | `--EXPR -> EXPR
3361 * | | `--LITERAL_NEW -> new
3362 * | | |--IDENT -> FileReader
3363 * | | |--LPAREN -> (
3364 * | | |--ELIST -> ELIST
3365 * | | | `--EXPR -> EXPR
3366 * | | | `--STRING_LITERAL -> "config.xml"
3367 * | | `--RPAREN -> )
3368 * | `--RPAREN -> )
3369 * |--SLIST -> {
3370 * | `--RCURLY -> }
3371 * `--LITERAL_FINALLY -> finally
3372 * `--SLIST -> {
3373 * `--RCURLY -> }
3374 * }
3375 *
3376 * @see #RESOURCE_SPECIFICATION
3377 */
3378 public static final int RESOURCES =
3379 JavaLanguageLexer.RESOURCES;
3380
3381 /**
3382 * A resource in the Java 7 try-with-resources construct.
3383 * This is a child of RESOURCES.
3384 *
3385 * <p>For example:</p>
3386 * {@snippet :
3387 * try (Foo foo = new Foo(); Bar bar = new Bar()) { }
3388 * }
3389 *
3390 * <p>parses as:</p>
3391 * {@snippet :
3392 * LITERAL_TRY -> try
3393 * |--RESOURCE_SPECIFICATION -> RESOURCE_SPECIFICATION
3394 * | |--LPAREN -> (
3395 * | |--RESOURCES -> RESOURCES
3396 * | | |--RESOURCE -> RESOURCE
3397 * | | | |--MODIFIERS -> MODIFIERS
3398 * | | | |--TYPE -> TYPE
3399 * | | | | `--IDENT -> Foo
3400 * | | | |--IDENT -> foo
3401 * | | | `--ASSIGN -> =
3402 * | | | `--EXPR -> EXPR
3403 * | | | `--LITERAL_NEW -> new
3404 * | | | |--IDENT -> Foo
3405 * | | | |--LPAREN -> (
3406 * | | | |--ELIST -> ELIST
3407 * | | | `--RPAREN -> )
3408 * | | |--SEMI -> ;
3409 * | | `--RESOURCE -> RESOURCE
3410 * | | |--MODIFIERS -> MODIFIERS
3411 * | | |--TYPE -> TYPE
3412 * | | | `--IDENT -> Bar
3413 * | | |--IDENT -> bar
3414 * | | `--ASSIGN -> =
3415 * | | `--EXPR -> EXPR
3416 * | | `--LITERAL_NEW -> new
3417 * | | |--IDENT -> Bar
3418 * | | |--LPAREN -> (
3419 * | | |--ELIST -> ELIST
3420 * | | `--RPAREN -> )
3421 * | `--RPAREN -> )
3422 * `--SLIST -> {
3423 * `--RCURLY -> }
3424 * }
3425 *
3426 * @see #RESOURCES
3427 * @see #RESOURCE_SPECIFICATION
3428 */
3429 public static final int RESOURCE =
3430 JavaLanguageLexer.RESOURCE;
3431
3432 /**
3433 * The {@code catch} keyword.
3434 *
3435 * <p>For example:</p>
3436 * {@snippet :
3437 * try {
3438 * FileReader fr = new FileReader("Test.txt");
3439 * } catch (FileNotFoundException e) {
3440 *
3441 * }
3442 * }
3443 *
3444 * <p>parses as:</p>
3445 * {@snippet :
3446 * LITERAL_TRY -> try
3447 * |--SLIST -> {
3448 * | |--VARIABLE_DEF -> VARIABLE_DEF
3449 * | | |--MODIFIERS -> MODIFIERS
3450 * | | |--TYPE -> TYPE
3451 * | | | `--IDENT -> FileReader
3452 * | | |--IDENT -> fr
3453 * | | `--ASSIGN -> =
3454 * | | `--EXPR -> EXPR
3455 * | | `--LITERAL_NEW -> new
3456 * | | |--IDENT -> FileReader
3457 * | | |--LPAREN -> (
3458 * | | |--ELIST -> ELIST
3459 * | | | `--EXPR -> EXPR
3460 * | | | `--STRING_LITERAL -> "Test.txt"
3461 * | | `--RPAREN -> )
3462 * | |--SEMI -> ;
3463 * | `--RCURLY -> }
3464 * `--LITERAL_CATCH -> catch
3465 * |--LPAREN -> (
3466 * |--PARAMETER_DEF -> PARAMETER_DEF
3467 * | |--MODIFIERS -> MODIFIERS
3468 * | |--TYPE -> TYPE
3469 * | | `--IDENT -> FileNotFoundException
3470 * | `--IDENT -> e
3471 * |--RPAREN -> )
3472 * `--SLIST -> {
3473 * `--RCURLY -> }
3474 * }
3475 *
3476 * @see #LPAREN
3477 * @see #PARAMETER_DEF
3478 * @see #RPAREN
3479 * @see #SLIST
3480 * @see #LITERAL_TRY
3481 */
3482 public static final int LITERAL_CATCH =
3483 JavaLanguageLexer.LITERAL_CATCH;
3484
3485 /**
3486 * The {@code finally} keyword.
3487 *
3488 * <p>For example:</p>
3489 * {@snippet :
3490 * try {} finally {}
3491 * }
3492 *
3493 * <p>parses as:</p>
3494 * {@snippet :
3495 * LITERAL_TRY -> try
3496 * |--SLIST -> {
3497 * | `--RCURLY -> }
3498 * `--LITERAL_FINALLY -> finally
3499 * `--SLIST -> {
3500 * `--RCURLY -> }
3501 * }
3502 *
3503 * @see #SLIST
3504 * @see #LITERAL_TRY
3505 */
3506 public static final int LITERAL_FINALLY =
3507 JavaLanguageLexer.LITERAL_FINALLY;
3508
3509 /**
3510 * The {@code +=} (addition assignment) operator.
3511 *
3512 * <p>For example:</p>
3513 * {@snippet :
3514 * a += b;
3515 * }
3516 *
3517 * <p>parses as:</p>
3518 * {@snippet :
3519 * |--EXPR -> EXPR
3520 * | `--PLUS_ASSIGN -> +=
3521 * | |--IDENT -> a
3522 * | `--IDENT -> b
3523 * |--SEMI -> ;
3524 * }
3525 *
3526 * @see <a
3527 * href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.26.2">Java
3528 * Language Specification, §15.26.2</a>
3529 * @see #EXPR
3530 */
3531 public static final int PLUS_ASSIGN = JavaLanguageLexer.PLUS_ASSIGN;
3532 /**
3533 * The {@code -=} (subtraction assignment) operator.
3534 *
3535 * <p>For example:</p>
3536 * {@snippet :
3537 * a -= b;
3538 * }
3539 *
3540 * <p>parses as:</p>
3541 * {@snippet :
3542 * |--EXPR -> EXPR
3543 * | `--MINUS_ASSIGN -> -=
3544 * | |--IDENT -> a
3545 * | `--IDENT -> b
3546 * |--SEMI -> ;
3547 * }
3548 *
3549 * @see <a
3550 * href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.26.2">Java
3551 * Language Specification, §15.26.2</a>
3552 * @see #EXPR
3553 */
3554 public static final int MINUS_ASSIGN =
3555 JavaLanguageLexer.MINUS_ASSIGN;
3556
3557 /**
3558 * The {@code *=} (multiplication assignment) operator.
3559 *
3560 * <p>For example:</p>
3561 * {@snippet :
3562 * a *= b;
3563 * }
3564 *
3565 * <p>parses as:</p>
3566 * {@snippet :
3567 * |--EXPR -> EXPR
3568 * | `--STAR_ASSIGN -> *=
3569 * | |--IDENT -> a
3570 * | `--IDENT -> b
3571 * |--SEMI -> ;
3572 * }
3573 *
3574 * @see <a
3575 * href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.26.2">Java
3576 * Language Specification, §15.26.2</a>
3577 * @see #EXPR
3578 */
3579 public static final int STAR_ASSIGN = JavaLanguageLexer.STAR_ASSIGN;
3580 /**
3581 * The {@code /=} (division assignment) operator.
3582 *
3583 * <p>For example:</p>
3584 * {@snippet :
3585 * a /= b;
3586 * }
3587 *
3588 * <p>parses as:</p>
3589 * {@snippet :
3590 * |--EXPR -> EXPR
3591 * | `--DIV_ASSIGN -> /=
3592 * | |--IDENT -> a
3593 * | `--IDENT -> b
3594 * |--SEMI -> ;
3595 * }
3596 *
3597 * @see <a
3598 * href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.26.2">Java
3599 * Language Specification, §15.26.2</a>
3600 * @see #EXPR
3601 */
3602 public static final int DIV_ASSIGN = JavaLanguageLexer.DIV_ASSIGN;
3603 /**
3604 * The {@code %=} (remainder assignment) operator.
3605 *
3606 * <p>For example: {@code a %= 2;}</p>
3607 *
3608 * <p>parses as:</p>
3609 * {@snippet :
3610 * |--EXPR -> EXPR
3611 * | `--MOD_ASSIGN -> %=
3612 * | |--IDENT -> a
3613 * | `--NUM_INT -> 2
3614 * |--SEMI -> ;
3615 * }
3616 *
3617 * @see <a
3618 * href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.26.2">Java
3619 * Language Specification, §15.26.2</a>
3620 * @see #EXPR
3621 */
3622 public static final int MOD_ASSIGN = JavaLanguageLexer.MOD_ASSIGN;
3623 /**
3624 * The {@code >>=} (signed right shift assignment)
3625 * operator.
3626 *
3627 * <p>For example:</p>
3628 * {@snippet :
3629 * a >>= b;
3630 * }
3631 *
3632 * <p>parses as:</p>
3633 * {@snippet :
3634 * |--EXPR -> EXPR
3635 * | `--SR_ASSIGN -> >>=
3636 * | |--IDENT -> a
3637 * | `--IDENT -> b
3638 * |--SEMI -> ;
3639 * }
3640 *
3641 * @see <a
3642 * href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.26.2">Java
3643 * Language Specification, §15.26.2</a>
3644 * @see #EXPR
3645 */
3646 public static final int SR_ASSIGN = JavaLanguageLexer.SR_ASSIGN;
3647 /**
3648 * The {@code >>>=} (unsigned right shift assignment)
3649 * operator.
3650 *
3651 * <p>For example:</p>
3652 * {@snippet :
3653 * a >>>= b;
3654 * }
3655 *
3656 * <p>parses as:</p>
3657 * {@snippet :
3658 * |--EXPR -> EXPR
3659 * | `--BSR_ASSIGN -> >>>=
3660 * | |--IDENT -> a
3661 * | `--IDENT -> b
3662 * |--SEMI -> ;
3663 * }
3664 *
3665 * @see <a
3666 * href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.26.2">Java
3667 * Language Specification, §15.26.2</a>
3668 * @see #EXPR
3669 */
3670 public static final int BSR_ASSIGN = JavaLanguageLexer.BSR_ASSIGN;
3671 /**
3672 * The {@code <<=} (left shift assignment) operator.
3673 *
3674 * @see <a
3675 * href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.26.2">Java
3676 * Language Specification, §15.26.2</a>
3677 * @see #EXPR
3678 */
3679 public static final int SL_ASSIGN = JavaLanguageLexer.SL_ASSIGN;
3680 /**
3681 * The {@code &=} (bitwise AND assignment) operator.
3682 *
3683 * <p>For example:</p>
3684 * {@snippet :
3685 * a &= b;
3686 * }
3687 *
3688 * <p>parses as:</p>
3689 * {@snippet :
3690 * |--EXPR -> EXPR
3691 * | `--BAND_ASSIGN -> &=
3692 * | |--IDENT -> a
3693 * | `--IDENT -> b
3694 * |--SEMI -> ;
3695 * }
3696 *
3697 * @see <a
3698 * href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.26.2">Java
3699 * Language Specification, §15.26.2</a>
3700 * @see #EXPR
3701 */
3702 public static final int BAND_ASSIGN = JavaLanguageLexer.BAND_ASSIGN;
3703 /**
3704 * The {@code ^=} (bitwise exclusive OR assignment) operator.
3705 *
3706 * @see <a
3707 * href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.26.2">Java
3708 * Language Specification, §15.26.2</a>
3709 * @see #EXPR
3710 */
3711 public static final int BXOR_ASSIGN = JavaLanguageLexer.BXOR_ASSIGN;
3712 /**
3713 * The {@code |=} (bitwise OR assignment) operator.
3714 *
3715 * <p>For example:</p>
3716 * {@snippet :
3717 * a |= b;
3718 * }
3719 *
3720 * <p>parses as:</p>
3721 * {@snippet :
3722 * |--EXPR -> EXPR
3723 * | `--BOR_ASSIGN -> |=
3724 * | |--IDENT -> a
3725 * | `--IDENT -> b
3726 * |--SEMI -> ;
3727 * }
3728 *
3729 * @see <a
3730 * href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.26.2">Java
3731 * Language Specification, §15.26.2</a>
3732 * @see #EXPR
3733 */
3734 public static final int BOR_ASSIGN = JavaLanguageLexer.BOR_ASSIGN;
3735 /**
3736 * The {@code ?} (conditional) operator. Technically,
3737 * the colon is also part of this operator, but it appears as a
3738 * separate token.
3739 *
3740 * <p>For example:</p>
3741 * {@snippet :
3742 * String variable=(quantity==1)?"true":"false";
3743 * }
3744 *
3745 * <p>parses as:</p>
3746 * {@snippet :
3747 * |--VARIABLE_DEF -> VARIABLE_DEF
3748 * | |--MODIFIERS -> MODIFIERS
3749 * | |--TYPE -> TYPE
3750 * | | `--IDENT -> String
3751 * | |--IDENT -> variable
3752 * | `--ASSIGN -> =
3753 * | `--EXPR -> EXPR
3754 * | `--QUESTION -> ?
3755 * | |--LPAREN -> (
3756 * | |--EQUAL -> ==
3757 * | | |--IDENT -> quantity
3758 * | | `--NUM_INT -> 1
3759 * | |--RPAREN -> )
3760 * | |--STRING_LITERAL -> "true"
3761 * | |--COLON -> :
3762 * | `--STRING_LITERAL -> "false"
3763 * |--SEMI -> ;
3764 * }
3765 *
3766 * @see <a
3767 * href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.25">Java
3768 * Language Specification, §15.25</a>
3769 * @see #EXPR
3770 * @see #COLON
3771 */
3772 public static final int QUESTION = JavaLanguageLexer.QUESTION;
3773 /**
3774 * The {@code ||} (conditional OR) operator.
3775 *
3776 * <p>For example:</p>
3777 * {@snippet :
3778 * if (a || b) {
3779 * }
3780 * }
3781 *
3782 * <p>
3783 * parses as:
3784 * </p>
3785 * {@snippet :
3786 * LITERAL_IF -> if
3787 * |--LPAREN -> (
3788 * |--EXPR -> EXPR
3789 * | `--LOR -> ||
3790 * | |--IDENT -> a
3791 * | `--IDENT -> b
3792 * |--RPAREN -> )
3793 * |--SLIST -> {
3794 * | |--RCURLY -> }
3795 * }
3796 *
3797 * @see <a
3798 * href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.24">Java
3799 * Language Specification, §15.24</a>
3800 * @see #EXPR
3801 */
3802 public static final int LOR = JavaLanguageLexer.LOR;
3803 /**
3804 * The {@code &&} (conditional AND) operator.
3805 *
3806 * <p>For example:</p>
3807 * {@snippet :
3808 * if (a && b) {
3809 * }
3810 * }
3811 *
3812 * <p>parses as:</p>
3813 * {@snippet :
3814 * LITERAL_IF -> if
3815 * |--LPAREN -> (
3816 * |--EXPR -> EXPR
3817 * | `--LAND -> &&
3818 * | |--IDENT -> a
3819 * | `--IDENT -> b
3820 * |--RPAREN -> )
3821 * |--SLIST -> {
3822 * | |--RCURLY -> }
3823 * }
3824 *
3825 * @see <a
3826 * href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.23">Java
3827 * Language Specification, §15.23</a>
3828 * @see #EXPR
3829 */
3830 public static final int LAND = JavaLanguageLexer.LAND;
3831 /**
3832 * The {@code |} (bitwise OR) operator.
3833 *
3834 * <p>For example:</p>
3835 * {@snippet :
3836 * a = a | b;
3837 * }
3838 *
3839 * <p>parses as:</p>
3840 * {@snippet :
3841 * |--EXPR -> EXPR
3842 * | `--ASSIGN -> =
3843 * | |--IDENT -> a
3844 * | `--BOR -> |
3845 * | |--IDENT -> a
3846 * | `--IDENT -> b
3847 * |--SEMI -> ;
3848 * }
3849 *
3850 * @see <a
3851 * href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.22.1">Java
3852 * Language Specification, §15.22.1</a>
3853 * @see #EXPR
3854 */
3855 public static final int BOR = JavaLanguageLexer.BOR;
3856 /**
3857 * The {@code ^} (bitwise exclusive OR) operator.
3858 *
3859 * @see <a
3860 * href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.22.1">Java
3861 * Language Specification, §15.22.1</a>
3862 * @see #EXPR
3863 */
3864 public static final int BXOR = JavaLanguageLexer.BXOR;
3865 /**
3866 * The {@code &} (bitwise AND) operator.
3867 *
3868 * <p>For example:</p>
3869 * {@snippet :
3870 * c = a & b;
3871 * }
3872 *
3873 * <p>parses as:</p>
3874 * {@snippet :
3875 * |--EXPR -> EXPR
3876 * | `--ASSIGN -> =
3877 * | |--IDENT -> c
3878 * | `--BAND -> &
3879 * | |--IDENT -> a
3880 * | `--IDENT -> b
3881 * |--SEMI -> ;
3882 * }
3883 *
3884 * @see <a
3885 * href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.22.1">Java
3886 * Language Specification, §15.22.1</a>
3887 * @see #EXPR
3888 */
3889 public static final int BAND = JavaLanguageLexer.BAND;
3890 /**
3891 * The {@code !=} (not equal) operator.
3892 *
3893 * <p>For example:</p>
3894 * {@snippet :
3895 * a != b;
3896 * }
3897 *
3898 * <p>parses as:</p>
3899 * {@snippet :
3900 * |--EXPR -> EXPR
3901 * | `--NOT_EQUAL -> !=
3902 * | |--IDENT -> a
3903 * | `--IDENT -> b
3904 * `--SEMI -> ;
3905 * }
3906 *
3907 * @see #EXPR
3908 */
3909 public static final int NOT_EQUAL = JavaLanguageLexer.NOT_EQUAL;
3910 /**
3911 * The {@code ==} (equal) operator.
3912 *
3913 * <p>For example:</p>
3914 * {@snippet :
3915 * return a == b;
3916 * }
3917 *
3918 * <p>parses as:</p>
3919 * {@snippet :
3920 * |--EXPR -> EXPR
3921 * | `--EQUAL -> ==
3922 * | |--IDENT -> a
3923 * | `--IDENT -> b
3924 * `--SEMI -> ;
3925 * }
3926 *
3927 * @see #EXPR
3928 */
3929 public static final int EQUAL = JavaLanguageLexer.EQUAL;
3930 /**
3931 * The {@code <} (less than) operator.
3932 *
3933 * <p>For example:</p>
3934 * {@snippet :
3935 * c = a < b;
3936 * }
3937 *
3938 * <p>parses as:</p>
3939 * {@snippet :
3940 * |--EXPR -> EXPR
3941 * | `--ASSIGN -> =
3942 * | |--IDENT -> c
3943 * | `--LT -> <
3944 * | |--IDENT -> a
3945 * | `--IDENT -> b
3946 * |--SEMI -> ;
3947 * }
3948 *
3949 * @see #EXPR
3950 */
3951 public static final int LT = JavaLanguageLexer.LT;
3952 /**
3953 * The {@code >} (greater than) operator.
3954 *
3955 * <p>For example:</p>
3956 * {@snippet :
3957 * c = a > b;
3958 * }
3959 *
3960 * <p>parses as:</p>
3961 * {@snippet :
3962 * |--EXPR -> EXPR
3963 * | `--ASSIGN -> =
3964 * | |--IDENT -> c
3965 * | `--BAND -> >
3966 * | |--IDENT -> a
3967 * | `--IDENT -> b
3968 * |--SEMI -> ;
3969 * }
3970 *
3971 * @see #EXPR
3972 */
3973 public static final int GT = JavaLanguageLexer.GT;
3974 /**
3975 * The {@code <=} (less than or equal) operator.
3976 *
3977 * <p>For example:</p>
3978 * {@snippet :
3979 * c = a <= b;
3980 * }
3981 *
3982 * <p>parses as:</p>
3983 * {@snippet :
3984 * |--EXPR -> EXPR
3985 * | `--ASSIGN -> =
3986 * | |--IDENT -> c
3987 * | `--LE -> <=
3988 * | |--IDENT -> a
3989 * | `--IDENT -> b
3990 * |--SEMI -> ;
3991 * }
3992 *
3993 * @see #EXPR
3994 */
3995 public static final int LE = JavaLanguageLexer.LE;
3996 /**
3997 * The {@code >=} (greater than or equal) operator.
3998 *
3999 * <p>For example:</p>
4000 * {@snippet :
4001 * boolean b = a >= 3;
4002 * }
4003 *
4004 * <p>parses as:</p>
4005 * {@snippet :
4006 * VARIABLE_DEF -> VARIABLE_DEF
4007 * |--MODIFIERS -> MODIFIERS
4008 * |--TYPE -> TYPE
4009 * | `--LITERAL_BOOLEAN -> boolean
4010 * |--IDENT -> b
4011 * `--ASSIGN -> =
4012 * `--EXPR -> EXPR
4013 * `--GE -> >=
4014 * |--IDENT -> a
4015 * `--NUM_INT -> 3
4016 * }
4017 *
4018 * @see #EXPR
4019 */
4020 public static final int GE = JavaLanguageLexer.GE;
4021 /**
4022 * The {@code instanceof} operator. The first child is an
4023 * object reference or something that evaluates to an object
4024 * reference. The second child is a reference type or pattern.
4025 *
4026 * <p>For example:</p>
4027 * {@snippet :
4028 * boolean isBuilderReferenceType = text instanceof StringBuilder; // reference type
4029 * boolean isBuilderPatternWithPattern =
4030 * text instanceof StringBuilder s; // type pattern, no `PATTERN_DEF`
4031 * }
4032 *
4033 * <p>parses as:</p>
4034 * {@snippet :
4035 * |--VARIABLE_DEF -> VARIABLE_DEF
4036 * | |--MODIFIERS -> MODIFIERS
4037 * | |--TYPE -> TYPE
4038 * | | `--LITERAL_BOOLEAN -> boolean
4039 * | |--IDENT -> isBuilderReferenceType
4040 * | `--ASSIGN -> =
4041 * | `--EXPR -> EXPR
4042 * | `--LITERAL_INSTANCEOF -> instanceof
4043 * | |--IDENT -> text
4044 * | `--TYPE -> TYPE
4045 * | `--IDENT -> StringBuilder
4046 * |--SEMI -> ;
4047 * |--VARIABLE_DEF -> VARIABLE_DEF
4048 * | |--MODIFIERS -> MODIFIERS
4049 * | |--TYPE -> TYPE
4050 * | | `--LITERAL_BOOLEAN -> boolean
4051 * | |--IDENT -> isBuilderPatternWithPattern
4052 * | `--ASSIGN -> =
4053 * | `--EXPR -> EXPR
4054 * | `--LITERAL_INSTANCEOF -> instanceof
4055 * | |--IDENT -> text
4056 * | `--PATTERN_VARIABLE_DEF -> PATTERN_VARIABLE_DEF
4057 * | |--MODIFIERS -> MODIFIERS
4058 * | |--TYPE -> TYPE
4059 * | | `--IDENT -> StringBuilder
4060 * | `--IDENT -> s
4061 * |--SEMI -> ;
4062 * }
4063 *
4064 * @see <a
4065 * href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.20.2">Java
4066 * Language Specification, §15.20.2</a>
4067 * @see #EXPR
4068 * @see #METHOD_CALL
4069 * @see #IDENT
4070 * @see #DOT
4071 * @see #TYPE
4072 * @see #PATTERN_VARIABLE_DEF
4073 * @see FullIdent
4074 */
4075 public static final int LITERAL_INSTANCEOF =
4076 JavaLanguageLexer.LITERAL_INSTANCEOF;
4077
4078 /**
4079 * The {@code <<} (shift left) operator.
4080 *
4081 * <p>For example:</p>
4082 * {@snippet :
4083 * a = a << b;
4084 * }
4085 *
4086 * <p>parses as:</p>
4087 * {@snippet :
4088 * |--EXPR -> EXPR
4089 * | `--ASSIGN -> =
4090 * | |--IDENT -> a
4091 * | `--SR -> <<
4092 * | |--IDENT -> a
4093 * | `--IDENT -> b
4094 * |--SEMI -> ;
4095 * }
4096 *
4097 * @see <a
4098 * href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.19">Java
4099 * Language Specification, §15.19</a>
4100 * @see #EXPR
4101 */
4102 public static final int SL = JavaLanguageLexer.SL;
4103 /**
4104 * The {@code >>} (signed shift right) operator.
4105 *
4106 * <p>For example:</p>
4107 * {@snippet :
4108 * a = a >> b;
4109 * }
4110 *
4111 * <p>parses as:</p>
4112 * {@snippet :
4113 * |--EXPR -> EXPR
4114 * | `--ASSIGN -> =
4115 * | |--IDENT -> a
4116 * | `--SR -> >>
4117 * | |--IDENT -> a
4118 * | `--IDENT -> b
4119 * |--SEMI -> ;
4120 * }
4121 *
4122 * @see <a
4123 * href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.19">Java
4124 * Language Specification, §15.19</a>
4125 * @see #EXPR
4126 */
4127 public static final int SR = JavaLanguageLexer.SR;
4128 /**
4129 * The {@code >>>} (unsigned shift right) operator.
4130 *
4131 * <p>For example:</p>
4132 * {@snippet :
4133 * a >>> b;
4134 * }
4135 *
4136 * <p>parses as:</p>
4137 * {@snippet :
4138 * |--EXPR -> EXPR
4139 * | `--BSR -> >>>
4140 * | |--IDENT -> a
4141 * | `--IDENT -> b
4142 * |--SEMI -> ;
4143 * }
4144 *
4145 * @see <a
4146 * href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.19">Java
4147 * Language Specification, §15.19</a>
4148 * @see #EXPR
4149 */
4150 public static final int BSR = JavaLanguageLexer.BSR;
4151 /**
4152 * The {@code +} (addition) operator.
4153 *
4154 * <p>For example:</p>
4155 * {@snippet :
4156 * c = a + b;
4157 * }
4158 *
4159 * <p>parses as:</p>
4160 * {@snippet :
4161 * |--EXPR -> EXPR
4162 * | `--ASSIGN -> =
4163 * | |--IDENT -> c
4164 * | `--PLUS -> +
4165 * | |--IDENT -> a
4166 * | `--IDENT -> b
4167 * |--SEMI -> ;
4168 * }
4169 *
4170 * @see <a
4171 * href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.18">Java
4172 * Language Specification, §15.18</a>
4173 * @see #EXPR
4174 */
4175 public static final int PLUS = JavaLanguageLexer.PLUS;
4176 /**
4177 * The {@code -} (subtraction) operator.
4178 *
4179 * <p>For example:</p>
4180 * {@snippet :
4181 * c = a - b;
4182 * }
4183 *
4184 * <p>parses as:</p>
4185 * {@snippet :
4186 * |--EXPR -> EXPR
4187 * | `--ASSIGN -> =
4188 * | |--IDENT -> c
4189 * | `--MINUS -> -
4190 * | |--IDENT -> a
4191 * | `--IDENT -> b
4192 * |--SEMI -> ;
4193 * }
4194 *
4195 * @see <a
4196 * href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.18">Java
4197 * Language Specification, §15.18</a>
4198 * @see #EXPR
4199 */
4200 public static final int MINUS = JavaLanguageLexer.MINUS;
4201 /**
4202 * The {@code /} (division) operator.
4203 *
4204 * <p>For example:</p>
4205 * {@snippet :
4206 * a = 4 / 2;
4207 * }
4208 *
4209 * <p>parses as:</p>
4210 * {@snippet :
4211 * |--EXPR -> EXPR
4212 * | `--ASSIGN -> =
4213 * | |--IDENT -> a
4214 * | `--DIV -> /
4215 * | |--NUM_INT -> 4
4216 * | `--NUM_INT -> 2
4217 * |--SEMI -> ;
4218 * }
4219 *
4220 * @see <a
4221 * href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.17.2">Java
4222 * Language Specification, §15.17.2</a>
4223 * @see #EXPR
4224 */
4225 public static final int DIV = JavaLanguageLexer.DIV;
4226 /**
4227 * The {@code %} (remainder) operator.
4228 *
4229 * <p>For example:</p>
4230 * {@snippet :
4231 * c = a % b;
4232 * }
4233 *
4234 * <p>parses as:</p>
4235 * {@snippet :
4236 * EXPR -> EXPR
4237 * `--ASSIGN -> =
4238 * |--IDENT -> c
4239 * `--MOD -> %
4240 * |--IDENT -> a
4241 * `--IDENT -> b
4242 * SEMI -> ;
4243 * }
4244 *
4245 * @see <a
4246 * href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.17.3">Java
4247 * Language Specification, §15.17.3</a>
4248 * @see #EXPR
4249 */
4250 public static final int MOD = JavaLanguageLexer.MOD;
4251 /**
4252 * The {@code ++} (prefix increment) operator.
4253 *
4254 * <p>For example:</p>
4255 * {@snippet :
4256 * ++a;
4257 * }
4258 *
4259 * <p>parses as:</p>
4260 * {@snippet :
4261 * |--EXPR -> EXPR
4262 * | `--INC -> ++
4263 * | `--IDENT -> a
4264 * |--SEMI -> ;
4265 * }
4266 *
4267 * @see <a
4268 * href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.15.1">Java
4269 * Language Specification, §15.15.1</a>
4270 * @see #EXPR
4271 * @see #POST_INC
4272 */
4273 public static final int INC = JavaLanguageLexer.INC;
4274 /**
4275 * The {@code --} (prefix decrement) operator.
4276 *
4277 * <p>For example:</p>
4278 * {@snippet :
4279 * --a;
4280 * }
4281 *
4282 * <p>parses as:</p>
4283 * {@snippet :
4284 * |--EXPR -> EXPR
4285 * | `--DEC -> --
4286 * | `--IDENT -> a
4287 * |--SEMI -> ;
4288 * }
4289 *
4290 * @see <a
4291 * href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.15.2">Java
4292 * Language Specification, §15.15.2</a>
4293 * @see #EXPR
4294 * @see #POST_DEC
4295 */
4296 public static final int DEC = JavaLanguageLexer.DEC;
4297 /**
4298 * The {@code ~} (bitwise complement) operator.
4299 *
4300 * <p>For example:</p>
4301 * {@snippet :
4302 * a = ~ a;
4303 * }
4304 *
4305 * <p>parses as:</p>
4306 * {@snippet :
4307 * |--EXPR -> EXPR
4308 * | `--ASSIGN -> =
4309 * | |--IDENT -> a
4310 * | `--BNOT -> ~
4311 * | `--IDENT -> a
4312 * |--SEMI -> ;
4313 * }
4314 *
4315 * @see <a
4316 * href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.15.5">Java
4317 * Language Specification, §15.15.5</a>
4318 * @see #EXPR
4319 */
4320 public static final int BNOT = JavaLanguageLexer.BNOT;
4321 /**
4322 * The {@code !} (logical complement) operator.
4323 *
4324 * <p>For example:</p>
4325 * {@snippet :
4326 * c = ! a;
4327 * }
4328 *
4329 * <p>parses as:</p>
4330 * {@snippet :
4331 * |--EXPR -> EXPR
4332 * | `--ASSIGN -> =
4333 * | |--IDENT -> c
4334 * | `--LNOT -> !
4335 * | `--IDENT -> a
4336 * |--SEMI -> ;
4337 * }
4338 *
4339 * @see <a
4340 * href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.15.6">Java
4341 * Language Specification, §15.15.6</a>
4342 * @see #EXPR
4343 */
4344 public static final int LNOT = JavaLanguageLexer.LNOT;
4345 /**
4346 * The {@code true} keyword.
4347 *
4348 * <p>For example:</p>
4349 * {@snippet :
4350 * boolean a = true;
4351 * }
4352 *
4353 * <p>parses as:</p>
4354 * {@snippet :
4355 * |--VARIABLE_DEF -> VARIABLE_DEF
4356 * | |--MODIFIERS -> MODIFIERS
4357 * | |--TYPE -> TYPE
4358 * | | `--LITERAL_BOOLEAN -> boolean
4359 * | |--IDENT -> a
4360 * | `--ASSIGN -> =
4361 * | `--EXPR -> EXPR
4362 * | `--LITERAL_TRUE -> true
4363 * |--SEMI -> ;
4364 * }
4365 *
4366 * @see <a
4367 * href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-3.html#jls-3.10.3">Java
4368 * Language Specification, §3.10.3</a>
4369 * @see #EXPR
4370 * @see #LITERAL_FALSE
4371 */
4372 public static final int LITERAL_TRUE =
4373 JavaLanguageLexer.LITERAL_TRUE;
4374
4375 /**
4376 * The {@code false} keyword.
4377 *
4378 * <p>For example:</p>
4379 * {@snippet :
4380 * boolean a = false;
4381 * }
4382 *
4383 * <p>parses as:</p>
4384 * {@snippet :
4385 * VARIABLE_DEF -> VARIABLE_DEF
4386 * |--MODIFIERS -> MODIFIERS
4387 * |--TYPE -> TYPE
4388 * | `--LITERAL_BOOLEAN -> boolean
4389 * |--IDENT -> a
4390 * |--ASSIGN -> =
4391 * | `--EXPR -> EXPR
4392 * | `--LITERAL_FALSE -> false
4393 * `--SEMI -> ;
4394 * }
4395 *
4396 * @see <a
4397 * href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-3.html#jls-3.10.3">Java
4398 * Language Specification, §3.10.3</a>
4399 * @see #EXPR
4400 * @see #LITERAL_TRUE
4401 */
4402 public static final int LITERAL_FALSE =
4403 JavaLanguageLexer.LITERAL_FALSE;
4404
4405 /**
4406 * The {@code null} keyword.
4407 *
4408 * <p>For example:</p>
4409 * {@snippet :
4410 * String s = null;
4411 * }
4412 *
4413 * <p>parses as:</p>
4414 * {@snippet :
4415 * VARIABLE_DEF -> VARIABLE_DEF
4416 * |--MODIFIERS -> MODIFIERS
4417 * |--TYPE -> TYPE
4418 * | `--IDENT -> String
4419 * |--IDENT -> s
4420 * |--ASSIGN -> =
4421 * | `--EXPR -> EXPR
4422 * | `--LITERAL_NULL -> null
4423 * `--SEMI -> ;
4424 * }
4425 *
4426 * @see <a
4427 * href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-3.html#jls-3.10.7">Java
4428 * Language Specification, §3.10.7</a>
4429 * @see #EXPR
4430 */
4431 public static final int LITERAL_NULL =
4432 JavaLanguageLexer.LITERAL_NULL;
4433
4434 /**
4435 * The {@code new} keyword. This element is used to define
4436 * new instances of objects, new arrays, and new anonymous inner
4437 * classes.
4438 *
4439 * <p>For example:</p>
4440 *
4441 * {@snippet :
4442 * List<String> l = new ArrayList<String>();
4443 * }
4444 *
4445 * <p>parses as:</p>
4446 * {@snippet :
4447 * VARIABLE_DEF -> VARIABLE_DEF
4448 * |--MODIFIERS -> MODIFIERS
4449 * |--TYPE -> TYPE
4450 * | |--IDENT -> List
4451 * | `--TYPE_ARGUMENTS -> TYPE_ARGUMENTS
4452 * | |--GENERIC_START -> <
4453 * | |--TYPE_ARGUMENT -> TYPE_ARGUMENT
4454 * | | `--IDENT -> String
4455 * | `--GENERIC_END -> >
4456 * |--IDENT -> l
4457 * |--ASSIGN -> =
4458 * | `--EXPR -> EXPR
4459 * | `--LITERAL_NEW -> new
4460 * | |--IDENT -> ArrayList
4461 * | |--TYPE_ARGUMENTS -> TYPE_ARGUMENTS
4462 * | | |--GENERIC_START -> <
4463 * | | |--TYPE_ARGUMENT -> TYPE_ARGUMENT
4464 * | | | `--IDENT -> String
4465 * | | `--GENERIC_END -> >
4466 * | |--LPAREN -> (
4467 * | |--ELIST -> ELIST
4468 * | `--RPAREN -> )
4469 * `--SEMI -> ;
4470 * }
4471 *
4472 * <p>For example:</p>
4473 * {@snippet :
4474 * String[] strings = new String[3];
4475 * }
4476 *
4477 * <p>parses as:</p>
4478 * {@snippet :
4479 * VARIABLE_DEF -> VARIABLE_DEF
4480 * |--MODIFIERS -> MODIFIERS
4481 * |--TYPE -> TYPE
4482 * | |--IDENT -> String
4483 * | `--ARRAY_DECLARATOR -> [
4484 * | `--RBRACK -> ]
4485 * |--IDENT -> strings
4486 * |--ASSIGN -> =
4487 * | `--EXPR -> EXPR
4488 * | `--LITERAL_NEW -> new
4489 * | |--IDENT -> String
4490 * | `--ARRAY_DECLARATOR -> [
4491 * | |--EXPR -> EXPR
4492 * | | `--NUM_INT -> 3
4493 * | `--RBRACK -> ]
4494 * `--SEMI -> ;
4495 * }
4496 *
4497 * <p>For example:</p>
4498 * {@snippet :
4499 * Supplier<Integer> s = new Supplier<>() {
4500 * @Override
4501 * public Integer get() {
4502 * return 42;
4503 * }
4504 * };
4505 * }
4506 *
4507 * <p>parses as:</p>
4508 * {@snippet :
4509 * VARIABLE_DEF -> VARIABLE_DEF
4510 * |--MODIFIERS -> MODIFIERS
4511 * |--TYPE -> TYPE
4512 * | |--IDENT -> Supplier
4513 * | `--TYPE_ARGUMENTS -> TYPE_ARGUMENTS
4514 * | |--GENERIC_START -> <
4515 * | |--TYPE_ARGUMENT -> TYPE_ARGUMENT
4516 * | | `--IDENT -> Integer
4517 * | `--GENERIC_END -> >
4518 * |--IDENT -> s
4519 * |--ASSIGN -> =
4520 * | `--EXPR -> EXPR
4521 * | `--LITERAL_NEW -> new
4522 * | |--IDENT -> Supplier
4523 * | |--TYPE_ARGUMENTS -> TYPE_ARGUMENTS
4524 * | | |--GENERIC_START -> <
4525 * | | `--GENERIC_END -> >
4526 * | |--LPAREN -> (
4527 * | |--ELIST -> ELIST
4528 * | |--RPAREN -> )
4529 * | `--OBJBLOCK -> OBJBLOCK
4530 * | |--LCURLY -> {
4531 * | |--METHOD_DEF -> METHOD_DEF
4532 * | | |--MODIFIERS -> MODIFIERS
4533 * | | | |--ANNOTATION -> ANNOTATION
4534 * | | | | |--AT -> @
4535 * | | | | `--IDENT -> Override
4536 * | | | `--LITERAL_PUBLIC -> public
4537 * | | |--TYPE -> TYPE
4538 * | | | `--IDENT -> Integer
4539 * | | |--IDENT -> get
4540 * | | |--LPAREN -> (
4541 * | | |--PARAMETERS -> PARAMETERS
4542 * | | |--RPAREN -> )
4543 * | | `--SLIST -> {
4544 * | | |--LITERAL_RETURN -> return
4545 * | | | |--EXPR -> EXPR
4546 * | | | | `--NUM_INT -> 42
4547 * | | | `--SEMI -> ;
4548 * | | `--RCURLY -> }
4549 * | `--RCURLY -> }
4550 * `--SEMI -> ;
4551 * }
4552 *
4553 * @see #IDENT
4554 * @see #DOT
4555 * @see #LPAREN
4556 * @see #ELIST
4557 * @see #RPAREN
4558 * @see #OBJBLOCK
4559 * @see #ARRAY_INIT
4560 * @see FullIdent
4561 */
4562 public static final int LITERAL_NEW = JavaLanguageLexer.LITERAL_NEW;
4563 /**
4564 * An integer literal. These may be specified in decimal,
4565 * hexadecimal, or octal form.
4566 *
4567 * <p>For example:</p>
4568 * {@snippet :
4569 * a = 3;
4570 * }
4571 *
4572 * <p>parses as:</p>
4573 * {@snippet :
4574 * |--EXPR -> EXPR
4575 * | `--ASSIGN -> =
4576 * | |--IDENT -> a
4577 * | `--NUM_INT -> 3
4578 * |--SEMI -> ;
4579 * }
4580 *
4581 * @see <a
4582 * href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-3.html#jls-3.10.1">Java
4583 * Language Specification, §3.10.1</a>
4584 * @see #EXPR
4585 * @see #NUM_LONG
4586 */
4587 public static final int NUM_INT = JavaLanguageLexer.NUM_INT;
4588 /**
4589 * A character literal. This is a (possibly escaped) character
4590 * enclosed in single quotes.
4591 *
4592 * <p>For example:</p>
4593 * {@snippet :
4594 * return 'a';
4595 * }
4596 *
4597 * <p>parses as:</p>
4598 * {@snippet :
4599 * --LITERAL_RETURN -> return
4600 * |--EXPR -> EXPR
4601 * | `--CHAR_LITERAL -> 'a'
4602 * `--SEMI -> ;
4603 * }
4604 *
4605 * @see <a
4606 * href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-3.html#jls-3.10.4">Java
4607 * Language Specification, §3.10.4</a>
4608 * @see #EXPR
4609 */
4610 public static final int CHAR_LITERAL =
4611 JavaLanguageLexer.CHAR_LITERAL;
4612
4613 /**
4614 * A string literal. This is a sequence of (possibly escaped)
4615 * characters enclosed in double quotes.
4616 *
4617 * <p>For example: {@code String str = "StringLiteral";}</p>
4618 *
4619 * <p>parses as:</p>
4620 * {@snippet :
4621 * |--VARIABLE_DEF -> VARIABLE_DEF
4622 * | |--MODIFIERS -> MODIFIERS
4623 * | |--TYPE -> TYPE
4624 * | | `--IDENT -> String
4625 * | |--IDENT -> str
4626 * | `--ASSIGN -> =
4627 * | `--EXPR -> EXPR
4628 * | `--STRING_LITERAL -> "StringLiteral"
4629 * |--SEMI -> ;
4630 * }
4631 *
4632 * @see <a
4633 * href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-3.html#jls-3.10.5">Java
4634 * Language Specification, §3.10.5</a>
4635 * @see #EXPR
4636 */
4637 public static final int STRING_LITERAL =
4638 JavaLanguageLexer.STRING_LITERAL;
4639
4640 /**
4641 * A single precision floating point literal. This is a floating
4642 * point number with an {@code F} or {@code f} suffix.
4643 *
4644 * <p>For example:</p>
4645 * {@snippet :
4646 * a = 3.14f;
4647 * }
4648 *
4649 * <p>parses as:</p>
4650 * {@snippet :
4651 * |--EXPR -> EXPR
4652 * | `--ASSIGN -> =
4653 * | |--IDENT -> a
4654 * | `--NUM_FLOAT -> 3.14f
4655 * |--SEMI -> ;
4656 * }
4657 *
4658 * @see <a
4659 * href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-3.html#jls-3.10.2">Java
4660 * Language Specification, §3.10.2</a>
4661 * @see #EXPR
4662 * @see #NUM_DOUBLE
4663 */
4664 public static final int NUM_FLOAT = JavaLanguageLexer.NUM_FLOAT;
4665 /**
4666 * A long integer literal. These are almost the same as integer
4667 * literals, but they have an {@code L} or {@code l}
4668 * (ell) suffix.
4669 *
4670 * <p>For example:</p>
4671 * {@snippet :
4672 * a = 3l;
4673 * }
4674 *
4675 * <p>parses as:</p>
4676 * {@snippet :
4677 * |--EXPR -> EXPR
4678 * | `--ASSIGN -> =
4679 * | |--IDENT -> a
4680 * | `--NUM_LONG -> 3l
4681 * |--SEMI -> ;
4682 * }
4683 *
4684 * @see <a
4685 * href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-3.html#jls-3.10.1">Java
4686 * Language Specification, §3.10.1</a>
4687 * @see #EXPR
4688 * @see #NUM_INT
4689 */
4690 public static final int NUM_LONG = JavaLanguageLexer.NUM_LONG;
4691 /**
4692 * A double precision floating point literal. This is a floating
4693 * point number with an optional {@code D} or {@code d}
4694 * suffix.
4695 *
4696 * <p>For example:</p>
4697 * {@snippet :
4698 * a = 3.14d;
4699 * }
4700 *
4701 * <p>parses as:</p>
4702 * {@snippet :
4703 * |--EXPR -> EXPR
4704 * | `--ASSIGN -> =
4705 * | |--IDENT -> a
4706 * | `--NUM_DOUBLE -> 3.14d
4707 * |--SEMI -> ;
4708 * }
4709 *
4710 * @see <a
4711 * href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-3.html#jls-3.10.2">Java
4712 * Language Specification, §3.10.2</a>
4713 * @see #EXPR
4714 * @see #NUM_FLOAT
4715 */
4716 public static final int NUM_DOUBLE = JavaLanguageLexer.NUM_DOUBLE;
4717
4718 /**
4719 * The {@code assert} keyword. This is only for Java 1.4 and
4720 * later.
4721 *
4722 * <p>For example:</p>
4723 * {@snippet :
4724 * assert(x==4);
4725 * }
4726 *
4727 * <p>parses as:</p>
4728 * {@snippet :
4729 * LITERAL_ASSERT -> assert
4730 * |--EXPR -> EXPR
4731 * | |--LPAREN -> (
4732 * | |--EQUAL -> ==
4733 * | | |--IDENT -> x
4734 * | | `--NUM_INT -> 4
4735 * | `--RPAREN -> )
4736 * `--SEMI -> ;
4737 * }
4738 */
4739 public static final int LITERAL_ASSERT = JavaLanguageLexer.ASSERT;
4740
4741 /**
4742 * A static import declaration. Static import declarations are optional,
4743 * but must appear after the package declaration and before the type
4744 * declaration.
4745 *
4746 * <p>For example:</p>
4747 * {@snippet :
4748 * import static java.io.IOException;
4749 * }
4750 *
4751 * <p>parses as:</p>
4752 * {@snippet :
4753 * STATIC_IMPORT -> import
4754 * |--LITERAL_STATIC -> static
4755 * |--DOT -> .
4756 * | |--DOT -> .
4757 * | | |--IDENT -> java
4758 * | | `--IDENT -> io
4759 * | `--IDENT -> IOException
4760 * `--SEMI -> ;
4761 * }
4762 *
4763 * @see <a href="https://www.jcp.org/en/jsr/detail?id=201">
4764 * JSR201</a>
4765 * @see #LITERAL_STATIC
4766 * @see #DOT
4767 * @see #IDENT
4768 * @see #STAR
4769 * @see #SEMI
4770 * @see FullIdent
4771 */
4772 public static final int STATIC_IMPORT =
4773 JavaLanguageLexer.STATIC_IMPORT;
4774
4775 /**
4776 * An enum declaration. Its notable children are
4777 * enum constant declarations followed by
4778 * any construct that may be expected in a class body.
4779 *
4780 * <p>For example:</p>
4781 * {@snippet :
4782 * public enum MyEnum
4783 * implements Serializable
4784 * {
4785 * FIRST_CONSTANT,
4786 * SECOND_CONSTANT;
4787 *
4788 * public void someMethod()
4789 * {
4790 * }
4791 * }
4792 * }
4793 *
4794 * <p>parses as:</p>
4795 * {@snippet :
4796 * ENUM_DEF -> ENUM_DEF
4797 * |--MODIFIERS -> MODIFIERS
4798 * | `--LITERAL_PUBLIC -> public
4799 * |--ENUM -> enum
4800 * |--IDENT -> MyEnum
4801 * |--IMPLEMENTS_CLAUSE -> implements
4802 * | `--IDENT -> Serializable
4803 * `--OBJBLOCK -> OBJBLOCK
4804 * |--LCURLY -> {
4805 * |--ENUM_CONSTANT_DEF -> ENUM_CONSTANT_DEF
4806 * | |--ANNOTATIONS -> ANNOTATIONS
4807 * | `--IDENT -> FIRST_CONSTANT
4808 * |--COMMA -> ,
4809 * |--ENUM_CONSTANT_DEF -> ENUM_CONSTANT_DEF
4810 * | |--ANNOTATIONS -> ANNOTATIONS
4811 * | `--IDENT -> SECOND_CONSTANT
4812 * |--SEMI -> ;
4813 * |--METHOD_DEF -> METHOD_DEF
4814 * | |--MODIFIERS -> MODIFIERS
4815 * | | `--LITERAL_PUBLIC -> public
4816 * | |--TYPE -> TYPE
4817 * | | `--LITERAL_VOID -> void
4818 * | |--IDENT -> someMethod
4819 * | |--LPAREN -> (
4820 * | |--PARAMETERS -> PARAMETERS
4821 * | |--RPAREN -> )
4822 * | `--SLIST -> {
4823 * | `--RCURLY -> }
4824 * `--RCURLY -> }
4825 * }
4826 *
4827 * @see <a href="https://www.jcp.org/en/jsr/detail?id=201">
4828 * JSR201</a>
4829 * @see #MODIFIERS
4830 * @see #ENUM
4831 * @see #IDENT
4832 * @see #EXTENDS_CLAUSE
4833 * @see #IMPLEMENTS_CLAUSE
4834 * @see #OBJBLOCK
4835 * @see #LITERAL_NEW
4836 * @see #ENUM_CONSTANT_DEF
4837 */
4838 public static final int ENUM_DEF =
4839 JavaLanguageLexer.ENUM_DEF;
4840
4841 /**
4842 * The {@code enum} keyword. This element appears
4843 * as part of an enum declaration.
4844 *
4845 * <p>For example:</p>
4846 * {@snippet :
4847 * public enum Count {}
4848 * }
4849 *
4850 * <p>parses as:</p>
4851 * {@snippet :
4852 * ENUM_DEF -> ENUM_DEF
4853 * |--MODIFIERS -> MODIFIERS
4854 * | `--LITERAL_PUBLIC -> public
4855 * |--ENUM -> enum
4856 * |--IDENT -> Count
4857 * `--OBJBLOCK -> OBJBLOCK
4858 * |--LCURLY -> {
4859 * `--RCURLY -> }
4860 * }
4861 *
4862 * @see <a href="https://www.jcp.org/en/jsr/detail?id=201">JSR201</a>
4863 * @see #MODIFIERS
4864 * @see #ENUM_DEF
4865 * @see #IDENT
4866 * @see #OBJBLOCK
4867 */
4868 public static final int ENUM =
4869 JavaLanguageLexer.ENUM;
4870
4871 /**
4872 * An enum constant declaration. Its notable children are annotations,
4873 * arguments and object block akin to an anonymous
4874 * inner class' body.
4875 *
4876 * <p>For example:</p>
4877 * {@snippet :
4878 * SOME_CONSTANT(1)
4879 * {
4880 * public void someMethodOverriddenFromMainBody()
4881 * {
4882 * }
4883 * }
4884 * }
4885 *
4886 * <p>parses as:</p>
4887 * {@snippet :
4888 * ENUM_CONSTANT_DEF -> ENUM_CONSTANT_DEF
4889 * | |--ANNOTATIONS -> ANNOTATIONS
4890 * | |--IDENT -> SOME_CONSTANT
4891 * | |--LPAREN -> (
4892 * | |--ELIST -> ELIST
4893 * | | `--EXPR -> EXPR
4894 * | | `--NUM_INT -> 1
4895 * | |--RPAREN -> )
4896 * | `--OBJBLOCK -> OBJBLOCK
4897 * | |--LCURLY -> {
4898 * | |--METHOD_DEF -> METHOD_DEF
4899 * | | |--MODIFIERS -> MODIFIERS
4900 * | | | `--LITERAL_PUBLIC -> public
4901 * | | |--TYPE -> TYPE
4902 * | | | `--LITERAL_VOID -> void
4903 * | | |--IDENT -> someMethodOverriddenFromMainBody
4904 * | | |--LPAREN -> (
4905 * | | |--PARAMETERS -> PARAMETERS
4906 * | | |--RPAREN -> )
4907 * | | `--SLIST -> {
4908 * | | `--RCURLY -> }
4909 * | `--RCURLY -> }
4910 * }
4911 *
4912 * @see <a href="https://www.jcp.org/en/jsr/detail?id=201">
4913 * JSR201</a>
4914 * @see #ANNOTATIONS
4915 * @see #MODIFIERS
4916 * @see #IDENT
4917 * @see #ELIST
4918 * @see #OBJBLOCK
4919 */
4920 public static final int ENUM_CONSTANT_DEF =
4921 JavaLanguageLexer.ENUM_CONSTANT_DEF;
4922
4923 /**
4924 * A for-each clause. This is a child of
4925 * {@code LITERAL_FOR}. The children of this element may be
4926 * a parameter definition, the colon literal and an expression.
4927 *
4928 * <p>For example:</p>
4929 * {@snippet :
4930 * for (int value : values) {
4931 * doSomething();
4932 * }
4933 * }
4934 *
4935 * <p>parses as:</p>
4936 * {@snippet :
4937 * LITERAL_FOR -> for
4938 * |--LPAREN -> (
4939 * |--FOR_EACH_CLAUSE -> FOR_EACH_CLAUSE
4940 * | |--VARIABLE_DEF -> VARIABLE_DEF
4941 * | | |--MODIFIERS -> MODIFIERS
4942 * | | |--TYPE -> TYPE
4943 * | | | `--LITERAL_INT -> int
4944 * | | `--IDENT -> value
4945 * | |--COLON -> :
4946 * | `--EXPR -> EXPR
4947 * | `--IDENT -> values
4948 * |--RPAREN -> )
4949 * `--SLIST -> {
4950 * |--EXPR -> EXPR
4951 * | `--METHOD_CALL -> (
4952 * | |--IDENT -> doSomething
4953 * | |--ELIST -> ELIST
4954 * | `--RPAREN -> )
4955 * |--SEMI -> ;
4956 * `--RCURLY -> }
4957 * }
4958 *
4959 * @see #VARIABLE_DEF
4960 * @see #ELIST
4961 * @see #LITERAL_FOR
4962 */
4963 public static final int FOR_EACH_CLAUSE =
4964 JavaLanguageLexer.FOR_EACH_CLAUSE;
4965
4966 /**
4967 * An annotation declaration. The notable children are the name of the
4968 * annotation type, annotation field declarations and (constant) fields.
4969 *
4970 * <p>For example:</p>
4971 * {@snippet :
4972 * public @interface MyAnnotation
4973 * {
4974 * int someValue();
4975 * }
4976 * }
4977 *
4978 * <p>parses as:</p>
4979 * {@snippet :
4980 * ANNOTATION_DEF -> ANNOTATION_DEF
4981 * |--MODIFIERS -> MODIFIERS
4982 * | `--LITERAL_PUBLIC -> public
4983 * |--AT -> @
4984 * |--LITERAL_INTERFACE -> interface
4985 * |--IDENT -> MyAnnotation
4986 * `--OBJBLOCK -> OBJBLOCK
4987 * |--LCURLY -> {
4988 * |--ANNOTATION_FIELD_DEF -> ANNOTATION_FIELD_DEF
4989 * | |--MODIFIERS -> MODIFIERS
4990 * | |--TYPE -> TYPE
4991 * | | `--LITERAL_INT -> int
4992 * | |--IDENT -> someValue
4993 * | |--LPAREN -> (
4994 * | |--RPAREN -> )
4995 * | `--SEMI -> ;
4996 * `--RCURLY -> }
4997 * }
4998 *
4999 * @see <a href="https://www.jcp.org/en/jsr/detail?id=201">
5000 * JSR201</a>
5001 * @see #MODIFIERS
5002 * @see #LITERAL_INTERFACE
5003 * @see #IDENT
5004 * @see #OBJBLOCK
5005 * @see #ANNOTATION_FIELD_DEF
5006 */
5007 public static final int ANNOTATION_DEF =
5008 JavaLanguageLexer.ANNOTATION_DEF;
5009
5010 /**
5011 * An annotation field declaration. The notable children are modifiers,
5012 * field type, field name and an optional default value (a conditional
5013 * compile-time constant expression). Default values may also be
5014 * annotations.
5015 *
5016 * <p>For example:</p>
5017 *
5018 * {@snippet :
5019 * String someField() default "Hello world";
5020 * }
5021 *
5022 * <p>parses as:</p>
5023 *
5024 * {@snippet :
5025 * ANNOTATION_FIELD_DEF -> ANNOTATION_FIELD_DEF
5026 * |--MODIFIERS -> MODIFIERS
5027 * |--TYPE -> TYPE
5028 * | `--IDENT -> String
5029 * |--IDENT -> someField
5030 * |--LPAREN -> (
5031 * |--RPAREN -> )
5032 * |--LITERAL_DEFAULT -> default
5033 * | `--EXPR -> EXPR
5034 * | `--STRING_LITERAL -> "Hello world"
5035 * `--SEMI -> ;
5036 * }
5037 *
5038 * @see <a href="https://www.jcp.org/en/jsr/detail?id=201">
5039 * JSR201</a>
5040 * @see #MODIFIERS
5041 * @see #TYPE
5042 * @see #LITERAL_DEFAULT
5043 */
5044 public static final int ANNOTATION_FIELD_DEF =
5045 JavaLanguageLexer.ANNOTATION_FIELD_DEF;
5046
5047 /**
5048 * A collection of annotations on a package or enum constant.
5049 * A collections of annotations will only occur on these nodes
5050 * as all other nodes that may be qualified with an annotation can
5051 * be qualified with any other modifier and hence these annotations
5052 * would be contained in a {@link #MODIFIERS} node.
5053 *
5054 * <p>For example:</p>
5055 *
5056 * {@snippet :
5057 * @MyAnnotation package blah;
5058 * }
5059 *
5060 * <p>parses as:</p>
5061 *
5062 * {@snippet :
5063 * PACKAGE_DEF -> package
5064 * |--ANNOTATIONS -> ANNOTATIONS
5065 * | `--ANNOTATION -> ANNOTATION
5066 * | |--AT -> @
5067 * | `--IDENT -> MyAnnotation
5068 * |--IDENT -> blah
5069 * `--SEMI -> ;
5070 * }
5071 *
5072 * @see <a href="https://www.jcp.org/en/jsr/detail?id=201">
5073 * JSR201</a>
5074 * @see #ANNOTATION
5075 * @see #AT
5076 * @see #IDENT
5077 */
5078 public static final int ANNOTATIONS =
5079 JavaLanguageLexer.ANNOTATIONS;
5080
5081 /**
5082 * An annotation of a package, type, field, parameter or variable.
5083 * An annotation may occur anywhere modifiers occur (it is a
5084 * type of modifier) and may also occur prior to a package definition.
5085 * The notable children are: The annotation name and either a single
5086 * default annotation value or a sequence of name value pairs.
5087 * Annotation values may also be annotations themselves.
5088 *
5089 * <p>For example:</p>
5090 * {@snippet :
5091 * @MyAnnotation(someField1 = "Hello",
5092 * someField2 = @SomeOtherAnnotation)
5093 * }
5094 *
5095 * <p>parses as:</p>
5096 * {@snippet :
5097 * ANNOTATION -> ANNOTATION
5098 * |--AT -> @
5099 * |--IDENT -> MyAnnotation
5100 * |--LPAREN -> (
5101 * |--ANNOTATION_MEMBER_VALUE_PAIR -> ANNOTATION_MEMBER_VALUE_PAIR
5102 * | |--IDENT -> someField1
5103 * | |--ASSIGN -> =
5104 * | `--EXPR -> EXPR
5105 * | `--STRING_LITERAL -> "Hello"
5106 * |--COMMA -> ,
5107 * |--ANNOTATION_MEMBER_VALUE_PAIR -> ANNOTATION_MEMBER_VALUE_PAIR
5108 * | |--IDENT -> someField2
5109 * | |--ASSIGN -> =
5110 * | `--ANNOTATION -> ANNOTATION
5111 * | |--AT -> @
5112 * | `--IDENT -> SomeOtherAnnotation
5113 * `--RPAREN -> )
5114 * }
5115 *
5116 * @see <a href="https://www.jcp.org/en/jsr/detail?id=201">
5117 * JSR201</a>
5118 * @see #MODIFIERS
5119 * @see #IDENT
5120 * @see #ANNOTATION_MEMBER_VALUE_PAIR
5121 */
5122 public static final int ANNOTATION =
5123 JavaLanguageLexer.ANNOTATION;
5124
5125 /**
5126 * An initialization of an annotation member with a value.
5127 * Its children are the name of the member, the assignment literal
5128 * and the (compile-time constant conditional expression) value.
5129 *
5130 * <p>For example:</p>
5131 * {@snippet :
5132 * @Annotation(
5133 * value="123"
5134 * )
5135 * }
5136 *
5137 * <p>parses as:</p>
5138 * {@snippet :
5139 * ANNOTATION -> ANNOTATION
5140 * |--AT -> @
5141 * |--IDENT -> Annotation
5142 * |--LPAREN -> (
5143 * |--ANNOTATION_MEMBER_VALUE_PAIR -> ANNOTATION_MEMBER_VALUE_PAIR
5144 * | |--IDENT -> value
5145 * | |--ASSIGN -> =
5146 * | `--EXPR -> EXPR
5147 * | `--STRING_LITERAL -> "123"
5148 * `--RPAREN -> )
5149 * }
5150 *
5151 * @see <a href="https://www.jcp.org/en/jsr/detail?id=201">
5152 * JSR201</a>
5153 * @see #ANNOTATION
5154 * @see #IDENT
5155 */
5156 public static final int ANNOTATION_MEMBER_VALUE_PAIR =
5157 JavaLanguageLexer.ANNOTATION_MEMBER_VALUE_PAIR;
5158
5159 /**
5160 * An annotation array member initialization.
5161 * Initializers can not be nested.
5162 * An initializer may be present as a default to an annotation
5163 * member, as the single default value to an annotation
5164 * (e.g. @Annotation({1,2})) or as the value of an annotation
5165 * member value pair.
5166 *
5167 * <p>For example:</p>
5168 * {@snippet :
5169 * @Annotation({1, 2})
5170 * }
5171 *
5172 * <p>parses as:</p>
5173 * {@snippet :
5174 * ANNOTATION -> ANNOTATION
5175 * |--AT -> @
5176 * |--IDENT -> Annotation
5177 * |--LPAREN -> (
5178 * |--ANNOTATION_ARRAY_INIT -> {
5179 * | |--EXPR -> EXPR
5180 * | | `--NUM_INT -> 1
5181 * | |--COMMA -> ,
5182 * | |--EXPR -> EXPR
5183 * | | `--NUM_INT -> 2
5184 * | `--RCURLY -> }
5185 * `--RPAREN -> )
5186 * }
5187 *
5188 * @see <a href="https://www.jcp.org/en/jsr/detail?id=201">
5189 * JSR201</a>
5190 * @see #ANNOTATION
5191 * @see #IDENT
5192 * @see #ANNOTATION_MEMBER_VALUE_PAIR
5193 */
5194 public static final int ANNOTATION_ARRAY_INIT =
5195 JavaLanguageLexer.ANNOTATION_ARRAY_INIT;
5196
5197 /**
5198 * A list of type parameters to a class, interface or
5199 * method definition. Children are LT, at least one
5200 * TYPE_PARAMETER, zero or more of: a COMMAs followed by a single
5201 * TYPE_PARAMETER and a final GT.
5202 *
5203 * <p>For example:</p>
5204 *
5205 * {@snippet :
5206 * public class MyClass<A, B> {
5207 *
5208 * }
5209 * }
5210 *
5211 * <p>parses as:</p>
5212 *
5213 * {@snippet :
5214 * CLASS_DEF -> CLASS_DEF
5215 * |--MODIFIERS -> MODIFIERS
5216 * | `--LITERAL_PUBLIC -> public
5217 * |--LITERAL_CLASS -> class
5218 * |--IDENT -> MyClass
5219 * |--TYPE_PARAMETERS -> TYPE_PARAMETERS
5220 * | |--GENERIC_START -> <
5221 * | |--TYPE_PARAMETER -> TYPE_PARAMETER
5222 * | | `--IDENT -> A
5223 * | |--COMMA -> ,
5224 * | |--TYPE_PARAMETER -> TYPE_PARAMETER
5225 * | | `--IDENT -> B
5226 * | `--GENERIC_END -> >
5227 * `--OBJBLOCK -> OBJBLOCK
5228 * |--LCURLY -> {
5229 * `--RCURLY -> }
5230 * }
5231 *
5232 * @see <a href="https://docs.oracle.com/javase/specs/jls/se11/html/jls-8.html#jls-8.1.2">
5233 * Generic Classes and Type Parameters</a>
5234 * @see #GENERIC_START
5235 * @see #GENERIC_END
5236 * @see #TYPE_PARAMETER
5237 * @see #COMMA
5238 */
5239 public static final int TYPE_PARAMETERS =
5240 JavaLanguageLexer.TYPE_PARAMETERS;
5241
5242 /**
5243 * A type parameter to a class, interface or method definition.
5244 * Children are the type name and an optional TYPE_UPPER_BOUNDS.
5245 *
5246 * <p>For example:</p>
5247 *
5248 * {@snippet :
5249 * public class MyClass <A extends Collection> {
5250 *
5251 * }
5252 * }
5253 *
5254 * <p>parses as:</p>
5255 *
5256 * {@snippet :
5257 * CLASS_DEF -> CLASS_DEF
5258 * |--MODIFIERS -> MODIFIERS
5259 * | `--LITERAL_PUBLIC -> public
5260 * |--LITERAL_CLASS -> class
5261 * |--IDENT -> MyClass
5262 * |--TYPE_PARAMETERS -> TYPE_PARAMETERS
5263 * | |--GENERIC_START -> <
5264 * | |--TYPE_PARAMETER -> TYPE_PARAMETER
5265 * | | |--IDENT -> A
5266 * | | `--TYPE_UPPER_BOUNDS -> extends
5267 * | | `--IDENT -> Collection
5268 * | `--GENERIC_END -> >
5269 * `--OBJBLOCK -> OBJBLOCK
5270 * |--LCURLY -> {
5271 * `--RCURLY -> }
5272 * }
5273 *
5274 * @see <a href="https://docs.oracle.com/javase/specs/jls/se11/html/jls-8.html#jls-8.1.2">
5275 * Generic Classes and Type Parameters</a>
5276 * @see #IDENT
5277 * @see #WILDCARD_TYPE
5278 * @see #TYPE_UPPER_BOUNDS
5279 */
5280 public static final int TYPE_PARAMETER =
5281 JavaLanguageLexer.TYPE_PARAMETER;
5282
5283 /**
5284 * A list of type arguments to a type reference or
5285 * a method/ctor invocation. Children are GENERIC_START, at least one
5286 * TYPE_ARGUMENT, zero or more of a COMMAs followed by a single
5287 * TYPE_ARGUMENT, and a final GENERIC_END.
5288 *
5289 * <p>For example:</p>
5290 *
5291 * {@snippet :
5292 * public Collection<?> a;
5293 * }
5294 *
5295 * <p>parses as:</p>
5296 *
5297 * {@snippet :
5298 * VARIABLE_DEF -> VARIABLE_DEF
5299 * |--MODIFIERS -> MODIFIERS
5300 * | `--LITERAL_PUBLIC -> public
5301 * |--TYPE -> TYPE
5302 * | |--IDENT -> Collection
5303 * | `--TYPE_ARGUMENTS -> TYPE_ARGUMENTS
5304 * | |--GENERIC_START -> <
5305 * | |--TYPE_ARGUMENT -> TYPE_ARGUMENT
5306 * | | `--WILDCARD_TYPE -> ?
5307 * | `--GENERIC_END -> >
5308 * |--IDENT -> a
5309 * `--SEMI -> ;
5310 * }
5311 *
5312 * @see #GENERIC_START
5313 * @see #GENERIC_END
5314 * @see #TYPE_ARGUMENT
5315 * @see #COMMA
5316 */
5317 public static final int TYPE_ARGUMENTS =
5318 JavaLanguageLexer.TYPE_ARGUMENTS;
5319
5320 /**
5321 * A type arguments to a type reference or a method/ctor invocation.
5322 * Children are either: type name or wildcard type with possible type
5323 * upper or lower bounds.
5324 *
5325 * <p>For example: {@code List< ? super List> list }</p>
5326 *
5327 * <p>parses as:</p>
5328 * {@snippet :
5329 * VARIABLE_DEF -> VARIABLE_DEF
5330 * |--MODIFIERS -> MODIFIERS
5331 * |--TYPE -> TYPE
5332 * | |--IDENT -> List
5333 * | `--TYPE_ARGUMENTS -> TYPE_ARGUMENTS
5334 * | |--GENERIC_START -> <
5335 * | |--TYPE_ARGUMENT -> TYPE_ARGUMENT
5336 * | | |--WILDCARD_TYPE -> ?
5337 * | | `--TYPE_LOWER_BOUNDS -> super
5338 * | | `--IDENT -> List
5339 * | `--GENERIC_END -> >
5340 * |--IDENT -> list
5341 * `--SEMI -> ;
5342 * }
5343 *
5344 * @see <a href="https://docs.oracle.com/javase/specs/jls/se11/html/jls-8.html#jls-8.1.2">
5345 * Generic Classes and Type Parameters</a>
5346 * @see #WILDCARD_TYPE
5347 * @see #TYPE_UPPER_BOUNDS
5348 * @see #TYPE_LOWER_BOUNDS
5349 */
5350 public static final int TYPE_ARGUMENT =
5351 JavaLanguageLexer.TYPE_ARGUMENT;
5352
5353 /**
5354 * The type that refers to all types. This node has no children.
5355 *
5356 * <p>For example: </p>
5357 * {@snippet :
5358 *
5359 * List<?> list;
5360 * }
5361 *
5362 * <p>parses as:</p>
5363 * {@snippet :
5364 * |--VARIABLE_DEF -> VARIABLE_DEF
5365 * | |--MODIFIERS -> MODIFIERS
5366 * | |--TYPE -> TYPE
5367 * | | |--IDENT -> List
5368 * | | |`--TYPE_ARGUMENTS -> TYPE_ARGUMENTS
5369 * | | |--GENERIC_START -> <
5370 * | | |--TYPE_ARGUMENT -> TYPE_ARGUMENT
5371 * | | | `--WILDCARD_TYPE -> ?
5372 * | | `--GENERIC_END -> >
5373 * | `--IDENT -> list
5374 * |--SEMI -> ;
5375 * }
5376 *
5377 * @see <a href="https://docs.oracle.com/javase/specs/jls/se11/html/jls-8.html#jls-8.1.2">
5378 * Generic Classes and Type Parameters</a>
5379 * @see #TYPE_ARGUMENT
5380 * @see #TYPE_UPPER_BOUNDS
5381 * @see #TYPE_LOWER_BOUNDS
5382 */
5383 public static final int WILDCARD_TYPE =
5384 JavaLanguageLexer.WILDCARD_TYPE;
5385
5386 /**
5387 * An upper bounds on a wildcard type argument or type parameter.
5388 * This node has one child - the type that is being used for
5389 * the bounding.
5390 *
5391 * <p>For example: {@code List< ? extends Number> list;}</p>
5392 *
5393 * <p>parses as:</p>
5394 * {@snippet :
5395 * --VARIABLE_DEF -> VARIABLE_DEF
5396 * |--MODIFIERS -> MODIFIERS
5397 * |--TYPE -> TYPE
5398 * | |--IDENT -> List
5399 * | `--TYPE_ARGUMENTS -> TYPE_ARGUMENTS
5400 * | |--GENERIC_START -> <
5401 * | |--TYPE_ARGUMENT -> TYPE_ARGUMENT
5402 * | | |--WILDCARD_TYPE -> ?
5403 * | | `--TYPE_UPPER_BOUNDS -> extends
5404 * | | `--IDENT -> Number
5405 * | `--GENERIC_END -> >
5406 * |--IDENT -> list
5407 * `--SEMI -> ;
5408 * }
5409 *
5410 * @see <a href="https://docs.oracle.com/javase/specs/jls/se11/html/jls-8.html#jls-8.1.2">
5411 * Generic Classes and Type Parameters</a>
5412 * @see #TYPE_PARAMETER
5413 * @see #TYPE_ARGUMENT
5414 * @see #WILDCARD_TYPE
5415 */
5416 public static final int TYPE_UPPER_BOUNDS =
5417 JavaLanguageLexer.TYPE_UPPER_BOUNDS;
5418
5419 /**
5420 * A lower bounds on a wildcard type argument. This node has one child
5421 * - the type that is being used for the bounding.
5422 *
5423 * <p>For example: {@code List< ? super Integer> list;}</p>
5424 *
5425 * <p>parses as:</p>
5426 * {@snippet :
5427 * --VARIABLE_DEF -> VARIABLE_DEF
5428 * |--MODIFIERS -> MODIFIERS
5429 * |--TYPE -> TYPE
5430 * | |--IDENT -> List
5431 * | `--TYPE_ARGUMENTS -> TYPE_ARGUMENTS
5432 * | |--GENERIC_START -> <
5433 * | |--TYPE_ARGUMENT -> TYPE_ARGUMENT
5434 * | | |--WILDCARD_TYPE -> ?
5435 * | | `--TYPE_LOWER_BOUNDS -> super
5436 * | | `--IDENT -> Integer
5437 * | `--GENERIC_END -> >
5438 * |--IDENT -> list
5439 * `--SEMI -> ;
5440 * }
5441 *
5442 * @see <a href="https://docs.oracle.com/javase/specs/jls/se11/html/jls-8.html#jls-8.1.2">
5443 * Generic Classes and Type Parameters</a>
5444 * @see #TYPE_ARGUMENT
5445 * @see #WILDCARD_TYPE
5446 */
5447 public static final int TYPE_LOWER_BOUNDS =
5448 JavaLanguageLexer.TYPE_LOWER_BOUNDS;
5449
5450 /**
5451 * An {@code @} symbol - signifying an annotation instance or the prefix
5452 * to the interface literal signifying the definition of an annotation
5453 * declaration.
5454 *
5455 * <p>For example:</p>
5456 * {@snippet :
5457 * @Deprecated
5458 * private int value;
5459 * }
5460 *
5461 * <p>parses as:</p>
5462 * {@snippet :
5463 * VARIABLE_DEF -> VARIABLE_DEF
5464 * |--MODIFIERS -> MODIFIERS
5465 * | |--ANNOTATION -> ANNOTATION
5466 * | | |--AT -> @
5467 * | | `--IDENT -> Deprecated
5468 * | `--LITERAL_PRIVATE -> private
5469 * |--TYPE -> TYPE
5470 * | `--LITERAL_INT -> int
5471 * |--IDENT -> value
5472 * `--SEMI -> ;
5473 * }
5474 *
5475 * @see <a href="https://www.jcp.org/en/jsr/detail?id=201">
5476 * JSR201</a>
5477 */
5478 public static final int AT = JavaLanguageLexer.AT;
5479
5480 /**
5481 * A triple dot for variable-length parameters. This token only ever occurs
5482 * in a parameter declaration immediately after the type of the parameter.
5483 *
5484 * <p>For example:</p>
5485 * {@snippet :
5486 * public void myShape(int... dimension) {
5487 *
5488 * }
5489 * }
5490 *
5491 * <p>parses as:</p>
5492 * {@snippet :
5493 * METHOD_DEF -> METHOD_DEF
5494 * |--MODIFIERS -> MODIFIERS
5495 * | `--LITERAL_PUBLIC -> public
5496 * |--TYPE -> TYPE
5497 * | `--LITERAL_VOID -> void
5498 * |--IDENT -> myShape
5499 * |--LPAREN -> (
5500 * |--PARAMETERS -> PARAMETERS
5501 * | `--PARAMETER_DEF -> PARAMETER_DEF
5502 * | |--MODIFIERS -> MODIFIERS
5503 * | |--TYPE -> TYPE
5504 * | | `--LITERAL_INT -> int
5505 * | |--ELLIPSIS -> ...
5506 * | `--IDENT -> dimension
5507 * |--RPAREN -> )
5508 * `--SLIST -> {
5509 * `--RCURLY -> }
5510 * }
5511 *
5512 * @see <a href="https://www.jcp.org/en/jsr/detail?id=201">
5513 * JSR201</a>
5514 */
5515 public static final int ELLIPSIS = JavaLanguageLexer.ELLIPSIS;
5516
5517 /**
5518 * The {@code &} symbol when used to extend a generic upper or lower bounds constrain
5519 * or a type cast expression with an additional interface.
5520 *
5521 * <p>Generic type bounds extension:
5522 * {@code class Comparable<T extends Serializable & CharSequence>}</p>
5523 * {@snippet :
5524 * CLASS_DEF -> CLASS_DEF
5525 * |--MODIFIERS -> MODIFIERS
5526 * |--LITERAL_CLASS -> class
5527 * |--IDENT -> Comparable
5528 * |--TYPE_PARAMETERS -> TYPE_PARAMETERS
5529 * |--GENERIC_START -> <
5530 * |--TYPE_PARAMETER -> TYPE_PARAMETER
5531 * | |--IDENT -> T
5532 * | `--TYPE_UPPER_BOUNDS -> extends
5533 * | |--IDENT -> Serializable
5534 * | |--TYPE_EXTENSION_AND -> &
5535 * | `--IDENT -> CharSequence
5536 * `--GENERIC_END -> >
5537 * }
5538 *
5539 * <p>Type cast extension:
5540 * {@code return (Serializable & CharSequence) null;}</p>
5541 * {@snippet :
5542 * --LITERAL_RETURN -> return
5543 * |--EXPR -> EXPR
5544 * | `--TYPECAST -> (
5545 * | |--TYPE -> TYPE
5546 * | | `--IDENT -> Serializable
5547 * | |--TYPE_EXTENSION_AND -> &
5548 * | |--TYPE -> TYPE
5549 * | | `--IDENT -> CharSequence
5550 * | |--RPAREN -> )
5551 * | `--LITERAL_NULL -> null
5552 * `--SEMI -> ;
5553 * }
5554 *
5555 * @see #EXTENDS_CLAUSE
5556 * @see #TYPECAST
5557 * @see <a href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-4.html#jls-4.4">
5558 * Java Language Specification, §4.4</a>
5559 * @see <a href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.16">
5560 * Java Language Specification, §15.16</a>
5561 */
5562 public static final int TYPE_EXTENSION_AND =
5563 JavaLanguageLexer.TYPE_EXTENSION_AND;
5564
5565 /**
5566 * A {@code <} symbol signifying the start of type arguments or type parameters.
5567 *
5568 * <p>For example:</p>
5569 * {@snippet :
5570 * class Test<T> {}
5571 * }
5572 *
5573 * <p>parses as:</p>
5574 * {@snippet :
5575 * CLASS_DEF -> CLASS_DEF
5576 * |--MODIFIERS -> MODIFIERS
5577 * |--LITERAL_CLASS -> class
5578 * |--IDENT -> Test
5579 * |--TYPE_PARAMETERS -> TYPE_PARAMETERS
5580 * | |--GENERIC_START -> <
5581 * | |--TYPE_PARAMETER -> TYPE_PARAMETER
5582 * | | `--IDENT -> T
5583 * | `--GENERIC_END -> >
5584 * `--OBJBLOCK -> OBJBLOCK
5585 * |--LCURLY -> {
5586 * `--RCURLY -> }
5587 * }
5588 *
5589 * @see #MODIFIERS
5590 * @see #IDENT
5591 * @see #OBJBLOCK
5592 * @see #TYPE_PARAMETERS
5593 * @see #GENERIC_END
5594 */
5595 public static final int GENERIC_START =
5596 JavaLanguageLexer.GENERIC_START;
5597
5598 /**
5599 * A {@code >} symbol signifying the end of type arguments or type parameters.
5600 *
5601 * <p>For example:</p>
5602 * {@snippet :
5603 * class Test<T> {}
5604 * }
5605 *
5606 * <p>parses as:</p>
5607 * {@snippet :
5608 * CLASS_DEF -> CLASS_DEF
5609 * |--MODIFIERS -> MODIFIERS
5610 * |--LITERAL_CLASS -> class
5611 * |--IDENT -> Test
5612 * |--TYPE_PARAMETERS -> TYPE_PARAMETERS
5613 * | |--GENERIC_START -> <
5614 * | |--TYPE_PARAMETER -> TYPE_PARAMETER
5615 * | | `--IDENT -> T
5616 * | `--GENERIC_END -> >
5617 * `--OBJBLOCK -> OBJBLOCK
5618 * |--LCURLY -> {
5619 * `--RCURLY -> }
5620 * }
5621 *
5622 * @see #MODIFIERS
5623 * @see #IDENT
5624 * @see #OBJBLOCK
5625 * @see #TYPE_PARAMETERS
5626 * @see #GENERIC_START
5627 */
5628 public static final int GENERIC_END = JavaLanguageLexer.GENERIC_END;
5629
5630 /**
5631 * Special lambda symbol {@code ->}.
5632 *
5633 * <p>For example:</p>
5634 * {@snippet :
5635 * numbers.forEach((n) -> System.out.println(n));
5636 * }
5637 *
5638 * <p>parses as:</p>
5639 * {@snippet :
5640 * METHOD_CALL -> (
5641 * |--DOT -> .
5642 * | |--IDENT -> numbers
5643 * | `--IDENT -> forEach
5644 * |--ELIST -> ELIST
5645 * | `--LAMBDA -> ->
5646 * | |--LPAREN -> (
5647 * | |--PARAMETERS -> PARAMETERS
5648 * | | `--PARAMETER_DEF -> PARAMETER_DEF
5649 * | | |--MODIFIERS -> MODIFIERS
5650 * | | |--TYPE -> TYPE
5651 * | | `--IDENT -> n
5652 * | |--RPAREN -> )
5653 * | `--EXPR -> EXPR
5654 * | `--METHOD_CALL -> (
5655 * | |--DOT -> .
5656 * | | |--DOT -> .
5657 * | | | |--IDENT -> System
5658 * | | | `--IDENT -> out
5659 * | | `--IDENT -> println
5660 * | |--ELIST -> ELIST
5661 * | | `--EXPR -> EXPR
5662 * | | `--IDENT -> n
5663 * | `--RPAREN -> )
5664 * `--RPAREN -> )
5665 * }
5666 *
5667 */
5668 public static final int LAMBDA = JavaLanguageLexer.LAMBDA;
5669
5670 /**
5671 * Beginning of single-line comment: '//'.
5672 *
5673 * {@snippet :
5674 * SINGLE_LINE_COMMENT -> //
5675 * `--COMMENT_CONTENT -> \r\n
5676 * }
5677 *
5678 * <p>For example:</p>
5679 * {@snippet :
5680 * // Comment content
5681 * }
5682 *
5683 * <p>parses as:</p>
5684 * {@snippet :
5685 * SINGLE_LINE_COMMENT -> //
5686 * `--COMMENT_CONTENT -> Comment Content\n
5687 * }
5688 */
5689 public static final int SINGLE_LINE_COMMENT =
5690 JavaLanguageLexer.SINGLE_LINE_COMMENT;
5691
5692 /**
5693 * Beginning of block comment: '/*'.
5694 *
5695 * <p>For example:</p>
5696 * <pre>{@code
5697 * /* Comment content
5698 * * /
5699 * }</pre>
5700 *
5701 * <p>parses as:</p>
5702 * {@snippet :
5703 * --BLOCK_COMMENT_BEGIN -> /*
5704 * |--COMMENT_CONTENT -> Comment content\r\n
5705 * `--BLOCK_COMMENT_END -> *
5706 * }
5707 */
5708 public static final int BLOCK_COMMENT_BEGIN =
5709 JavaLanguageLexer.BLOCK_COMMENT_BEGIN;
5710
5711 /**
5712 * End of block comment: '* /'.
5713 *
5714 * <p>For example:</p>
5715 * <pre>{@code
5716 * /*comment
5717 * * /
5718 * }</pre>
5719 *
5720 * <p>parses as:</p>
5721 * {@snippet :
5722 * BLOCK_COMMENT_BEGIN -> /*
5723 * |--COMMENT_CONTENT -> comment
5724 * `--BLOCK_COMMENT_END -> *
5725 * }
5726 *
5727 */
5728 public static final int BLOCK_COMMENT_END =
5729 JavaLanguageLexer.BLOCK_COMMENT_END;
5730
5731 /**
5732 * Text of single-line or block comment.
5733 *
5734 * <p>For example:</p>
5735 * <pre>{@code
5736 * //this is single-line comment
5737 *
5738 * /*
5739 * this is multiline comment
5740 * * /
5741 * }</pre>
5742 *
5743 * <p>parses as:</p>
5744 * {@snippet :
5745 * |--SINGLE_LINE_COMMENT -> //
5746 * | `--COMMENT_CONTENT -> this is single-line comment\n
5747 * |--BLOCK_COMMENT_BEGIN -> /*
5748 * | |--COMMENT_CONTENT -> \n\t\t\tthis is multiline comment\n\t\t
5749 * | `--BLOCK_COMMENT_END -> *
5750 * }
5751 *
5752 */
5753 public static final int COMMENT_CONTENT =
5754 JavaLanguageLexer.COMMENT_CONTENT;
5755
5756 /**
5757 * A pattern variable definition; when conditionally matched,
5758 * this variable is assigned with the defined type.
5759 *
5760 * <p>For example:</p>
5761 * {@snippet :
5762 * if (obj instanceof String str) { }
5763 * }
5764 *
5765 * <p>parses as:</p>
5766 * {@snippet :
5767 * LITERAL_IF -> if
5768 * |--LPAREN -> (
5769 * |--EXPR -> EXPR
5770 * | `--LITERAL_INSTANCEOF -> instanceof
5771 * | |--IDENT -> obj
5772 * | `--PATTERN_VARIABLE_DEF -> PATTERN_VARIABLE_DEF
5773 * | |--TYPE -> TYPE
5774 * | | `--IDENT -> String
5775 * | `--IDENT -> str
5776 * |--RPAREN -> )
5777 * `--SLIST -> {
5778 * `--RCURLY -> }
5779 * }
5780 *
5781 * @see #LITERAL_INSTANCEOF
5782 * @since 8.35
5783 */
5784 public static final int PATTERN_VARIABLE_DEF =
5785 JavaLanguageLexer.PATTERN_VARIABLE_DEF;
5786
5787 /**
5788 * The {@code record} keyword. This element appears
5789 * as part of a record declaration.
5790 *
5791 * <p>For example:</p>
5792 * {@snippet :
5793 * public record MyRecord () {
5794 *
5795 * }
5796 * }
5797 *
5798 * <p>parses as:</p>
5799 * {@snippet :
5800 * RECORD_DEF -> RECORD_DEF
5801 * |--MODIFIERS -> MODIFIERS
5802 * | `--LITERAL_PUBLIC -> public
5803 * |--LITERAL_RECORD -> record
5804 * |--IDENT -> MyRecord
5805 * |--LPAREN -> (
5806 * |--RECORD_COMPONENTS -> RECORD_COMPONENTS
5807 * |--RPAREN -> )
5808 * `--OBJBLOCK -> OBJBLOCK
5809 * |--LCURLY -> {
5810 * `--RCURLY -> }
5811 * }
5812 *
5813 * @since 8.35
5814 */
5815 public static final int LITERAL_RECORD =
5816 JavaLanguageLexer.LITERAL_RECORD;
5817
5818 /**
5819 * A declaration of a record specifies a name, a header, and a body.
5820 * The header lists the components of the record, which are the variables
5821 * that make up its state.
5822 *
5823 * <p>For example:</p>
5824 * {@snippet :
5825 * public record MyRecord () {
5826 *
5827 * }
5828 * }
5829 *
5830 * <p>parses as:</p>
5831 * {@snippet :
5832 * RECORD_DEF -> RECORD_DEF
5833 * |--MODIFIERS -> MODIFIERS
5834 * | `--LITERAL_PUBLIC -> public
5835 * |--LITERAL_RECORD -> record
5836 * |--IDENT -> MyRecord
5837 * |--LPAREN -> (
5838 * |--RECORD_COMPONENTS -> RECORD_COMPONENTS
5839 * |--RPAREN -> )
5840 * `--OBJBLOCK -> OBJBLOCK
5841 * |--LCURLY -> {
5842 * `--RCURLY -> }
5843 * }
5844 *
5845 * @since 8.35
5846 */
5847 public static final int RECORD_DEF =
5848 JavaLanguageLexer.RECORD_DEF;
5849
5850 /**
5851 * Record components are a (possibly empty) list containing the components of a record, which
5852 * are the variables that make up its state.
5853 *
5854 * <p>For example:</p>
5855 * {@snippet :
5856 * public record myRecord (Comp x, Comp y) { }
5857 * }
5858 *
5859 * <p>parses as:</p>
5860 * {@snippet :
5861 * RECORD_DEF -> RECORD_DEF
5862 * |--MODIFIERS -> MODIFIERS
5863 * | `--LITERAL_PUBLIC -> public
5864 * |--LITERAL_RECORD -> record
5865 * |--IDENT -> myRecord
5866 * |--LPAREN -> (
5867 * |--RECORD_COMPONENTS -> RECORD_COMPONENTS
5868 * | |--RECORD_COMPONENT_DEF -> RECORD_COMPONENT_DEF
5869 * | | |--ANNOTATIONS -> ANNOTATIONS
5870 * | | |--TYPE -> TYPE
5871 * | | | `--IDENT -> Comp
5872 * | | `--IDENT -> x
5873 * | |--COMMA -> ,
5874 * | `--RECORD_COMPONENT_DEF -> RECORD_COMPONENT_DEF
5875 * | |--ANNOTATIONS -> ANNOTATIONS
5876 * | |--TYPE -> TYPE
5877 * | | `--IDENT -> Comp
5878 * | `--IDENT -> y
5879 * |--RPAREN -> )
5880 * `--OBJBLOCK -> OBJBLOCK
5881 * |--LCURLY -> {
5882 * `--RCURLY -> }
5883 * }
5884 *
5885 * @since 8.36
5886 */
5887 public static final int RECORD_COMPONENTS =
5888 JavaLanguageLexer.RECORD_COMPONENTS;
5889
5890 /**
5891 * A record component is a variable that comprises the state of a record. Record components
5892 * have annotations (possibly), a type definition, and an identifier. They can also be of
5893 * variable arity ('...').
5894 *
5895 * <p>For example:</p>
5896 * {@snippet :
5897 * public record MyRecord(Comp x, Comp... comps) {
5898 *
5899 * }
5900 * }
5901 *
5902 * <p>parses as:</p>
5903 * {@snippet :
5904 * RECORD_DEF -> RECORD_DEF
5905 * |--MODIFIERS -> MODIFIERS
5906 * | `--LITERAL_PUBLIC -> public
5907 * |--LITERAL_RECORD -> record
5908 * |--IDENT -> MyRecord
5909 * |--LPAREN -> (
5910 * |--RECORD_COMPONENTS -> RECORD_COMPONENTS
5911 * | |--RECORD_COMPONENT_DEF -> RECORD_COMPONENT_DEF
5912 * | | |--ANNOTATIONS -> ANNOTATIONS
5913 * | | |--TYPE -> TYPE
5914 * | | | `--IDENT -> Comp
5915 * | | `--IDENT -> x
5916 * | |--COMMA -> ,
5917 * | `--RECORD_COMPONENT_DEF -> RECORD_COMPONENT_DEF
5918 * | |--ANNOTATIONS -> ANNOTATIONS
5919 * | |--TYPE -> TYPE
5920 * | | `--IDENT -> Comp
5921 * | |--ELLIPSIS -> ...
5922 * | `--IDENT -> comps
5923 * |--RPAREN -> )
5924 * `--OBJBLOCK -> OBJBLOCK
5925 * |--LCURLY -> {
5926 * `--RCURLY -> }
5927 * }
5928 *
5929 * @since 8.36
5930 */
5931 public static final int RECORD_COMPONENT_DEF =
5932 JavaLanguageLexer.RECORD_COMPONENT_DEF;
5933
5934 /**
5935 * A compact canonical constructor eliminates the list of formal parameters; they are
5936 * declared implicitly.
5937 *
5938 * <p>For example:</p>
5939 * {@snippet :
5940 * public record myRecord () {
5941 * public myRecord{}
5942 * }
5943 * }
5944 *
5945 * <p>parses as:</p>
5946 * {@snippet :
5947 * RECORD_DEF
5948 * |--MODIFIERS
5949 * | `--LITERAL_PUBLIC (public)
5950 * |--LITERAL_RECORD (record)
5951 * |--IDENT (myRecord)
5952 * |--LPAREN (()
5953 * |--RECORD_COMPONENTS
5954 * |--RPAREN ())
5955 * `--OBJBLOCK
5956 * |--LCURLY ({)
5957 * |--COMPACT_CTOR_DEF
5958 * | |--MODIFIERS
5959 * | | `--LITERAL_PUBLIC (public)
5960 * | |--IDENT (myRecord)
5961 * | `--SLIST ({)
5962 * | `--RCURLY (})
5963 * `--RCURLY (})
5964 * }
5965 *
5966 * @since 8.36
5967 */
5968 public static final int COMPACT_CTOR_DEF =
5969 JavaLanguageLexer.COMPACT_CTOR_DEF;
5970
5971 /**
5972 * Text blocks are a new feature added to to Java SE 15 and later
5973 * that will make writing multi-line strings much easier and cleaner.
5974 * Beginning of a Java 15 Text Block literal,
5975 * delimited by three double quotes.
5976 *
5977 * <p>For example:</p>
5978 * {@snippet :
5979 * String hello = """
5980 * Hello, world!
5981 * """;
5982 * }
5983 *
5984 * <p>parses as:</p>
5985 * {@snippet :
5986 * |--VARIABLE_DEF -> VARIABLE_DEF
5987 * | |--MODIFIERS -> MODIFIERS
5988 * | |--TYPE -> TYPE
5989 * | | `--IDENT -> String
5990 * | |--IDENT -> hello
5991 * | `--ASSIGN -> =
5992 * | `--EXPR -> EXPR
5993 * | `--TEXT_BLOCK_LITERAL_BEGIN -> """
5994 * | |--TEXT_BLOCK_CONTENT -> \n Hello, world!\n
5995 * | `--TEXT_BLOCK_LITERAL_END -> """
5996 * `--SEMI -> ;
5997 * }
5998 *
5999 * @since 8.36
6000 */
6001 public static final int TEXT_BLOCK_LITERAL_BEGIN =
6002 JavaLanguageLexer.TEXT_BLOCK_LITERAL_BEGIN;
6003
6004 /**
6005 * Content of a Java 15 text block. This is a
6006 * sequence of characters, possibly escaped with '\'. Actual line terminators
6007 * are represented by '\n'.
6008 *
6009 * <p>For example:</p>
6010 * {@snippet :
6011 * String hello = """
6012 * Hello, world!
6013 * """;
6014 * }
6015 *
6016 * <p>parses as:</p>
6017 * {@snippet :
6018 * |--VARIABLE_DEF -> VARIABLE_DEF
6019 * | |--MODIFIERS -> MODIFIERS
6020 * | |--TYPE -> TYPE
6021 * | | `--IDENT -> String
6022 * | |--IDENT -> hello
6023 * | `--ASSIGN -> =
6024 * | `--EXPR -> EXPR
6025 * | `--TEXT_BLOCK_LITERAL_BEGIN -> """
6026 * | |--TEXT_BLOCK_CONTENT -> \n Hello, world!\n
6027 * | `--TEXT_BLOCK_LITERAL_END -> """
6028 * `--SEMI -> ;
6029 * }
6030 *
6031 * @since 8.36
6032 */
6033 public static final int TEXT_BLOCK_CONTENT =
6034 JavaLanguageLexer.TEXT_BLOCK_CONTENT;
6035
6036 /**
6037 * End of a Java 15 text block literal, delimited by three
6038 * double quotes.
6039 *
6040 * <p>For example:</p>
6041 * {@snippet :
6042 * String hello = """
6043 * Hello, world!
6044 * """;
6045 * }
6046 *
6047 * <p>parses as:</p>
6048 * {@snippet :
6049 * |--VARIABLE_DEF -> VARIABLE_DEF
6050 * | |--MODIFIERS -> MODIFIERS
6051 * | |--TYPE -> TYPE
6052 * | | `--IDENT -> String
6053 * | |--IDENT -> hello
6054 * | `--ASSIGN -> =
6055 * | `--EXPR -> EXPR
6056 * | `--TEXT_BLOCK_LITERAL_BEGIN -> """
6057 * | |--TEXT_BLOCK_CONTENT -> \n Hello, world!\n
6058 * | `--TEXT_BLOCK_LITERAL_END -> """
6059 * `--SEMI -> ;
6060 * }
6061 *
6062 * @since 8.36
6063 */
6064 public static final int TEXT_BLOCK_LITERAL_END =
6065 JavaLanguageLexer.TEXT_BLOCK_LITERAL_END;
6066
6067 /**
6068 * The {@code yield} keyword. This element appears
6069 * as part of a yield statement.
6070 *
6071 * <p>For example:</p>
6072 * {@snippet :
6073 * int yield = 0; // not a keyword here
6074 * return switch (mode) {
6075 * case "a", "b":
6076 * yield 1;
6077 * default:
6078 * yield - 1;
6079 * };
6080 * }
6081 *
6082 * <p>parses as:</p>
6083 * {@snippet :
6084 * |--VARIABLE_DEF -> VARIABLE_DEF
6085 * | |--MODIFIERS -> MODIFIERS
6086 * | |--TYPE -> TYPE
6087 * | | `--LITERAL_INT -> int
6088 * | |--IDENT -> yield
6089 * | `--ASSIGN -> =
6090 * | `--EXPR -> EXPR
6091 * | `--NUM_INT -> 0
6092 * |--SEMI -> ;
6093 * |--LITERAL_RETURN -> return
6094 * | |--EXPR -> EXPR
6095 * | | `--LITERAL_SWITCH -> switch
6096 * | | |--LPAREN -> (
6097 * | | |--EXPR -> EXPR
6098 * | | | `--IDENT -> mode
6099 * | | |--RPAREN -> )
6100 * | | |--LCURLY -> {
6101 * | | |--CASE_GROUP -> CASE_GROUP
6102 * | | | |--LITERAL_CASE -> case
6103 * | | | | |--EXPR -> EXPR
6104 * | | | | | `--STRING_LITERAL -> "a"
6105 * | | | | |--COMMA -> ,
6106 * | | | | |--EXPR -> EXPR
6107 * | | | | | `--STRING_LITERAL -> "b"
6108 * | | | | `--COLON -> :
6109 * | | | `--SLIST -> SLIST
6110 * | | | `--LITERAL_YIELD -> yield
6111 * | | | |--EXPR -> EXPR
6112 * | | | | `--NUM_INT -> 1
6113 * | | | `--SEMI -> ;
6114 * | | |--CASE_GROUP -> CASE_GROUP
6115 * | | | |--LITERAL_DEFAULT -> default
6116 * | | | | `--COLON -> :
6117 * | | | `--SLIST -> SLIST
6118 * | | | `--LITERAL_YIELD -> yield
6119 * | | | |--EXPR -> EXPR
6120 * | | | | `--UNARY_MINUS -> -
6121 * | | | | `--NUM_INT -> 1
6122 * | | | `--SEMI -> ;
6123 * | | `--RCURLY -> }
6124 * | `--SEMI -> ;
6125 * }
6126 *
6127 *
6128 * @see #LITERAL_SWITCH
6129 * @see #CASE_GROUP
6130 * @see #SLIST
6131 * @see #SWITCH_RULE
6132 *
6133 * @see <a href="https://docs.oracle.com/javase/specs/jls/se13/preview/switch-expressions.html">
6134 * Java Language Specification, §14.21</a>
6135 *
6136 * @since 8.36
6137 */
6138 public static final int LITERAL_YIELD =
6139 JavaLanguageLexer.LITERAL_YIELD;
6140
6141 /**
6142 * Switch Expressions.
6143 *
6144 * <p>For example:</p>
6145 * {@snippet :
6146 * return switch (day) {
6147 * case SAT, SUN -> "Weekend";
6148 * default -> "Working day";
6149 * };
6150 * }
6151 *
6152 * <p>parses as:</p>
6153 * {@snippet :
6154 * LITERAL_RETURN -> return
6155 * |--EXPR -> EXPR
6156 * | `--LITERAL_SWITCH -> switch
6157 * | |--LPAREN -> (
6158 * | |--EXPR -> EXPR
6159 * | | `--IDENT -> day
6160 * | |--RPAREN -> )
6161 * | |--LCURLY -> {
6162 * | |--SWITCH_RULE -> SWITCH_RULE
6163 * | | |--LITERAL_CASE -> case
6164 * | | | |--EXPR -> EXPR
6165 * | | | | `--IDENT -> SAT
6166 * | | | |--COMMA -> ,
6167 * | | | `--EXPR -> EXPR
6168 * | | | `--IDENT -> SUN
6169 * | | |--LAMBDA -> ->
6170 * | | |--EXPR -> EXPR
6171 * | | | `--STRING_LITERAL -> "Weekend"
6172 * | | `--SEMI -> ;
6173 * | |--SWITCH_RULE -> SWITCH_RULE
6174 * | | |--LITERAL_DEFAULT -> default
6175 * | | |--LAMBDA -> ->
6176 * | | |--EXPR -> EXPR
6177 * | | | `--STRING_LITERAL -> "Working day"
6178 * | | `--SEMI -> ;
6179 * | `--RCURLY -> }
6180 * `--SEMI -> ;
6181 * }
6182 *
6183 * @see #LITERAL_CASE
6184 * @see #LITERAL_DEFAULT
6185 * @see #LITERAL_SWITCH
6186 * @see #LITERAL_YIELD
6187 *
6188 * @see <a href="https://docs.oracle.com/javase/specs/jls/se13/preview/switch-expressions.html">
6189 * Java Language Specification, §14.21</a>
6190 *
6191 * @since 8.36
6192 */
6193 public static final int SWITCH_RULE =
6194 JavaLanguageLexer.SWITCH_RULE;
6195
6196 /**
6197 * The {@code non-sealed} keyword. This element appears
6198 * as part of a class or interface declaration.
6199 *
6200 * <p>For example:</p>
6201 * {@snippet :
6202 * non-sealed class Square extends Rectangle { }
6203 * }
6204 *
6205 * <p>parses as:</p>
6206 * {@snippet :
6207 * CLASS_DEF -> CLASS_DEF
6208 * |--MODIFIERS -> MODIFIERS
6209 * | `--LITERAL_NON_SEALED -> non-sealed
6210 * |--LITERAL_CLASS -> class
6211 * |--IDENT -> Square
6212 * |--EXTENDS_CLAUSE -> extends
6213 * | `--IDENT -> Rectangle
6214 * `--OBJBLOCK -> OBJBLOCK
6215 * |--LCURLY -> {
6216 * `--RCURLY -> }
6217 * }
6218 *
6219 * @see <a href="https://docs.oracle.com/en/java/javase/15/docs/specs/sealed-classes-jls.html">
6220 * Java Language Specification, §8.1.1.2</a>
6221 * @see #MODIFIERS
6222 *
6223 * @since 8.42
6224 */
6225 public static final int LITERAL_NON_SEALED =
6226 JavaLanguageLexer.LITERAL_NON_SEALED;
6227
6228 /**
6229 * The {@code sealed} restricted identifier. This element appears
6230 * as part of a class or interface declaration.
6231 *
6232 * <p>For example:</p>
6233 * {@snippet :
6234 * public sealed class Shape permits Circle, Square, Rectangle { }
6235 * }
6236 *
6237 * <p>parses as:</p>
6238 * {@snippet :
6239 * CLASS_DEF -> CLASS_DEF
6240 * |--MODIFIERS -> MODIFIERS
6241 * | |--LITERAL_PUBLIC -> public
6242 * | `--LITERAL_SEALED -> sealed
6243 * |--LITERAL_CLASS -> class
6244 * |--IDENT -> Shape
6245 * |--PERMITS_CLAUSE -> permits
6246 * | |--IDENT -> Circle
6247 * | |--COMMA -> ,
6248 * | |--IDENT -> Square
6249 * | |--COMMA -> ,
6250 * | `--IDENT -> Rectangle
6251 * `--OBJBLOCK -> OBJBLOCK
6252 * |--LCURLY -> {
6253 * `--RCURLY -> }
6254 * }
6255 *
6256 * @see <a href="https://docs.oracle.com/en/java/javase/15/docs/specs/sealed-classes-jls.html">
6257 * Java Language Specification, §8.1.1.2</a>
6258 * @see #MODIFIERS
6259 *
6260 * @since 8.42
6261 */
6262 public static final int LITERAL_SEALED =
6263 JavaLanguageLexer.LITERAL_SEALED;
6264
6265 /**
6266 * The {@code permits} restricted identifier. This element appears
6267 * as part of a class or interface declaration.
6268 *
6269 * <p>For example:</p>
6270 * {@snippet :
6271 * public sealed class Shape permits Circle, Square, Rectangle { }
6272 * }
6273 *
6274 * <p>parses as:</p>
6275 * {@snippet :
6276 * CLASS_DEF -> CLASS_DEF
6277 * |--MODIFIERS -> MODIFIERS
6278 * | |--LITERAL_PUBLIC -> public
6279 * | `--LITERAL_SEALED -> sealed
6280 * |--LITERAL_CLASS -> class
6281 * |--IDENT -> Shape
6282 * |--PERMITS_CLAUSE -> permits
6283 * | |--IDENT -> Circle
6284 * | |--COMMA -> ,
6285 * | |--IDENT -> Square
6286 * | |--COMMA -> ,
6287 * | `--IDENT -> Rectangle
6288 * `--OBJBLOCK -> OBJBLOCK
6289 * |--LCURLY -> {
6290 * `--RCURLY -> }
6291 * }
6292 *
6293 * @see <a href="https://docs.oracle.com/en/java/javase/15/docs/specs/sealed-classes-jls.html">
6294 * Java Language Specification, §9.1.4</a>
6295 * @see #MODIFIERS
6296 *
6297 * @since 8.42
6298 */
6299 public static final int LITERAL_PERMITS =
6300 JavaLanguageLexer.LITERAL_PERMITS;
6301
6302 /**
6303 * A permits clause. A permits clause's children are a comma separated list of one or
6304 * more identifiers.
6305 *
6306 * <p>For example:</p>
6307 * {@snippet :
6308 * public sealed class Shape permits Circle, Square, Rectangle { }
6309 * }
6310 *
6311 * <p>parses as:</p>
6312 * {@snippet :
6313 * CLASS_DEF -> CLASS_DEF
6314 * |--MODIFIERS -> MODIFIERS
6315 * | |--LITERAL_PUBLIC -> public
6316 * | `--LITERAL_SEALED -> sealed
6317 * |--LITERAL_CLASS -> class
6318 * |--IDENT -> Shape
6319 * |--PERMITS_CLAUSE -> permits
6320 * | |--IDENT -> Circle
6321 * | |--COMMA -> ,
6322 * | |--IDENT -> Square
6323 * | |--COMMA -> ,
6324 * | `--IDENT -> Rectangle
6325 * `--OBJBLOCK -> OBJBLOCK
6326 * |--LCURLY -> {
6327 * `--RCURLY -> }
6328 * }
6329 *
6330 * @see <a href="https://docs.oracle.com/en/java/javase/15/docs/specs/sealed-classes-jls.html">
6331 * Java Language Specification, §9.1.4</a>
6332 * @see #MODIFIERS
6333 * @see #CLASS_DEF
6334 * @see #INTERFACE_DEF
6335 * @see #COMMA
6336 * @see #IDENT
6337 *
6338 * @since 8.42
6339 */
6340 public static final int PERMITS_CLAUSE =
6341 JavaLanguageLexer.PERMITS_CLAUSE;
6342
6343 /**
6344 * A pattern definition, excluding simple type pattern (pattern variable)
6345 * definition such as {@code if (o instanceof Integer i){}}. Pattern definitions
6346 * appear as operands of statements and expressions.
6347 *
6348 * <p>For example:</p>
6349 * {@snippet :
6350 * switch(o) {
6351 * case String s when s.length() > 4: // guarded pattern, `PATTERN_DEF`
6352 * break;
6353 * case String s: // type pattern, no `PATTERN_DEF`
6354 * break;
6355 * }
6356 * }
6357 *
6358 * <p>parses as:</p>
6359 * {@snippet :
6360 * LITERAL_SWITCH -> switch
6361 * | |--LPAREN -> (
6362 * | |--EXPR -> EXPR
6363 * | | `--IDENT -> o
6364 * | |--RPAREN -> )
6365 * | |--LCURLY -> {
6366 * | |--CASE_GROUP -> CASE_GROUP
6367 * | | |--LITERAL_CASE -> case
6368 * | | | |--PATTERN_DEF -> PATTERN_DEF
6369 * | | | | `--LITERAL_WHEN -> when
6370 * | | | | |--PATTERN_VARIABLE_DEF -> PATTERN_VARIABLE_DEF
6371 * | | | | | |--MODIFIERS -> MODIFIERS
6372 * | | | | | |--TYPE -> TYPE
6373 * | | | | | | `--IDENT -> String
6374 * | | | | | `--IDENT -> s
6375 * | | | | `--GT -> >
6376 * | | | | |--METHOD_CALL -> (
6377 * | | | | | |--DOT -> .
6378 * | | | | | | |--IDENT -> s
6379 * | | | | | | `--IDENT -> length
6380 * | | | | | |--ELIST -> ELIST
6381 * | | | | | `--RPAREN -> )
6382 * | | | | `--NUM_INT -> 4
6383 * | | | `--COLON -> :
6384 * | | `--SLIST -> SLIST
6385 * | | `--LITERAL_BREAK -> break
6386 * | | `--SEMI -> ;
6387 * | |--CASE_GROUP -> CASE_GROUP
6388 * | | |--LITERAL_CASE -> case
6389 * | | | |--PATTERN_VARIABLE_DEF -> PATTERN_VARIABLE_DEF
6390 * | | | | |--MODIFIERS -> MODIFIERS
6391 * | | | | |--TYPE -> TYPE
6392 * | | | | | `--IDENT -> String
6393 * | | | | `--IDENT -> s
6394 * | | | `--COLON -> :
6395 * | | `--SLIST -> SLIST
6396 * | | `--LITERAL_BREAK -> break
6397 * | | `--SEMI -> ;
6398 * | `--RCURLY -> }
6399 * `--RCURLY -> }
6400 * }
6401 *
6402 * @see <a href="https://docs.oracle.com/javase/specs/jls/se17/html/jls-14.html#jls-14.30">
6403 * Java Language Specification, §14.30</a>
6404 * @see #LITERAL_SWITCH
6405 * @see #PATTERN_VARIABLE_DEF
6406 * @see #LITERAL_INSTANCEOF
6407 *
6408 * @since 9.3
6409 */
6410 public static final int PATTERN_DEF =
6411 JavaLanguageLexer.PATTERN_DEF;
6412
6413 /**
6414 * A {@code when} clause. Appears as part of a switch label in a guarded pattern definition.
6415 *
6416 * <p>For example:</p>
6417 * {@snippet :
6418 * return switch (o) {
6419 * case Integer i when i >= 0 -> i;
6420 * default -> 2;
6421 * };
6422 * }
6423 *
6424 * <p>parses as:</p>
6425 * {@snippet :
6426 * LITERAL_RETURN -> return
6427 * `--EXPR -> EXPR
6428 * `--LITERAL_SWITCH -> switch
6429 * |--LPAREN -> (
6430 * |--EXPR -> EXPR
6431 * | `--IDENT -> o
6432 * |--RPAREN -> )
6433 * |--LCURLY -> {
6434 * |--SWITCH_RULE -> SWITCH_RULE
6435 * | |--LITERAL_CASE -> case
6436 * | | `--PATTERN_DEF -> PATTERN_DEF
6437 * | | `--LITERAL_WHEN -> when
6438 * | | |--PATTERN_VARIABLE_DEF -> PATTERN_VARIABLE_DEF
6439 * | | | |--MODIFIERS -> MODIFIERS
6440 * | | | |--TYPE -> TYPE
6441 * | | | | `--IDENT -> Integer
6442 * | | | `--IDENT -> i
6443 * | | `--GE -> >=
6444 * | | |--IDENT -> i
6445 * | | `--NUM_INT -> 0
6446 * | |--LAMBDA -> ->
6447 * | |--EXPR -> EXPR
6448 * | | `--IDENT -> i
6449 * | `--SEMI -> ;
6450 * |--SWITCH_RULE -> SWITCH_RULE
6451 * | |--LITERAL_DEFAULT -> default
6452 * | |--LAMBDA -> ->
6453 * | |--EXPR -> EXPR
6454 * | | `--NUM_INT -> 2
6455 * | `--SEMI -> ;
6456 * `--RCURLY -> }
6457 * }
6458 *
6459 * @see <a href="https://docs.oracle.com/javase/specs/jls/se17/html/jls-14.html#jls-14.30">
6460 * Java Language Specification, §14.30</a>
6461 * @see #LITERAL_SWITCH
6462 * @see #PATTERN_VARIABLE_DEF
6463 * @see #LITERAL_INSTANCEOF
6464 * @see #SWITCH_RULE
6465 *
6466 * @since 10.7.0
6467 */
6468 public static final int LITERAL_WHEN =
6469 JavaLanguageLexer.LITERAL_WHEN;
6470
6471 /**
6472 * A {@code record} pattern definition. A record pattern consists of a type,
6473 * a (possibly empty) record component pattern list which is used to match against
6474 * the corresponding record components, and an optional identifier. Appears as part of
6475 * an {@code instanceof} expression or a {@code case} label in a switch.
6476 *
6477 * <p>For example:</p>
6478 * {@snippet :
6479 * record R(Object o){}
6480 * if (o instanceof R(String s) myRecord) {}
6481 * switch (o) {
6482 * case R(String s) myRecord -> {}
6483 * }
6484 * }
6485 *
6486 * <p>parses as:</p>
6487 * {@snippet :
6488 * |--RECORD_DEF -> RECORD_DEF
6489 * | |--MODIFIERS -> MODIFIERS
6490 * | |--LITERAL_RECORD -> record
6491 * | |--IDENT -> R
6492 * | |--LPAREN -> (
6493 * | |--RECORD_COMPONENTS -> RECORD_COMPONENTS
6494 * | | `--RECORD_COMPONENT_DEF -> RECORD_COMPONENT_DEF
6495 * | | |--ANNOTATIONS -> ANNOTATIONS
6496 * | | |--TYPE -> TYPE
6497 * | | | `--IDENT -> Object
6498 * | | `--IDENT -> o
6499 * | |--RPAREN -> )
6500 * | `--OBJBLOCK -> OBJBLOCK
6501 * | |--LCURLY -> {
6502 * | `--RCURLY -> }
6503 * |--LITERAL_IF -> if
6504 * | |--LPAREN -> (
6505 * | |--EXPR -> EXPR
6506 * | | `--LITERAL_INSTANCEOF -> instanceof
6507 * | | |--IDENT -> o
6508 * | | `--RECORD_PATTERN_DEF -> RECORD_PATTERN_DEF
6509 * | | |--MODIFIERS -> MODIFIERS
6510 * | | |--TYPE -> TYPE
6511 * | | | `--IDENT -> R
6512 * | | |--LPAREN -> (
6513 * | | |--RECORD_PATTERN_COMPONENTS -> RECORD_PATTERN_COMPONENTS
6514 * | | | `--PATTERN_VARIABLE_DEF -> PATTERN_VARIABLE_DEF
6515 * | | | |--MODIFIERS -> MODIFIERS
6516 * | | | |--TYPE -> TYPE
6517 * | | | | `--IDENT -> String
6518 * | | | `--IDENT -> s
6519 * | | |--RPAREN -> )
6520 * | | `--IDENT -> myRecord
6521 * | |--RPAREN -> )
6522 * | `--SLIST -> {
6523 * | `--RCURLY -> }
6524 * |--LITERAL_SWITCH -> switch
6525 * | |--LPAREN -> (
6526 * | |--EXPR -> EXPR
6527 * | | `--IDENT -> o
6528 * | |--RPAREN -> )
6529 * | |--LCURLY -> {
6530 * | |--SWITCH_RULE -> SWITCH_RULE
6531 * | | |--LITERAL_CASE -> case
6532 * | | | `--RECORD_PATTERN_DEF -> RECORD_PATTERN_DEF
6533 * | | | |--MODIFIERS -> MODIFIERS
6534 * | | | |--TYPE -> TYPE
6535 * | | | | `--IDENT -> R
6536 * | | | |--LPAREN -> (
6537 * | | | |--RECORD_PATTERN_COMPONENTS -> RECORD_PATTERN_COMPONENTS
6538 * | | | | `--PATTERN_VARIABLE_DEF -> PATTERN_VARIABLE_DEF
6539 * | | | | |--MODIFIERS -> MODIFIERS
6540 * | | | | |--TYPE -> TYPE
6541 * | | | | | `--IDENT -> String
6542 * | | | | `--IDENT -> s
6543 * | | | |--RPAREN -> )
6544 * | | | `--IDENT -> myRecord
6545 * | | |--LAMBDA -> ->
6546 * | | `--SLIST -> {
6547 * | | `--RCURLY -> }
6548 * | `--RCURLY -> }
6549 * `--RCURLY -> }
6550 * }
6551 *
6552 * @see <a href="https://openjdk.org/jeps/405">JEP 405: Record Patterns</a>
6553 * @see #LITERAL_WHEN
6554 * @see #PATTERN_VARIABLE_DEF
6555 * @see #LITERAL_INSTANCEOF
6556 * @see #SWITCH_RULE
6557 *
6558 * @since 10.12.0
6559 */
6560 public static final int RECORD_PATTERN_DEF =
6561 JavaLanguageLexer.RECORD_PATTERN_DEF;
6562
6563 /**
6564 * A (possibly empty) record component pattern list which is used to match against
6565 * the corresponding record components. Appears as part of a record pattern definition.
6566 *
6567 * <p>For example:</p>
6568 * {@snippet :
6569 * record R(Object o){}
6570 * if (o instanceof R(String myComponent)) {}
6571 * switch (o) {
6572 * case R(String myComponent) when "component".equalsIgnoreCase(myComponent) -> {}
6573 * }
6574 * }
6575 *
6576 * <p>parses as:</p>
6577 * {@snippet :
6578 * |--RECORD_DEF -> RECORD_DEF
6579 * | |--MODIFIERS -> MODIFIERS
6580 * | |--LITERAL_RECORD -> record
6581 * | |--IDENT -> R
6582 * | |--LPAREN -> (
6583 * | |--RECORD_COMPONENTS -> RECORD_COMPONENTS
6584 * | | `--RECORD_COMPONENT_DEF -> RECORD_COMPONENT_DEF
6585 * | | |--ANNOTATIONS -> ANNOTATIONS
6586 * | | |--TYPE -> TYPE
6587 * | | | `--IDENT -> Object
6588 * | | `--IDENT -> o
6589 * | |--RPAREN -> )
6590 * | `--OBJBLOCK -> OBJBLOCK
6591 * | |--LCURLY -> {
6592 * | `--RCURLY -> }
6593 * |--LITERAL_IF -> if
6594 * | |--LPAREN -> (
6595 * | |--EXPR -> EXPR
6596 * | | `--LITERAL_INSTANCEOF -> instanceof
6597 * | | |--IDENT -> o
6598 * | | `--RECORD_PATTERN_DEF -> RECORD_PATTERN_DEF
6599 * | | |--MODIFIERS -> MODIFIERS
6600 * | | |--TYPE -> TYPE
6601 * | | | `--IDENT -> R
6602 * | | |--LPAREN -> (
6603 * | | |--RECORD_PATTERN_COMPONENTS -> RECORD_PATTERN_COMPONENTS
6604 * | | | `--PATTERN_VARIABLE_DEF -> PATTERN_VARIABLE_DEF
6605 * | | | |--MODIFIERS -> MODIFIERS
6606 * | | | |--TYPE -> TYPE
6607 * | | | | `--IDENT -> String
6608 * | | | `--IDENT -> myComponent
6609 * | | `--RPAREN -> )
6610 * | |--RPAREN -> )
6611 * | `--SLIST -> {
6612 * | `--RCURLY -> }
6613 * |--LITERAL_SWITCH -> switch
6614 * | |--LPAREN -> (
6615 * | |--EXPR -> EXPR
6616 * | | `--IDENT -> o
6617 * | |--RPAREN -> )
6618 * | |--LCURLY -> {
6619 * | |--SWITCH_RULE -> SWITCH_RULE
6620 * | | |--LITERAL_CASE -> case
6621 * | | | `--PATTERN_DEF -> PATTERN_DEF
6622 * | | | `--LITERAL_WHEN -> when
6623 * | | | |--RECORD_PATTERN_DEF -> RECORD_PATTERN_DEF
6624 * | | | | |--MODIFIERS -> MODIFIERS
6625 * | | | | |--TYPE -> TYPE
6626 * | | | | | `--IDENT -> R
6627 * | | | | |--LPAREN -> (
6628 * | | | | |--RECORD_PATTERN_COMPONENTS -> RECORD_PATTERN_COMPONENTS
6629 * | | | | | `--PATTERN_VARIABLE_DEF -> PATTERN_VARIABLE_DEF
6630 * | | | | | |--MODIFIERS -> MODIFIERS
6631 * | | | | | |--TYPE -> TYPE
6632 * | | | | | | `--IDENT -> String
6633 * | | | | | `--IDENT -> myComponent
6634 * | | | | `--RPAREN -> )
6635 * | | | `--METHOD_CALL -> (
6636 * | | | |--DOT -> .
6637 * | | | | |--STRING_LITERAL -> "component"
6638 * | | | | `--IDENT -> equalsIgnoreCase
6639 * | | | |--ELIST -> ELIST
6640 * | | | | `--EXPR -> EXPR
6641 * | | | | `--IDENT -> myComponent
6642 * | | | `--RPAREN -> )
6643 * | | |--LAMBDA -> ->
6644 * | | `--SLIST -> {
6645 * | | `--RCURLY -> }
6646 * | `--RCURLY -> }
6647 * `--RCURLY -> }
6648 * }
6649 *
6650 * @see <a href="https://openjdk.org/jeps/405">JEP 405: Record Patterns</a>
6651 * @see #LITERAL_WHEN
6652 * @see #PATTERN_VARIABLE_DEF
6653 * @see #LITERAL_INSTANCEOF
6654 * @see #SWITCH_RULE
6655 *
6656 * @since 10.12.0
6657 */
6658 public static final int RECORD_PATTERN_COMPONENTS =
6659 JavaLanguageLexer.RECORD_PATTERN_COMPONENTS;
6660
6661 /**
6662 * An unnamed pattern variable definition. Appears as part of a pattern definition.
6663 *
6664 * <p>For example:</p>
6665 * {@snippet :
6666 * if (r instanceof R(_)) {}
6667 * }
6668 *
6669 * <p>parses as:</p>
6670 * {@snippet :
6671 * LITERAL_IF -> if
6672 * |--LPAREN -> (
6673 * |--EXPR -> EXPR
6674 * | `--LITERAL_INSTANCEOF -> instanceof
6675 * | |--IDENT -> r
6676 * | `--RECORD_PATTERN_DEF -> RECORD_PATTERN_DEF
6677 * | |--MODIFIERS -> MODIFIERS
6678 * | |--TYPE -> TYPE
6679 * | | `--IDENT -> R
6680 * | |--LPAREN -> (
6681 * | |--RECORD_PATTERN_COMPONENTS -> RECORD_PATTERN_COMPONENTS
6682 * | | `--UNNAMED_PATTERN_DEF -> _
6683 * | `--RPAREN -> )
6684 * |--RPAREN -> )
6685 * `--SLIST -> {
6686 * `--RCURLY -> }
6687 * }
6688 *
6689 * @see #RECORD_PATTERN_COMPONENTS
6690 * @see #RECORD_PATTERN_DEF
6691 * @see #LITERAL_SWITCH
6692 * @see #LITERAL_INSTANCEOF
6693 * @see #SWITCH_RULE
6694 * @see #LITERAL_WHEN
6695 * @see #PATTERN_VARIABLE_DEF
6696 * @see #PATTERN_DEF
6697 *
6698 * @since 10.14.0
6699 */
6700 public static final int UNNAMED_PATTERN_DEF =
6701 JavaLanguageLexer.UNNAMED_PATTERN_DEF;
6702
6703 /**
6704 * A {@code module} keyword.
6705 *
6706 * <p>For example:</p>
6707 * {@snippet :
6708 * import module java.base;
6709 * }
6710 *
6711 * <p>parses as:</p>
6712 * {@snippet :
6713 * MODULE_IMPORT -> import
6714 * |--LITERAL_MODULE -> module
6715 * |--DOT -> .
6716 * | |--IDENT -> java
6717 * | `--IDENT -> base
6718 * `--SEMI -> ;
6719 * }
6720 *
6721 * @see <a href="https://docs.oracle.com/javase/specs/jls/se25/html/jls-7.html#jls-7.5.5">
6722 * Java Language Specification, §7.5.5</a>
6723 * @see <a href="https://docs.oracle.com/javase/specs/jls/se25/html/jls-7.html#jls-7.7">
6724 * Java Language Specification, §7.7</a>
6725 * @see #IMPORT
6726 * @see #MODULE_IMPORT
6727 *
6728 * @since 12.2.0
6729 */
6730 public static final int LITERAL_MODULE = JavaLanguageLexer.LITERAL_MODULE;
6731
6732 /**
6733 * A module import declaration - {@code import module}.
6734 *
6735 * <p>For example:</p>
6736 * {@snippet :
6737 * import module java.base;
6738 * }
6739 *
6740 * <p>parses as:</p>
6741 * {@snippet :
6742 * MODULE_IMPORT -> import
6743 * |--LITERAL_MODULE -> module
6744 * |--DOT -> .
6745 * | |--IDENT -> java
6746 * | `--IDENT -> base
6747 * `--SEMI -> ;
6748 * }
6749 *
6750 * @see <a href="https://docs.oracle.com/javase/specs/jls/se25/html/jls-7.html#jls-7.5.5">
6751 * Java Language Specification, §7.5.5</a>
6752 * @see #IMPORT
6753 * @see #LITERAL_MODULE
6754 *
6755 * @since 12.2.0
6756 */
6757 public static final int MODULE_IMPORT = JavaLanguageLexer.MODULE_IMPORT;
6758
6759 /**
6760 * An {@code open} keyword. This keyword marks a module declaration as open,
6761 * making all its packages available for deep reflection. It appears as a
6762 * child of {@link #MODULE_DEF}.
6763 *
6764 * <p>For example:</p>
6765 * {@snippet :
6766 * open module com.example.app {
6767 * }
6768 * }
6769 *
6770 * <p>parses as:</p>
6771 * {@snippet :
6772 * MODULE_DEF -> MODULE_DEF
6773 * |--ANNOTATIONS -> ANNOTATIONS
6774 * |--LITERAL_OPEN -> open
6775 * |--LITERAL_MODULE -> module
6776 * |--DOT -> .
6777 * | |--DOT -> .
6778 * | | |--IDENT -> com
6779 * | | `--IDENT -> example
6780 * | `--IDENT -> app
6781 * `--DIRECTIVE_BLOCK -> DIRECTIVE_BLOCK
6782 * |--LCURLY -> {
6783 * `--RCURLY -> }
6784 * }
6785 *
6786 * @see <a href="https://docs.oracle.com/javase/specs/jls/se25/html/jls-7.html#jls-7.7">
6787 * Java Language Specification, §7.7</a>
6788 * @see #MODULE_DEF
6789 *
6790 * @since 14.0.0
6791 */
6792 public static final int LITERAL_OPEN = JavaLanguageLexer.LITERAL_OPEN;
6793
6794 /**
6795 * A {@code transitive} keyword. This keyword is a modifier of a
6796 * {@link #REQUIRES} directive and appears as a child of it.
6797 *
6798 * <p>For example:</p>
6799 * {@snippet :
6800 * requires transitive java.sql;
6801 * }
6802 *
6803 * <p>parses as:</p>
6804 * {@snippet :
6805 * REQUIRES -> requires
6806 * |--LITERAL_TRANSITIVE -> transitive
6807 * |--DOT -> .
6808 * | |--IDENT -> java
6809 * | `--IDENT -> sql
6810 * `--SEMI -> ;
6811 * }
6812 *
6813 * @see <a href="https://docs.oracle.com/javase/specs/jls/se25/html/jls-7.html#jls-7.7.1">
6814 * Java Language Specification, §7.7.1</a>
6815 * @see #REQUIRES
6816 *
6817 * @since 14.0.0
6818 */
6819 public static final int LITERAL_TRANSITIVE = JavaLanguageLexer.LITERAL_TRANSITIVE;
6820
6821 /**
6822 * A module declaration. The declaration of a Java Platform Module System
6823 * module, as found in a {@code module-info.java} file. Its children are
6824 * an {@link #ANNOTATIONS} node (which may be empty), an optional
6825 * {@link #LITERAL_OPEN}, a {@link #LITERAL_MODULE}, the module name, and
6826 * a {@link #DIRECTIVE_BLOCK}.
6827 *
6828 * <p>For example:</p>
6829 * {@snippet :
6830 * module com.example.app {
6831 * requires java.base;
6832 * }
6833 * }
6834 *
6835 * <p>parses as:</p>
6836 * {@snippet :
6837 * COMPILATION_UNIT -> COMPILATION_UNIT
6838 * `--MODULE_DEF -> MODULE_DEF
6839 * |--ANNOTATIONS -> ANNOTATIONS
6840 * |--LITERAL_MODULE -> module
6841 * |--DOT -> .
6842 * | |--DOT -> .
6843 * | | |--IDENT -> com
6844 * | | `--IDENT -> example
6845 * | `--IDENT -> app
6846 * `--DIRECTIVE_BLOCK -> DIRECTIVE_BLOCK
6847 * |--LCURLY -> {
6848 * |--REQUIRES -> requires
6849 * | |--DOT -> .
6850 * | | |--IDENT -> java
6851 * | | `--IDENT -> base
6852 * | `--SEMI -> ;
6853 * `--RCURLY -> }
6854 * }
6855 *
6856 * @see <a href="https://docs.oracle.com/javase/specs/jls/se25/html/jls-7.html#jls-7.7">
6857 * Java Language Specification, §7.7</a>
6858 * @see #DIRECTIVE_BLOCK
6859 * @see #LITERAL_MODULE
6860 * @see #LITERAL_OPEN
6861 * @see #ANNOTATIONS
6862 *
6863 * @since 14.0.0
6864 */
6865 public static final int MODULE_DEF = JavaLanguageLexer.MODULE_DEF;
6866
6867 /**
6868 * A directive block. The braced body of a module declaration, containing
6869 * zero or more module directives. It is a child of {@link #MODULE_DEF}.
6870 *
6871 * <p>For example:</p>
6872 * {@snippet :
6873 * module com.example.app {
6874 * uses com.example.api.Service;
6875 * }
6876 * }
6877 *
6878 * <p>parses as:</p>
6879 * {@snippet :
6880 * MODULE_DEF -> MODULE_DEF
6881 * |--ANNOTATIONS -> ANNOTATIONS
6882 * |--LITERAL_MODULE -> module
6883 * |--DOT -> .
6884 * | |--DOT -> .
6885 * | | |--IDENT -> com
6886 * | | `--IDENT -> example
6887 * | `--IDENT -> app
6888 * `--DIRECTIVE_BLOCK -> DIRECTIVE_BLOCK
6889 * |--LCURLY -> {
6890 * |--USES -> uses
6891 * | |--DOT -> .
6892 * | | |--DOT -> .
6893 * | | | |--DOT -> .
6894 * | | | | |--IDENT -> com
6895 * | | | | `--IDENT -> example
6896 * | | | `--IDENT -> api
6897 * | | `--IDENT -> Service
6898 * | `--SEMI -> ;
6899 * `--RCURLY -> }
6900 * }
6901 *
6902 * @see <a href="https://docs.oracle.com/javase/specs/jls/se25/html/jls-7.html#jls-7.7">
6903 * Java Language Specification, §7.7</a>
6904 * @see #MODULE_DEF
6905 *
6906 * @since 14.0.0
6907 */
6908 public static final int DIRECTIVE_BLOCK = JavaLanguageLexer.DIRECTIVE_BLOCK;
6909
6910 /**
6911 * A requires directive. Declares a dependence of the current module on
6912 * another module. Its children are optional {@link #LITERAL_TRANSITIVE}
6913 * or {@link #LITERAL_STATIC} modifiers, the name of the required module,
6914 * and a semicolon.
6915 *
6916 * <p>For example:</p>
6917 * {@snippet :
6918 * requires transitive java.sql;
6919 * }
6920 *
6921 * <p>parses as:</p>
6922 * {@snippet :
6923 * REQUIRES -> requires
6924 * |--LITERAL_TRANSITIVE -> transitive
6925 * |--DOT -> .
6926 * | |--IDENT -> java
6927 * | `--IDENT -> sql
6928 * `--SEMI -> ;
6929 * }
6930 *
6931 * @see <a href="https://docs.oracle.com/javase/specs/jls/se25/html/jls-7.html#jls-7.7.1">
6932 * Java Language Specification, §7.7.1</a>
6933 * @see #DIRECTIVE_BLOCK
6934 * @see #LITERAL_TRANSITIVE
6935 * @see #LITERAL_STATIC
6936 *
6937 * @since 14.0.0
6938 */
6939 public static final int REQUIRES = JavaLanguageLexer.REQUIRES;
6940
6941 /**
6942 * An exports directive. Makes a package of the current module accessible
6943 * to other modules. Its children are the exported package name, an
6944 * optional {@link #TO} clause, and a semicolon.
6945 *
6946 * <p>For example:</p>
6947 * {@snippet :
6948 * exports com.example.api to com.example.one, com.example.two;
6949 * }
6950 *
6951 * <p>parses as:</p>
6952 * {@snippet :
6953 * EXPORTS -> exports
6954 * |--DOT -> .
6955 * | |--DOT -> .
6956 * | | |--IDENT -> com
6957 * | | `--IDENT -> example
6958 * | `--IDENT -> api
6959 * |--TO -> to
6960 * | |--DOT -> .
6961 * | | |--DOT -> .
6962 * | | | |--IDENT -> com
6963 * | | | `--IDENT -> example
6964 * | | `--IDENT -> one
6965 * | |--COMMA -> ,
6966 * | `--DOT -> .
6967 * | |--DOT -> .
6968 * | | |--IDENT -> com
6969 * | | `--IDENT -> example
6970 * | `--IDENT -> two
6971 * `--SEMI -> ;
6972 * }
6973 *
6974 * @see <a href="https://docs.oracle.com/javase/specs/jls/se25/html/jls-7.html#jls-7.7.2">
6975 * Java Language Specification, §7.7.2</a>
6976 * @see #DIRECTIVE_BLOCK
6977 * @see #TO
6978 *
6979 * @since 14.0.0
6980 */
6981 public static final int EXPORTS = JavaLanguageLexer.EXPORTS;
6982
6983 /**
6984 * An opens directive. Makes a package of the current module available for
6985 * deep reflection to other modules. Its children are the opened package
6986 * name, an optional {@link #TO} clause, and a semicolon.
6987 *
6988 * <p>For example:</p>
6989 * {@snippet :
6990 * opens com.example.model;
6991 * }
6992 *
6993 * <p>parses as:</p>
6994 * {@snippet :
6995 * OPENS -> opens
6996 * |--DOT -> .
6997 * | |--DOT -> .
6998 * | | |--IDENT -> com
6999 * | | `--IDENT -> example
7000 * | `--IDENT -> model
7001 * `--SEMI -> ;
7002 * }
7003 *
7004 * @see <a href="https://docs.oracle.com/javase/specs/jls/se25/html/jls-7.html#jls-7.7.2">
7005 * Java Language Specification, §7.7.2</a>
7006 * @see #DIRECTIVE_BLOCK
7007 * @see #TO
7008 *
7009 * @since 14.0.0
7010 */
7011 public static final int OPENS = JavaLanguageLexer.OPENS;
7012
7013 /**
7014 * A uses directive. Declares a service whose implementations the current
7015 * module discovers via {@code java.util.ServiceLoader}. Its children are
7016 * the service type name and a semicolon.
7017 *
7018 * <p>For example:</p>
7019 * {@snippet :
7020 * uses com.example.api.Service;
7021 * }
7022 *
7023 * <p>parses as:</p>
7024 * {@snippet :
7025 * USES -> uses
7026 * |--DOT -> .
7027 * | |--DOT -> .
7028 * | | |--DOT -> .
7029 * | | | |--IDENT -> com
7030 * | | | `--IDENT -> example
7031 * | | `--IDENT -> api
7032 * | `--IDENT -> Service
7033 * `--SEMI -> ;
7034 * }
7035 *
7036 * @see <a href="https://docs.oracle.com/javase/specs/jls/se25/html/jls-7.html#jls-7.7.3">
7037 * Java Language Specification, §7.7.3</a>
7038 * @see #DIRECTIVE_BLOCK
7039 *
7040 * @since 14.0.0
7041 */
7042 public static final int USES = JavaLanguageLexer.USES;
7043
7044 /**
7045 * A provides directive. Declares implementations of a service that the
7046 * current module supplies. Its children are the service type name, a
7047 * {@link #WITH} clause, and a semicolon.
7048 *
7049 * <p>For example:</p>
7050 * {@snippet :
7051 * provides com.example.Service with com.example.Impl;
7052 * }
7053 *
7054 * <p>parses as:</p>
7055 * {@snippet :
7056 * PROVIDES -> provides
7057 * |--DOT -> .
7058 * | |--DOT -> .
7059 * | | |--IDENT -> com
7060 * | | `--IDENT -> example
7061 * | `--IDENT -> Service
7062 * |--WITH -> with
7063 * | `--DOT -> .
7064 * | |--DOT -> .
7065 * | | |--IDENT -> com
7066 * | | `--IDENT -> example
7067 * | `--IDENT -> Impl
7068 * `--SEMI -> ;
7069 * }
7070 *
7071 * @see <a href="https://docs.oracle.com/javase/specs/jls/se25/html/jls-7.html#jls-7.7.4">
7072 * Java Language Specification, §7.7.4</a>
7073 * @see #DIRECTIVE_BLOCK
7074 * @see #WITH
7075 *
7076 * @since 14.0.0
7077 */
7078 public static final int PROVIDES = JavaLanguageLexer.PROVIDES;
7079
7080 /**
7081 * A to clause. Limits an {@link #EXPORTS} or {@link #OPENS} directive to
7082 * the named friend modules. Its children are the module names, separated
7083 * by commas.
7084 *
7085 * <p>For example:</p>
7086 * {@snippet :
7087 * opens com.example.secrets to com.example.friend;
7088 * }
7089 *
7090 * <p>parses as:</p>
7091 * {@snippet :
7092 * OPENS -> opens
7093 * |--DOT -> .
7094 * | |--DOT -> .
7095 * | | |--IDENT -> com
7096 * | | `--IDENT -> example
7097 * | `--IDENT -> secrets
7098 * |--TO -> to
7099 * | `--DOT -> .
7100 * | |--DOT -> .
7101 * | | |--IDENT -> com
7102 * | | `--IDENT -> example
7103 * | `--IDENT -> friend
7104 * `--SEMI -> ;
7105 * }
7106 *
7107 * @see <a href="https://docs.oracle.com/javase/specs/jls/se25/html/jls-7.html#jls-7.7.2">
7108 * Java Language Specification, §7.7.2</a>
7109 * @see #EXPORTS
7110 * @see #OPENS
7111 *
7112 * @since 14.0.0
7113 */
7114 public static final int TO = JavaLanguageLexer.TO;
7115
7116 /**
7117 * A with clause. Names the implementation types supplied by a
7118 * {@link #PROVIDES} directive. Its children are the implementation type
7119 * names, separated by commas.
7120 *
7121 * <p>For example:</p>
7122 * {@snippet :
7123 * provides com.example.Service with com.example.Impl;
7124 * }
7125 *
7126 * <p>parses as:</p>
7127 * {@snippet :
7128 * PROVIDES -> provides
7129 * |--DOT -> .
7130 * | |--DOT -> .
7131 * | | |--IDENT -> com
7132 * | | `--IDENT -> example
7133 * | `--IDENT -> Service
7134 * |--WITH -> with
7135 * | `--DOT -> .
7136 * | |--DOT -> .
7137 * | | |--IDENT -> com
7138 * | | `--IDENT -> example
7139 * | `--IDENT -> Impl
7140 * `--SEMI -> ;
7141 * }
7142 *
7143 * @see <a href="https://docs.oracle.com/javase/specs/jls/se25/html/jls-7.html#jls-7.7.4">
7144 * Java Language Specification, §7.7.4</a>
7145 * @see #PROVIDES
7146 *
7147 * @since 14.0.0
7148 */
7149 public static final int WITH = JavaLanguageLexer.WITH;
7150
7151 /** Prevent instantiation. */
7152 private TokenTypes() {
7153 }
7154
7155 }