diff --git a/.github/workflows/build-gradle.yml b/.github/workflows/build-gradle.yml
index 85e3bfdf8..2f469d480 100644
--- a/.github/workflows/build-gradle.yml
+++ b/.github/workflows/build-gradle.yml
@@ -1,4 +1,4 @@
-name: Pre-releases
+name: Pre-releases with Gradle
on:
push:
paths-ignore:
diff --git a/java/.gitignore b/java/.gitignore
index 72e2e90da..787c94235 100644
--- a/java/.gitignore
+++ b/java/.gitignore
@@ -1,3 +1,2 @@
reference.zip
-bin-test
-generated
+bin-test
\ No newline at end of file
diff --git a/java/generated/processing/mode/java/preproc/Processing.interp b/java/generated/processing/mode/java/preproc/Processing.interp
new file mode 100644
index 000000000..d7097045d
--- /dev/null
+++ b/java/generated/processing/mode/java/preproc/Processing.interp
@@ -0,0 +1,357 @@
+token literal names:
+null
+'color'
+null
+null
+null
+null
+null
+'abstract'
+'assert'
+'boolean'
+'break'
+'byte'
+'case'
+'catch'
+'char'
+'class'
+'const'
+'continue'
+'default'
+'do'
+'double'
+'else'
+'enum'
+'extends'
+'final'
+'finally'
+'float'
+'for'
+'if'
+'goto'
+'implements'
+'import'
+'instanceof'
+'int'
+'interface'
+'long'
+'native'
+'new'
+'package'
+'private'
+'protected'
+'public'
+'return'
+'short'
+'static'
+'strictfp'
+'super'
+'switch'
+'synchronized'
+'this'
+'throw'
+'throws'
+'transient'
+'try'
+'var'
+'void'
+'volatile'
+'while'
+null
+null
+null
+null
+null
+null
+null
+null
+null
+'null'
+'('
+')'
+'{'
+'}'
+'['
+']'
+';'
+','
+'.'
+'='
+'>'
+'<'
+'!'
+'~'
+'?'
+':'
+'=='
+'<='
+'>='
+'!='
+'&&'
+'||'
+'++'
+'--'
+'+'
+'-'
+'*'
+'/'
+'&'
+'|'
+'^'
+'%'
+'+='
+'-='
+'*='
+'/='
+'&='
+'|='
+'^='
+'%='
+'<<='
+'>>='
+'>>>='
+'->'
+'::'
+'@'
+'...'
+null
+
+token symbolic names:
+null
+null
+HexColorLiteral
+WS
+COMMENT
+LINE_COMMENT
+CHAR_LITERAL
+ABSTRACT
+ASSERT
+BOOLEAN
+BREAK
+BYTE
+CASE
+CATCH
+CHAR
+CLASS
+CONST
+CONTINUE
+DEFAULT
+DO
+DOUBLE
+ELSE
+ENUM
+EXTENDS
+FINAL
+FINALLY
+FLOAT
+FOR
+IF
+GOTO
+IMPLEMENTS
+IMPORT
+INSTANCEOF
+INT
+INTERFACE
+LONG
+NATIVE
+NEW
+PACKAGE
+PRIVATE
+PROTECTED
+PUBLIC
+RETURN
+SHORT
+STATIC
+STRICTFP
+SUPER
+SWITCH
+SYNCHRONIZED
+THIS
+THROW
+THROWS
+TRANSIENT
+TRY
+VAR
+VOID
+VOLATILE
+WHILE
+DECIMAL_LITERAL
+HEX_LITERAL
+OCT_LITERAL
+BINARY_LITERAL
+FLOAT_LITERAL
+HEX_FLOAT_LITERAL
+BOOL_LITERAL
+STRING_LITERAL
+MULTI_STRING_LIT
+NULL_LITERAL
+LPAREN
+RPAREN
+LBRACE
+RBRACE
+LBRACK
+RBRACK
+SEMI
+COMMA
+DOT
+ASSIGN
+GT
+LT
+BANG
+TILDE
+QUESTION
+COLON
+EQUAL
+LE
+GE
+NOTEQUAL
+AND
+OR
+INC
+DEC
+ADD
+SUB
+MUL
+DIV
+BITAND
+BITOR
+CARET
+MOD
+ADD_ASSIGN
+SUB_ASSIGN
+MUL_ASSIGN
+DIV_ASSIGN
+AND_ASSIGN
+OR_ASSIGN
+XOR_ASSIGN
+MOD_ASSIGN
+LSHIFT_ASSIGN
+RSHIFT_ASSIGN
+URSHIFT_ASSIGN
+ARROW
+COLONCOLON
+AT
+ELLIPSIS
+IDENTIFIER
+
+rule names:
+processingSketch
+javaProcessingSketch
+staticProcessingSketch
+activeProcessingSketch
+warnMixedModes
+variableDeclaratorId
+warnTypeAsVariableName
+methodCall
+functionWithPrimitiveTypeName
+primitiveType
+colorPrimitiveType
+qualifiedName
+literal
+hexColorLiteral
+compilationUnit
+packageDeclaration
+importDeclaration
+typeDeclaration
+modifier
+classOrInterfaceModifier
+variableModifier
+classDeclaration
+typeParameters
+typeParameter
+typeBound
+enumDeclaration
+enumConstants
+enumConstant
+enumBodyDeclarations
+interfaceDeclaration
+classBody
+interfaceBody
+classBodyDeclaration
+memberDeclaration
+methodDeclaration
+methodBody
+typeTypeOrVoid
+genericMethodDeclaration
+genericConstructorDeclaration
+constructorDeclaration
+fieldDeclaration
+interfaceBodyDeclaration
+interfaceMemberDeclaration
+constDeclaration
+constantDeclarator
+interfaceMethodDeclaration
+interfaceMethodModifier
+genericInterfaceMethodDeclaration
+variableDeclarators
+variableDeclarator
+variableInitializer
+arrayInitializer
+classOrInterfaceType
+typeArgument
+qualifiedNameList
+formalParameters
+formalParameterList
+formalParameter
+lastFormalParameter
+baseStringLiteral
+multilineStringLiteral
+stringLiteral
+integerLiteral
+floatLiteral
+annotation
+elementValuePairs
+elementValuePair
+elementValue
+elementValueArrayInitializer
+annotationTypeDeclaration
+annotationTypeBody
+annotationTypeElementDeclaration
+annotationTypeElementRest
+annotationMethodOrConstantRest
+annotationMethodRest
+annotationConstantRest
+defaultValue
+block
+blockStatement
+localVariableDeclaration
+localTypeDeclaration
+statement
+catchClause
+catchType
+finallyBlock
+resourceSpecification
+resources
+resource
+switchBlockStatementGroup
+switchLabel
+forControl
+forInit
+enhancedForControl
+parExpression
+expressionList
+expression
+lambdaExpression
+lambdaParameters
+lambdaBody
+primary
+classType
+creator
+createdName
+innerCreator
+arrayCreatorRest
+classCreatorRest
+explicitGenericInvocation
+typeArgumentsOrDiamond
+nonWildcardTypeArgumentsOrDiamond
+nonWildcardTypeArguments
+typeList
+typeType
+typeArguments
+superSuffix
+explicitGenericInvocationSuffix
+arguments
+
+
+atn:
+[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 3, 117, 1537, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, 49, 4, 50, 9, 50, 4, 51, 9, 51, 4, 52, 9, 52, 4, 53, 9, 53, 4, 54, 9, 54, 4, 55, 9, 55, 4, 56, 9, 56, 4, 57, 9, 57, 4, 58, 9, 58, 4, 59, 9, 59, 4, 60, 9, 60, 4, 61, 9, 61, 4, 62, 9, 62, 4, 63, 9, 63, 4, 64, 9, 64, 4, 65, 9, 65, 4, 66, 9, 66, 4, 67, 9, 67, 4, 68, 9, 68, 4, 69, 9, 69, 4, 70, 9, 70, 4, 71, 9, 71, 4, 72, 9, 72, 4, 73, 9, 73, 4, 74, 9, 74, 4, 75, 9, 75, 4, 76, 9, 76, 4, 77, 9, 77, 4, 78, 9, 78, 4, 79, 9, 79, 4, 80, 9, 80, 4, 81, 9, 81, 4, 82, 9, 82, 4, 83, 9, 83, 4, 84, 9, 84, 4, 85, 9, 85, 4, 86, 9, 86, 4, 87, 9, 87, 4, 88, 9, 88, 4, 89, 9, 89, 4, 90, 9, 90, 4, 91, 9, 91, 4, 92, 9, 92, 4, 93, 9, 93, 4, 94, 9, 94, 4, 95, 9, 95, 4, 96, 9, 96, 4, 97, 9, 97, 4, 98, 9, 98, 4, 99, 9, 99, 4, 100, 9, 100, 4, 101, 9, 101, 4, 102, 9, 102, 4, 103, 9, 103, 4, 104, 9, 104, 4, 105, 9, 105, 4, 106, 9, 106, 4, 107, 9, 107, 4, 108, 9, 108, 4, 109, 9, 109, 4, 110, 9, 110, 4, 111, 9, 111, 4, 112, 9, 112, 4, 113, 9, 113, 4, 114, 9, 114, 4, 115, 9, 115, 4, 116, 9, 116, 4, 117, 9, 117, 3, 2, 3, 2, 3, 2, 5, 2, 238, 10, 2, 3, 3, 5, 3, 241, 10, 3, 3, 3, 7, 3, 244, 10, 3, 12, 3, 14, 3, 247, 11, 3, 3, 3, 6, 3, 250, 10, 3, 13, 3, 14, 3, 251, 3, 3, 3, 3, 3, 4, 3, 4, 3, 4, 7, 4, 259, 10, 4, 12, 4, 14, 4, 262, 11, 4, 3, 4, 3, 4, 3, 5, 3, 5, 7, 5, 268, 10, 5, 12, 5, 14, 5, 271, 11, 5, 3, 5, 3, 5, 3, 6, 3, 6, 3, 6, 7, 6, 278, 10, 6, 12, 6, 14, 6, 281, 11, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 7, 6, 288, 10, 6, 12, 6, 14, 6, 291, 11, 6, 3, 6, 3, 6, 3, 6, 7, 6, 296, 10, 6, 12, 6, 14, 6, 299, 11, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 7, 6, 306, 10, 6, 12, 6, 14, 6, 309, 11, 6, 5, 6, 311, 10, 6, 3, 7, 3, 7, 3, 7, 3, 7, 7, 7, 317, 10, 7, 12, 7, 14, 7, 320, 11, 7, 5, 7, 322, 10, 7, 3, 8, 3, 8, 3, 8, 7, 8, 327, 10, 8, 12, 8, 14, 8, 330, 11, 8, 3, 8, 3, 8, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 338, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 344, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 350, 10, 9, 3, 9, 5, 9, 353, 10, 9, 3, 10, 3, 10, 3, 10, 5, 10, 358, 10, 10, 3, 10, 3, 10, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 5, 11, 371, 10, 11, 3, 12, 3, 12, 3, 13, 3, 13, 5, 13, 377, 10, 13, 3, 13, 3, 13, 3, 13, 5, 13, 382, 10, 13, 7, 13, 384, 10, 13, 12, 13, 14, 13, 387, 11, 13, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 5, 14, 396, 10, 14, 3, 15, 3, 15, 3, 16, 5, 16, 401, 10, 16, 3, 16, 7, 16, 404, 10, 16, 12, 16, 14, 16, 407, 11, 16, 3, 16, 7, 16, 410, 10, 16, 12, 16, 14, 16, 413, 11, 16, 3, 16, 3, 16, 3, 17, 7, 17, 418, 10, 17, 12, 17, 14, 17, 421, 11, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 18, 3, 18, 5, 18, 429, 10, 18, 3, 18, 3, 18, 3, 18, 5, 18, 434, 10, 18, 3, 18, 3, 18, 3, 19, 7, 19, 439, 10, 19, 12, 19, 14, 19, 442, 11, 19, 3, 19, 3, 19, 3, 19, 3, 19, 5, 19, 448, 10, 19, 3, 19, 5, 19, 451, 10, 19, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 5, 20, 458, 10, 20, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 5, 21, 468, 10, 21, 3, 22, 3, 22, 5, 22, 472, 10, 22, 3, 23, 3, 23, 3, 23, 5, 23, 477, 10, 23, 3, 23, 3, 23, 5, 23, 481, 10, 23, 3, 23, 3, 23, 5, 23, 485, 10, 23, 3, 23, 3, 23, 3, 24, 3, 24, 3, 24, 3, 24, 7, 24, 493, 10, 24, 12, 24, 14, 24, 496, 11, 24, 3, 24, 3, 24, 3, 25, 7, 25, 501, 10, 25, 12, 25, 14, 25, 504, 11, 25, 3, 25, 3, 25, 3, 25, 5, 25, 509, 10, 25, 3, 26, 3, 26, 3, 26, 7, 26, 514, 10, 26, 12, 26, 14, 26, 517, 11, 26, 3, 27, 3, 27, 3, 27, 3, 27, 5, 27, 523, 10, 27, 3, 27, 3, 27, 5, 27, 527, 10, 27, 3, 27, 5, 27, 530, 10, 27, 3, 27, 5, 27, 533, 10, 27, 3, 27, 3, 27, 3, 28, 3, 28, 3, 28, 7, 28, 540, 10, 28, 12, 28, 14, 28, 543, 11, 28, 3, 29, 7, 29, 546, 10, 29, 12, 29, 14, 29, 549, 11, 29, 3, 29, 3, 29, 5, 29, 553, 10, 29, 3, 29, 5, 29, 556, 10, 29, 3, 30, 3, 30, 7, 30, 560, 10, 30, 12, 30, 14, 30, 563, 11, 30, 3, 31, 3, 31, 3, 31, 5, 31, 568, 10, 31, 3, 31, 3, 31, 5, 31, 572, 10, 31, 3, 31, 3, 31, 3, 32, 3, 32, 7, 32, 578, 10, 32, 12, 32, 14, 32, 581, 11, 32, 3, 32, 3, 32, 3, 33, 3, 33, 7, 33, 587, 10, 33, 12, 33, 14, 33, 590, 11, 33, 3, 33, 3, 33, 3, 34, 3, 34, 3, 34, 5, 34, 597, 10, 34, 3, 34, 3, 34, 7, 34, 601, 10, 34, 12, 34, 14, 34, 604, 11, 34, 3, 34, 5, 34, 607, 10, 34, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 5, 35, 618, 10, 35, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 7, 36, 625, 10, 36, 12, 36, 14, 36, 628, 11, 36, 3, 36, 3, 36, 5, 36, 632, 10, 36, 3, 36, 3, 36, 3, 37, 3, 37, 5, 37, 638, 10, 37, 3, 38, 3, 38, 5, 38, 642, 10, 38, 3, 39, 3, 39, 3, 39, 3, 40, 3, 40, 3, 40, 3, 41, 3, 41, 3, 41, 3, 41, 5, 41, 654, 10, 41, 3, 41, 3, 41, 3, 42, 3, 42, 3, 42, 3, 42, 3, 43, 7, 43, 663, 10, 43, 12, 43, 14, 43, 666, 11, 43, 3, 43, 3, 43, 5, 43, 670, 10, 43, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 5, 44, 679, 10, 44, 3, 45, 3, 45, 3, 45, 3, 45, 7, 45, 685, 10, 45, 12, 45, 14, 45, 688, 11, 45, 3, 45, 3, 45, 3, 46, 3, 46, 3, 46, 7, 46, 695, 10, 46, 12, 46, 14, 46, 698, 11, 46, 3, 46, 3, 46, 3, 46, 3, 47, 7, 47, 704, 10, 47, 12, 47, 14, 47, 707, 11, 47, 3, 47, 3, 47, 3, 47, 7, 47, 712, 10, 47, 12, 47, 14, 47, 715, 11, 47, 3, 47, 3, 47, 5, 47, 719, 10, 47, 3, 47, 3, 47, 3, 47, 3, 47, 7, 47, 725, 10, 47, 12, 47, 14, 47, 728, 11, 47, 3, 47, 3, 47, 5, 47, 732, 10, 47, 3, 47, 3, 47, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 5, 48, 742, 10, 48, 3, 49, 3, 49, 3, 49, 3, 50, 3, 50, 3, 50, 7, 50, 750, 10, 50, 12, 50, 14, 50, 753, 11, 50, 3, 51, 3, 51, 3, 51, 5, 51, 758, 10, 51, 3, 52, 3, 52, 5, 52, 762, 10, 52, 3, 53, 3, 53, 3, 53, 3, 53, 7, 53, 768, 10, 53, 12, 53, 14, 53, 771, 11, 53, 3, 53, 5, 53, 774, 10, 53, 5, 53, 776, 10, 53, 3, 53, 3, 53, 3, 54, 3, 54, 5, 54, 782, 10, 54, 3, 54, 3, 54, 3, 54, 5, 54, 787, 10, 54, 7, 54, 789, 10, 54, 12, 54, 14, 54, 792, 11, 54, 3, 55, 3, 55, 3, 55, 3, 55, 5, 55, 798, 10, 55, 5, 55, 800, 10, 55, 3, 56, 3, 56, 3, 56, 7, 56, 805, 10, 56, 12, 56, 14, 56, 808, 11, 56, 3, 57, 3, 57, 5, 57, 812, 10, 57, 3, 57, 3, 57, 3, 58, 3, 58, 3, 58, 7, 58, 819, 10, 58, 12, 58, 14, 58, 822, 11, 58, 3, 58, 3, 58, 5, 58, 826, 10, 58, 3, 58, 5, 58, 829, 10, 58, 3, 59, 7, 59, 832, 10, 59, 12, 59, 14, 59, 835, 11, 59, 3, 59, 3, 59, 3, 59, 3, 60, 7, 60, 841, 10, 60, 12, 60, 14, 60, 844, 11, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 61, 3, 61, 3, 62, 3, 62, 3, 63, 3, 63, 5, 63, 856, 10, 63, 3, 64, 3, 64, 3, 65, 3, 65, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 5, 66, 867, 10, 66, 3, 66, 5, 66, 870, 10, 66, 3, 67, 3, 67, 3, 67, 7, 67, 875, 10, 67, 12, 67, 14, 67, 878, 11, 67, 3, 68, 3, 68, 3, 68, 3, 68, 3, 69, 3, 69, 3, 69, 5, 69, 887, 10, 69, 3, 70, 3, 70, 3, 70, 3, 70, 7, 70, 893, 10, 70, 12, 70, 14, 70, 896, 11, 70, 5, 70, 898, 10, 70, 3, 70, 5, 70, 901, 10, 70, 3, 70, 3, 70, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 72, 3, 72, 7, 72, 912, 10, 72, 12, 72, 14, 72, 915, 11, 72, 3, 72, 3, 72, 3, 73, 7, 73, 920, 10, 73, 12, 73, 14, 73, 923, 11, 73, 3, 73, 3, 73, 5, 73, 927, 10, 73, 3, 74, 3, 74, 3, 74, 3, 74, 3, 74, 3, 74, 5, 74, 935, 10, 74, 3, 74, 3, 74, 5, 74, 939, 10, 74, 3, 74, 3, 74, 5, 74, 943, 10, 74, 3, 74, 3, 74, 5, 74, 947, 10, 74, 5, 74, 949, 10, 74, 3, 75, 3, 75, 5, 75, 953, 10, 75, 3, 76, 3, 76, 3, 76, 3, 76, 5, 76, 959, 10, 76, 3, 77, 3, 77, 3, 78, 3, 78, 3, 78, 3, 79, 3, 79, 7, 79, 968, 10, 79, 12, 79, 14, 79, 971, 11, 79, 3, 79, 3, 79, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 5, 80, 980, 10, 80, 3, 81, 7, 81, 983, 10, 81, 12, 81, 14, 81, 986, 11, 81, 3, 81, 3, 81, 3, 81, 3, 82, 7, 82, 992, 10, 82, 12, 82, 14, 82, 995, 11, 82, 3, 82, 3, 82, 5, 82, 999, 10, 82, 3, 82, 5, 82, 1002, 10, 82, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 5, 83, 1009, 10, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 5, 83, 1018, 10, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 6, 83, 1039, 10, 83, 13, 83, 14, 83, 1040, 3, 83, 5, 83, 1044, 10, 83, 3, 83, 5, 83, 1047, 10, 83, 3, 83, 3, 83, 3, 83, 3, 83, 7, 83, 1053, 10, 83, 12, 83, 14, 83, 1056, 11, 83, 3, 83, 5, 83, 1059, 10, 83, 3, 83, 3, 83, 3, 83, 3, 83, 7, 83, 1065, 10, 83, 12, 83, 14, 83, 1068, 11, 83, 3, 83, 7, 83, 1071, 10, 83, 12, 83, 14, 83, 1074, 11, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 5, 83, 1084, 10, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 5, 83, 1093, 10, 83, 3, 83, 3, 83, 3, 83, 5, 83, 1098, 10, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 5, 83, 1108, 10, 83, 3, 84, 3, 84, 3, 84, 7, 84, 1113, 10, 84, 12, 84, 14, 84, 1116, 11, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 85, 3, 85, 3, 85, 7, 85, 1126, 10, 85, 12, 85, 14, 85, 1129, 11, 85, 3, 86, 3, 86, 3, 86, 3, 87, 3, 87, 3, 87, 5, 87, 1137, 10, 87, 3, 87, 3, 87, 3, 88, 3, 88, 3, 88, 7, 88, 1144, 10, 88, 12, 88, 14, 88, 1147, 11, 88, 3, 89, 7, 89, 1150, 10, 89, 12, 89, 14, 89, 1153, 11, 89, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 3, 90, 6, 90, 1161, 10, 90, 13, 90, 14, 90, 1162, 3, 90, 6, 90, 1166, 10, 90, 13, 90, 14, 90, 1167, 3, 91, 3, 91, 3, 91, 5, 91, 1173, 10, 91, 3, 91, 3, 91, 3, 91, 5, 91, 1178, 10, 91, 3, 92, 3, 92, 5, 92, 1182, 10, 92, 3, 92, 3, 92, 5, 92, 1186, 10, 92, 3, 92, 3, 92, 5, 92, 1190, 10, 92, 5, 92, 1192, 10, 92, 3, 93, 3, 93, 5, 93, 1196, 10, 93, 3, 94, 7, 94, 1199, 10, 94, 12, 94, 14, 94, 1202, 11, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 95, 3, 95, 3, 95, 3, 95, 3, 96, 3, 96, 3, 96, 7, 96, 1216, 10, 96, 12, 96, 14, 96, 1219, 11, 96, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 5, 97, 1239, 10, 97, 3, 97, 3, 97, 5, 97, 1243, 10, 97, 3, 97, 3, 97, 3, 97, 5, 97, 1248, 10, 97, 3, 97, 3, 97, 5, 97, 1252, 10, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 5, 97, 1268, 10, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 5, 97, 1308, 10, 97, 3, 97, 3, 97, 3, 97, 3, 97, 5, 97, 1314, 10, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 5, 97, 1329, 10, 97, 3, 97, 7, 97, 1332, 10, 97, 12, 97, 14, 97, 1335, 11, 97, 3, 98, 3, 98, 3, 98, 3, 98, 3, 99, 3, 99, 3, 99, 5, 99, 1344, 10, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 7, 99, 1351, 10, 99, 12, 99, 14, 99, 1354, 11, 99, 3, 99, 5, 99, 1357, 10, 99, 3, 100, 3, 100, 5, 100, 1361, 10, 100, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 5, 101, 1379, 10, 101, 5, 101, 1381, 10, 101, 3, 102, 3, 102, 3, 102, 5, 102, 1386, 10, 102, 3, 102, 7, 102, 1389, 10, 102, 12, 102, 14, 102, 1392, 11, 102, 3, 102, 3, 102, 5, 102, 1396, 10, 102, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 5, 103, 1405, 10, 103, 5, 103, 1407, 10, 103, 3, 104, 3, 104, 5, 104, 1411, 10, 104, 3, 104, 3, 104, 3, 104, 5, 104, 1416, 10, 104, 7, 104, 1418, 10, 104, 12, 104, 14, 104, 1421, 11, 104, 3, 104, 5, 104, 1424, 10, 104, 3, 105, 3, 105, 5, 105, 1428, 10, 105, 3, 105, 3, 105, 3, 106, 3, 106, 3, 106, 3, 106, 7, 106, 1436, 10, 106, 12, 106, 14, 106, 1439, 11, 106, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 7, 106, 1448, 10, 106, 12, 106, 14, 106, 1451, 11, 106, 3, 106, 3, 106, 7, 106, 1455, 10, 106, 12, 106, 14, 106, 1458, 11, 106, 5, 106, 1460, 10, 106, 3, 107, 3, 107, 5, 107, 1464, 10, 107, 3, 108, 3, 108, 3, 108, 3, 109, 3, 109, 3, 109, 5, 109, 1472, 10, 109, 3, 110, 3, 110, 3, 110, 5, 110, 1477, 10, 110, 3, 111, 3, 111, 3, 111, 3, 111, 3, 112, 3, 112, 3, 112, 7, 112, 1486, 10, 112, 12, 112, 14, 112, 1489, 11, 112, 3, 113, 5, 113, 1492, 10, 113, 3, 113, 3, 113, 3, 113, 5, 113, 1497, 10, 113, 3, 113, 3, 113, 7, 113, 1501, 10, 113, 12, 113, 14, 113, 1504, 11, 113, 3, 114, 3, 114, 3, 114, 3, 114, 7, 114, 1510, 10, 114, 12, 114, 14, 114, 1513, 11, 114, 3, 114, 3, 114, 3, 115, 3, 115, 3, 115, 3, 115, 5, 115, 1521, 10, 115, 5, 115, 1523, 10, 115, 3, 116, 3, 116, 3, 116, 3, 116, 5, 116, 1529, 10, 116, 3, 117, 3, 117, 5, 117, 1533, 10, 117, 3, 117, 3, 117, 3, 117, 2, 3, 192, 118, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 210, 212, 214, 216, 218, 220, 222, 224, 226, 228, 230, 232, 2, 14, 8, 2, 3, 3, 11, 11, 13, 13, 16, 16, 28, 28, 35, 35, 4, 2, 25, 25, 48, 48, 3, 2, 60, 63, 3, 2, 64, 65, 3, 2, 92, 95, 3, 2, 82, 83, 4, 2, 96, 97, 101, 101, 3, 2, 94, 95, 4, 2, 80, 81, 87, 88, 4, 2, 86, 86, 89, 89, 4, 2, 79, 79, 102, 112, 3, 2, 92, 93, 2, 1719, 2, 237, 3, 2, 2, 2, 4, 240, 3, 2, 2, 2, 6, 260, 3, 2, 2, 2, 8, 269, 3, 2, 2, 2, 10, 310, 3, 2, 2, 2, 12, 321, 3, 2, 2, 2, 14, 323, 3, 2, 2, 2, 16, 352, 3, 2, 2, 2, 18, 354, 3, 2, 2, 2, 20, 370, 3, 2, 2, 2, 22, 372, 3, 2, 2, 2, 24, 376, 3, 2, 2, 2, 26, 395, 3, 2, 2, 2, 28, 397, 3, 2, 2, 2, 30, 400, 3, 2, 2, 2, 32, 419, 3, 2, 2, 2, 34, 426, 3, 2, 2, 2, 36, 450, 3, 2, 2, 2, 38, 457, 3, 2, 2, 2, 40, 467, 3, 2, 2, 2, 42, 471, 3, 2, 2, 2, 44, 473, 3, 2, 2, 2, 46, 488, 3, 2, 2, 2, 48, 502, 3, 2, 2, 2, 50, 510, 3, 2, 2, 2, 52, 518, 3, 2, 2, 2, 54, 536, 3, 2, 2, 2, 56, 547, 3, 2, 2, 2, 58, 557, 3, 2, 2, 2, 60, 564, 3, 2, 2, 2, 62, 575, 3, 2, 2, 2, 64, 584, 3, 2, 2, 2, 66, 606, 3, 2, 2, 2, 68, 617, 3, 2, 2, 2, 70, 619, 3, 2, 2, 2, 72, 637, 3, 2, 2, 2, 74, 641, 3, 2, 2, 2, 76, 643, 3, 2, 2, 2, 78, 646, 3, 2, 2, 2, 80, 649, 3, 2, 2, 2, 82, 657, 3, 2, 2, 2, 84, 669, 3, 2, 2, 2, 86, 678, 3, 2, 2, 2, 88, 680, 3, 2, 2, 2, 90, 691, 3, 2, 2, 2, 92, 705, 3, 2, 2, 2, 94, 741, 3, 2, 2, 2, 96, 743, 3, 2, 2, 2, 98, 746, 3, 2, 2, 2, 100, 754, 3, 2, 2, 2, 102, 761, 3, 2, 2, 2, 104, 763, 3, 2, 2, 2, 106, 779, 3, 2, 2, 2, 108, 799, 3, 2, 2, 2, 110, 801, 3, 2, 2, 2, 112, 809, 3, 2, 2, 2, 114, 828, 3, 2, 2, 2, 116, 833, 3, 2, 2, 2, 118, 842, 3, 2, 2, 2, 120, 849, 3, 2, 2, 2, 122, 851, 3, 2, 2, 2, 124, 855, 3, 2, 2, 2, 126, 857, 3, 2, 2, 2, 128, 859, 3, 2, 2, 2, 130, 861, 3, 2, 2, 2, 132, 871, 3, 2, 2, 2, 134, 879, 3, 2, 2, 2, 136, 886, 3, 2, 2, 2, 138, 888, 3, 2, 2, 2, 140, 904, 3, 2, 2, 2, 142, 909, 3, 2, 2, 2, 144, 926, 3, 2, 2, 2, 146, 948, 3, 2, 2, 2, 148, 952, 3, 2, 2, 2, 150, 954, 3, 2, 2, 2, 152, 960, 3, 2, 2, 2, 154, 962, 3, 2, 2, 2, 156, 965, 3, 2, 2, 2, 158, 979, 3, 2, 2, 2, 160, 984, 3, 2, 2, 2, 162, 1001, 3, 2, 2, 2, 164, 1107, 3, 2, 2, 2, 166, 1109, 3, 2, 2, 2, 168, 1122, 3, 2, 2, 2, 170, 1130, 3, 2, 2, 2, 172, 1133, 3, 2, 2, 2, 174, 1140, 3, 2, 2, 2, 176, 1151, 3, 2, 2, 2, 178, 1160, 3, 2, 2, 2, 180, 1177, 3, 2, 2, 2, 182, 1191, 3, 2, 2, 2, 184, 1195, 3, 2, 2, 2, 186, 1200, 3, 2, 2, 2, 188, 1208, 3, 2, 2, 2, 190, 1212, 3, 2, 2, 2, 192, 1251, 3, 2, 2, 2, 194, 1336, 3, 2, 2, 2, 196, 1356, 3, 2, 2, 2, 198, 1360, 3, 2, 2, 2, 200, 1380, 3, 2, 2, 2, 202, 1385, 3, 2, 2, 2, 204, 1406, 3, 2, 2, 2, 206, 1423, 3, 2, 2, 2, 208, 1425, 3, 2, 2, 2, 210, 1431, 3, 2, 2, 2, 212, 1461, 3, 2, 2, 2, 214, 1465, 3, 2, 2, 2, 216, 1471, 3, 2, 2, 2, 218, 1476, 3, 2, 2, 2, 220, 1478, 3, 2, 2, 2, 222, 1482, 3, 2, 2, 2, 224, 1491, 3, 2, 2, 2, 226, 1505, 3, 2, 2, 2, 228, 1522, 3, 2, 2, 2, 230, 1528, 3, 2, 2, 2, 232, 1530, 3, 2, 2, 2, 234, 238, 5, 6, 4, 2, 235, 238, 5, 4, 3, 2, 236, 238, 5, 8, 5, 2, 237, 234, 3, 2, 2, 2, 237, 235, 3, 2, 2, 2, 237, 236, 3, 2, 2, 2, 238, 3, 3, 2, 2, 2, 239, 241, 5, 32, 17, 2, 240, 239, 3, 2, 2, 2, 240, 241, 3, 2, 2, 2, 241, 245, 3, 2, 2, 2, 242, 244, 5, 34, 18, 2, 243, 242, 3, 2, 2, 2, 244, 247, 3, 2, 2, 2, 245, 243, 3, 2, 2, 2, 245, 246, 3, 2, 2, 2, 246, 249, 3, 2, 2, 2, 247, 245, 3, 2, 2, 2, 248, 250, 5, 36, 19, 2, 249, 248, 3, 2, 2, 2, 250, 251, 3, 2, 2, 2, 251, 249, 3, 2, 2, 2, 251, 252, 3, 2, 2, 2, 252, 253, 3, 2, 2, 2, 253, 254, 7, 2, 2, 3, 254, 5, 3, 2, 2, 2, 255, 259, 5, 34, 18, 2, 256, 259, 5, 158, 80, 2, 257, 259, 5, 36, 19, 2, 258, 255, 3, 2, 2, 2, 258, 256, 3, 2, 2, 2, 258, 257, 3, 2, 2, 2, 259, 262, 3, 2, 2, 2, 260, 258, 3, 2, 2, 2, 260, 261, 3, 2, 2, 2, 261, 263, 3, 2, 2, 2, 262, 260, 3, 2, 2, 2, 263, 264, 7, 2, 2, 3, 264, 7, 3, 2, 2, 2, 265, 268, 5, 34, 18, 2, 266, 268, 5, 66, 34, 2, 267, 265, 3, 2, 2, 2, 267, 266, 3, 2, 2, 2, 268, 271, 3, 2, 2, 2, 269, 267, 3, 2, 2, 2, 269, 270, 3, 2, 2, 2, 270, 272, 3, 2, 2, 2, 271, 269, 3, 2, 2, 2, 272, 273, 7, 2, 2, 3, 273, 9, 3, 2, 2, 2, 274, 278, 5, 34, 18, 2, 275, 278, 5, 66, 34, 2, 276, 278, 5, 158, 80, 2, 277, 274, 3, 2, 2, 2, 277, 275, 3, 2, 2, 2, 277, 276, 3, 2, 2, 2, 278, 281, 3, 2, 2, 2, 279, 277, 3, 2, 2, 2, 279, 280, 3, 2, 2, 2, 280, 282, 3, 2, 2, 2, 281, 279, 3, 2, 2, 2, 282, 283, 5, 158, 80, 2, 283, 289, 5, 66, 34, 2, 284, 288, 5, 34, 18, 2, 285, 288, 5, 66, 34, 2, 286, 288, 5, 158, 80, 2, 287, 284, 3, 2, 2, 2, 287, 285, 3, 2, 2, 2, 287, 286, 3, 2, 2, 2, 288, 291, 3, 2, 2, 2, 289, 287, 3, 2, 2, 2, 289, 290, 3, 2, 2, 2, 290, 311, 3, 2, 2, 2, 291, 289, 3, 2, 2, 2, 292, 296, 5, 34, 18, 2, 293, 296, 5, 66, 34, 2, 294, 296, 5, 158, 80, 2, 295, 292, 3, 2, 2, 2, 295, 293, 3, 2, 2, 2, 295, 294, 3, 2, 2, 2, 296, 299, 3, 2, 2, 2, 297, 295, 3, 2, 2, 2, 297, 298, 3, 2, 2, 2, 298, 300, 3, 2, 2, 2, 299, 297, 3, 2, 2, 2, 300, 301, 5, 66, 34, 2, 301, 307, 5, 158, 80, 2, 302, 306, 5, 34, 18, 2, 303, 306, 5, 66, 34, 2, 304, 306, 5, 158, 80, 2, 305, 302, 3, 2, 2, 2, 305, 303, 3, 2, 2, 2, 305, 304, 3, 2, 2, 2, 306, 309, 3, 2, 2, 2, 307, 305, 3, 2, 2, 2, 307, 308, 3, 2, 2, 2, 308, 311, 3, 2, 2, 2, 309, 307, 3, 2, 2, 2, 310, 279, 3, 2, 2, 2, 310, 297, 3, 2, 2, 2, 311, 11, 3, 2, 2, 2, 312, 322, 5, 14, 8, 2, 313, 318, 7, 117, 2, 2, 314, 315, 7, 74, 2, 2, 315, 317, 7, 75, 2, 2, 316, 314, 3, 2, 2, 2, 317, 320, 3, 2, 2, 2, 318, 316, 3, 2, 2, 2, 318, 319, 3, 2, 2, 2, 319, 322, 3, 2, 2, 2, 320, 318, 3, 2, 2, 2, 321, 312, 3, 2, 2, 2, 321, 313, 3, 2, 2, 2, 322, 13, 3, 2, 2, 2, 323, 328, 5, 20, 11, 2, 324, 325, 7, 74, 2, 2, 325, 327, 7, 75, 2, 2, 326, 324, 3, 2, 2, 2, 327, 330, 3, 2, 2, 2, 328, 326, 3, 2, 2, 2, 328, 329, 3, 2, 2, 2, 329, 331, 3, 2, 2, 2, 330, 328, 3, 2, 2, 2, 331, 332, 8, 8, 1, 2, 332, 15, 3, 2, 2, 2, 333, 353, 5, 18, 10, 2, 334, 335, 7, 117, 2, 2, 335, 337, 7, 70, 2, 2, 336, 338, 5, 190, 96, 2, 337, 336, 3, 2, 2, 2, 337, 338, 3, 2, 2, 2, 338, 339, 3, 2, 2, 2, 339, 353, 7, 71, 2, 2, 340, 341, 7, 51, 2, 2, 341, 343, 7, 70, 2, 2, 342, 344, 5, 190, 96, 2, 343, 342, 3, 2, 2, 2, 343, 344, 3, 2, 2, 2, 344, 345, 3, 2, 2, 2, 345, 353, 7, 71, 2, 2, 346, 347, 7, 48, 2, 2, 347, 349, 7, 70, 2, 2, 348, 350, 5, 190, 96, 2, 349, 348, 3, 2, 2, 2, 349, 350, 3, 2, 2, 2, 350, 351, 3, 2, 2, 2, 351, 353, 7, 71, 2, 2, 352, 333, 3, 2, 2, 2, 352, 334, 3, 2, 2, 2, 352, 340, 3, 2, 2, 2, 352, 346, 3, 2, 2, 2, 353, 17, 3, 2, 2, 2, 354, 355, 9, 2, 2, 2, 355, 357, 7, 70, 2, 2, 356, 358, 5, 190, 96, 2, 357, 356, 3, 2, 2, 2, 357, 358, 3, 2, 2, 2, 358, 359, 3, 2, 2, 2, 359, 360, 7, 71, 2, 2, 360, 19, 3, 2, 2, 2, 361, 371, 7, 11, 2, 2, 362, 371, 7, 16, 2, 2, 363, 371, 7, 13, 2, 2, 364, 371, 7, 45, 2, 2, 365, 371, 7, 35, 2, 2, 366, 371, 7, 37, 2, 2, 367, 371, 7, 28, 2, 2, 368, 371, 7, 22, 2, 2, 369, 371, 5, 22, 12, 2, 370, 361, 3, 2, 2, 2, 370, 362, 3, 2, 2, 2, 370, 363, 3, 2, 2, 2, 370, 364, 3, 2, 2, 2, 370, 365, 3, 2, 2, 2, 370, 366, 3, 2, 2, 2, 370, 367, 3, 2, 2, 2, 370, 368, 3, 2, 2, 2, 370, 369, 3, 2, 2, 2, 371, 21, 3, 2, 2, 2, 372, 373, 7, 3, 2, 2, 373, 23, 3, 2, 2, 2, 374, 377, 7, 117, 2, 2, 375, 377, 5, 22, 12, 2, 376, 374, 3, 2, 2, 2, 376, 375, 3, 2, 2, 2, 377, 385, 3, 2, 2, 2, 378, 381, 7, 78, 2, 2, 379, 382, 7, 117, 2, 2, 380, 382, 5, 22, 12, 2, 381, 379, 3, 2, 2, 2, 381, 380, 3, 2, 2, 2, 382, 384, 3, 2, 2, 2, 383, 378, 3, 2, 2, 2, 384, 387, 3, 2, 2, 2, 385, 383, 3, 2, 2, 2, 385, 386, 3, 2, 2, 2, 386, 25, 3, 2, 2, 2, 387, 385, 3, 2, 2, 2, 388, 396, 5, 126, 64, 2, 389, 396, 5, 128, 65, 2, 390, 396, 7, 8, 2, 2, 391, 396, 5, 124, 63, 2, 392, 396, 7, 66, 2, 2, 393, 396, 7, 69, 2, 2, 394, 396, 5, 28, 15, 2, 395, 388, 3, 2, 2, 2, 395, 389, 3, 2, 2, 2, 395, 390, 3, 2, 2, 2, 395, 391, 3, 2, 2, 2, 395, 392, 3, 2, 2, 2, 395, 393, 3, 2, 2, 2, 395, 394, 3, 2, 2, 2, 396, 27, 3, 2, 2, 2, 397, 398, 7, 4, 2, 2, 398, 29, 3, 2, 2, 2, 399, 401, 5, 32, 17, 2, 400, 399, 3, 2, 2, 2, 400, 401, 3, 2, 2, 2, 401, 405, 3, 2, 2, 2, 402, 404, 5, 34, 18, 2, 403, 402, 3, 2, 2, 2, 404, 407, 3, 2, 2, 2, 405, 403, 3, 2, 2, 2, 405, 406, 3, 2, 2, 2, 406, 411, 3, 2, 2, 2, 407, 405, 3, 2, 2, 2, 408, 410, 5, 36, 19, 2, 409, 408, 3, 2, 2, 2, 410, 413, 3, 2, 2, 2, 411, 409, 3, 2, 2, 2, 411, 412, 3, 2, 2, 2, 412, 414, 3, 2, 2, 2, 413, 411, 3, 2, 2, 2, 414, 415, 7, 2, 2, 3, 415, 31, 3, 2, 2, 2, 416, 418, 5, 130, 66, 2, 417, 416, 3, 2, 2, 2, 418, 421, 3, 2, 2, 2, 419, 417, 3, 2, 2, 2, 419, 420, 3, 2, 2, 2, 420, 422, 3, 2, 2, 2, 421, 419, 3, 2, 2, 2, 422, 423, 7, 40, 2, 2, 423, 424, 5, 24, 13, 2, 424, 425, 7, 76, 2, 2, 425, 33, 3, 2, 2, 2, 426, 428, 7, 33, 2, 2, 427, 429, 7, 46, 2, 2, 428, 427, 3, 2, 2, 2, 428, 429, 3, 2, 2, 2, 429, 430, 3, 2, 2, 2, 430, 433, 5, 24, 13, 2, 431, 432, 7, 78, 2, 2, 432, 434, 7, 96, 2, 2, 433, 431, 3, 2, 2, 2, 433, 434, 3, 2, 2, 2, 434, 435, 3, 2, 2, 2, 435, 436, 7, 76, 2, 2, 436, 35, 3, 2, 2, 2, 437, 439, 5, 40, 21, 2, 438, 437, 3, 2, 2, 2, 439, 442, 3, 2, 2, 2, 440, 438, 3, 2, 2, 2, 440, 441, 3, 2, 2, 2, 441, 447, 3, 2, 2, 2, 442, 440, 3, 2, 2, 2, 443, 448, 5, 44, 23, 2, 444, 448, 5, 52, 27, 2, 445, 448, 5, 60, 31, 2, 446, 448, 5, 140, 71, 2, 447, 443, 3, 2, 2, 2, 447, 444, 3, 2, 2, 2, 447, 445, 3, 2, 2, 2, 447, 446, 3, 2, 2, 2, 448, 451, 3, 2, 2, 2, 449, 451, 7, 76, 2, 2, 450, 440, 3, 2, 2, 2, 450, 449, 3, 2, 2, 2, 451, 37, 3, 2, 2, 2, 452, 458, 5, 40, 21, 2, 453, 458, 7, 38, 2, 2, 454, 458, 7, 50, 2, 2, 455, 458, 7, 54, 2, 2, 456, 458, 7, 58, 2, 2, 457, 452, 3, 2, 2, 2, 457, 453, 3, 2, 2, 2, 457, 454, 3, 2, 2, 2, 457, 455, 3, 2, 2, 2, 457, 456, 3, 2, 2, 2, 458, 39, 3, 2, 2, 2, 459, 468, 5, 130, 66, 2, 460, 468, 7, 43, 2, 2, 461, 468, 7, 42, 2, 2, 462, 468, 7, 41, 2, 2, 463, 468, 7, 46, 2, 2, 464, 468, 7, 9, 2, 2, 465, 468, 7, 26, 2, 2, 466, 468, 7, 47, 2, 2, 467, 459, 3, 2, 2, 2, 467, 460, 3, 2, 2, 2, 467, 461, 3, 2, 2, 2, 467, 462, 3, 2, 2, 2, 467, 463, 3, 2, 2, 2, 467, 464, 3, 2, 2, 2, 467, 465, 3, 2, 2, 2, 467, 466, 3, 2, 2, 2, 468, 41, 3, 2, 2, 2, 469, 472, 7, 26, 2, 2, 470, 472, 5, 130, 66, 2, 471, 469, 3, 2, 2, 2, 471, 470, 3, 2, 2, 2, 472, 43, 3, 2, 2, 2, 473, 474, 7, 17, 2, 2, 474, 476, 7, 117, 2, 2, 475, 477, 5, 46, 24, 2, 476, 475, 3, 2, 2, 2, 476, 477, 3, 2, 2, 2, 477, 480, 3, 2, 2, 2, 478, 479, 7, 25, 2, 2, 479, 481, 5, 224, 113, 2, 480, 478, 3, 2, 2, 2, 480, 481, 3, 2, 2, 2, 481, 484, 3, 2, 2, 2, 482, 483, 7, 32, 2, 2, 483, 485, 5, 222, 112, 2, 484, 482, 3, 2, 2, 2, 484, 485, 3, 2, 2, 2, 485, 486, 3, 2, 2, 2, 486, 487, 5, 62, 32, 2, 487, 45, 3, 2, 2, 2, 488, 489, 7, 81, 2, 2, 489, 494, 5, 48, 25, 2, 490, 491, 7, 77, 2, 2, 491, 493, 5, 48, 25, 2, 492, 490, 3, 2, 2, 2, 493, 496, 3, 2, 2, 2, 494, 492, 3, 2, 2, 2, 494, 495, 3, 2, 2, 2, 495, 497, 3, 2, 2, 2, 496, 494, 3, 2, 2, 2, 497, 498, 7, 80, 2, 2, 498, 47, 3, 2, 2, 2, 499, 501, 5, 130, 66, 2, 500, 499, 3, 2, 2, 2, 501, 504, 3, 2, 2, 2, 502, 500, 3, 2, 2, 2, 502, 503, 3, 2, 2, 2, 503, 505, 3, 2, 2, 2, 504, 502, 3, 2, 2, 2, 505, 508, 7, 117, 2, 2, 506, 507, 7, 25, 2, 2, 507, 509, 5, 50, 26, 2, 508, 506, 3, 2, 2, 2, 508, 509, 3, 2, 2, 2, 509, 49, 3, 2, 2, 2, 510, 515, 5, 224, 113, 2, 511, 512, 7, 98, 2, 2, 512, 514, 5, 224, 113, 2, 513, 511, 3, 2, 2, 2, 514, 517, 3, 2, 2, 2, 515, 513, 3, 2, 2, 2, 515, 516, 3, 2, 2, 2, 516, 51, 3, 2, 2, 2, 517, 515, 3, 2, 2, 2, 518, 519, 7, 24, 2, 2, 519, 522, 7, 117, 2, 2, 520, 521, 7, 32, 2, 2, 521, 523, 5, 222, 112, 2, 522, 520, 3, 2, 2, 2, 522, 523, 3, 2, 2, 2, 523, 524, 3, 2, 2, 2, 524, 526, 7, 72, 2, 2, 525, 527, 5, 54, 28, 2, 526, 525, 3, 2, 2, 2, 526, 527, 3, 2, 2, 2, 527, 529, 3, 2, 2, 2, 528, 530, 7, 77, 2, 2, 529, 528, 3, 2, 2, 2, 529, 530, 3, 2, 2, 2, 530, 532, 3, 2, 2, 2, 531, 533, 5, 58, 30, 2, 532, 531, 3, 2, 2, 2, 532, 533, 3, 2, 2, 2, 533, 534, 3, 2, 2, 2, 534, 535, 7, 73, 2, 2, 535, 53, 3, 2, 2, 2, 536, 541, 5, 56, 29, 2, 537, 538, 7, 77, 2, 2, 538, 540, 5, 56, 29, 2, 539, 537, 3, 2, 2, 2, 540, 543, 3, 2, 2, 2, 541, 539, 3, 2, 2, 2, 541, 542, 3, 2, 2, 2, 542, 55, 3, 2, 2, 2, 543, 541, 3, 2, 2, 2, 544, 546, 5, 130, 66, 2, 545, 544, 3, 2, 2, 2, 546, 549, 3, 2, 2, 2, 547, 545, 3, 2, 2, 2, 547, 548, 3, 2, 2, 2, 548, 550, 3, 2, 2, 2, 549, 547, 3, 2, 2, 2, 550, 552, 7, 117, 2, 2, 551, 553, 5, 232, 117, 2, 552, 551, 3, 2, 2, 2, 552, 553, 3, 2, 2, 2, 553, 555, 3, 2, 2, 2, 554, 556, 5, 62, 32, 2, 555, 554, 3, 2, 2, 2, 555, 556, 3, 2, 2, 2, 556, 57, 3, 2, 2, 2, 557, 561, 7, 76, 2, 2, 558, 560, 5, 66, 34, 2, 559, 558, 3, 2, 2, 2, 560, 563, 3, 2, 2, 2, 561, 559, 3, 2, 2, 2, 561, 562, 3, 2, 2, 2, 562, 59, 3, 2, 2, 2, 563, 561, 3, 2, 2, 2, 564, 565, 7, 36, 2, 2, 565, 567, 7, 117, 2, 2, 566, 568, 5, 46, 24, 2, 567, 566, 3, 2, 2, 2, 567, 568, 3, 2, 2, 2, 568, 571, 3, 2, 2, 2, 569, 570, 7, 25, 2, 2, 570, 572, 5, 222, 112, 2, 571, 569, 3, 2, 2, 2, 571, 572, 3, 2, 2, 2, 572, 573, 3, 2, 2, 2, 573, 574, 5, 64, 33, 2, 574, 61, 3, 2, 2, 2, 575, 579, 7, 72, 2, 2, 576, 578, 5, 66, 34, 2, 577, 576, 3, 2, 2, 2, 578, 581, 3, 2, 2, 2, 579, 577, 3, 2, 2, 2, 579, 580, 3, 2, 2, 2, 580, 582, 3, 2, 2, 2, 581, 579, 3, 2, 2, 2, 582, 583, 7, 73, 2, 2, 583, 63, 3, 2, 2, 2, 584, 588, 7, 72, 2, 2, 585, 587, 5, 84, 43, 2, 586, 585, 3, 2, 2, 2, 587, 590, 3, 2, 2, 2, 588, 586, 3, 2, 2, 2, 588, 589, 3, 2, 2, 2, 589, 591, 3, 2, 2, 2, 590, 588, 3, 2, 2, 2, 591, 592, 7, 73, 2, 2, 592, 65, 3, 2, 2, 2, 593, 607, 7, 76, 2, 2, 594, 607, 5, 34, 18, 2, 595, 597, 7, 46, 2, 2, 596, 595, 3, 2, 2, 2, 596, 597, 3, 2, 2, 2, 597, 598, 3, 2, 2, 2, 598, 607, 5, 156, 79, 2, 599, 601, 5, 38, 20, 2, 600, 599, 3, 2, 2, 2, 601, 604, 3, 2, 2, 2, 602, 600, 3, 2, 2, 2, 602, 603, 3, 2, 2, 2, 603, 605, 3, 2, 2, 2, 604, 602, 3, 2, 2, 2, 605, 607, 5, 68, 35, 2, 606, 593, 3, 2, 2, 2, 606, 594, 3, 2, 2, 2, 606, 596, 3, 2, 2, 2, 606, 602, 3, 2, 2, 2, 607, 67, 3, 2, 2, 2, 608, 618, 5, 70, 36, 2, 609, 618, 5, 76, 39, 2, 610, 618, 5, 82, 42, 2, 611, 618, 5, 80, 41, 2, 612, 618, 5, 78, 40, 2, 613, 618, 5, 60, 31, 2, 614, 618, 5, 140, 71, 2, 615, 618, 5, 44, 23, 2, 616, 618, 5, 52, 27, 2, 617, 608, 3, 2, 2, 2, 617, 609, 3, 2, 2, 2, 617, 610, 3, 2, 2, 2, 617, 611, 3, 2, 2, 2, 617, 612, 3, 2, 2, 2, 617, 613, 3, 2, 2, 2, 617, 614, 3, 2, 2, 2, 617, 615, 3, 2, 2, 2, 617, 616, 3, 2, 2, 2, 618, 69, 3, 2, 2, 2, 619, 620, 5, 74, 38, 2, 620, 621, 7, 117, 2, 2, 621, 626, 5, 112, 57, 2, 622, 623, 7, 74, 2, 2, 623, 625, 7, 75, 2, 2, 624, 622, 3, 2, 2, 2, 625, 628, 3, 2, 2, 2, 626, 624, 3, 2, 2, 2, 626, 627, 3, 2, 2, 2, 627, 631, 3, 2, 2, 2, 628, 626, 3, 2, 2, 2, 629, 630, 7, 53, 2, 2, 630, 632, 5, 110, 56, 2, 631, 629, 3, 2, 2, 2, 631, 632, 3, 2, 2, 2, 632, 633, 3, 2, 2, 2, 633, 634, 5, 72, 37, 2, 634, 71, 3, 2, 2, 2, 635, 638, 5, 156, 79, 2, 636, 638, 7, 76, 2, 2, 637, 635, 3, 2, 2, 2, 637, 636, 3, 2, 2, 2, 638, 73, 3, 2, 2, 2, 639, 642, 5, 224, 113, 2, 640, 642, 7, 57, 2, 2, 641, 639, 3, 2, 2, 2, 641, 640, 3, 2, 2, 2, 642, 75, 3, 2, 2, 2, 643, 644, 5, 46, 24, 2, 644, 645, 5, 70, 36, 2, 645, 77, 3, 2, 2, 2, 646, 647, 5, 46, 24, 2, 647, 648, 5, 80, 41, 2, 648, 79, 3, 2, 2, 2, 649, 650, 7, 117, 2, 2, 650, 653, 5, 112, 57, 2, 651, 652, 7, 53, 2, 2, 652, 654, 5, 110, 56, 2, 653, 651, 3, 2, 2, 2, 653, 654, 3, 2, 2, 2, 654, 655, 3, 2, 2, 2, 655, 656, 5, 156, 79, 2, 656, 81, 3, 2, 2, 2, 657, 658, 5, 224, 113, 2, 658, 659, 5, 98, 50, 2, 659, 660, 7, 76, 2, 2, 660, 83, 3, 2, 2, 2, 661, 663, 5, 38, 20, 2, 662, 661, 3, 2, 2, 2, 663, 666, 3, 2, 2, 2, 664, 662, 3, 2, 2, 2, 664, 665, 3, 2, 2, 2, 665, 667, 3, 2, 2, 2, 666, 664, 3, 2, 2, 2, 667, 670, 5, 86, 44, 2, 668, 670, 7, 76, 2, 2, 669, 664, 3, 2, 2, 2, 669, 668, 3, 2, 2, 2, 670, 85, 3, 2, 2, 2, 671, 679, 5, 88, 45, 2, 672, 679, 5, 92, 47, 2, 673, 679, 5, 96, 49, 2, 674, 679, 5, 60, 31, 2, 675, 679, 5, 140, 71, 2, 676, 679, 5, 44, 23, 2, 677, 679, 5, 52, 27, 2, 678, 671, 3, 2, 2, 2, 678, 672, 3, 2, 2, 2, 678, 673, 3, 2, 2, 2, 678, 674, 3, 2, 2, 2, 678, 675, 3, 2, 2, 2, 678, 676, 3, 2, 2, 2, 678, 677, 3, 2, 2, 2, 679, 87, 3, 2, 2, 2, 680, 681, 5, 224, 113, 2, 681, 686, 5, 90, 46, 2, 682, 683, 7, 77, 2, 2, 683, 685, 5, 90, 46, 2, 684, 682, 3, 2, 2, 2, 685, 688, 3, 2, 2, 2, 686, 684, 3, 2, 2, 2, 686, 687, 3, 2, 2, 2, 687, 689, 3, 2, 2, 2, 688, 686, 3, 2, 2, 2, 689, 690, 7, 76, 2, 2, 690, 89, 3, 2, 2, 2, 691, 696, 7, 117, 2, 2, 692, 693, 7, 74, 2, 2, 693, 695, 7, 75, 2, 2, 694, 692, 3, 2, 2, 2, 695, 698, 3, 2, 2, 2, 696, 694, 3, 2, 2, 2, 696, 697, 3, 2, 2, 2, 697, 699, 3, 2, 2, 2, 698, 696, 3, 2, 2, 2, 699, 700, 7, 79, 2, 2, 700, 701, 5, 102, 52, 2, 701, 91, 3, 2, 2, 2, 702, 704, 5, 94, 48, 2, 703, 702, 3, 2, 2, 2, 704, 707, 3, 2, 2, 2, 705, 703, 3, 2, 2, 2, 705, 706, 3, 2, 2, 2, 706, 718, 3, 2, 2, 2, 707, 705, 3, 2, 2, 2, 708, 719, 5, 74, 38, 2, 709, 713, 5, 46, 24, 2, 710, 712, 5, 130, 66, 2, 711, 710, 3, 2, 2, 2, 712, 715, 3, 2, 2, 2, 713, 711, 3, 2, 2, 2, 713, 714, 3, 2, 2, 2, 714, 716, 3, 2, 2, 2, 715, 713, 3, 2, 2, 2, 716, 717, 5, 74, 38, 2, 717, 719, 3, 2, 2, 2, 718, 708, 3, 2, 2, 2, 718, 709, 3, 2, 2, 2, 719, 720, 3, 2, 2, 2, 720, 721, 7, 117, 2, 2, 721, 726, 5, 112, 57, 2, 722, 723, 7, 74, 2, 2, 723, 725, 7, 75, 2, 2, 724, 722, 3, 2, 2, 2, 725, 728, 3, 2, 2, 2, 726, 724, 3, 2, 2, 2, 726, 727, 3, 2, 2, 2, 727, 731, 3, 2, 2, 2, 728, 726, 3, 2, 2, 2, 729, 730, 7, 53, 2, 2, 730, 732, 5, 110, 56, 2, 731, 729, 3, 2, 2, 2, 731, 732, 3, 2, 2, 2, 732, 733, 3, 2, 2, 2, 733, 734, 5, 72, 37, 2, 734, 93, 3, 2, 2, 2, 735, 742, 5, 130, 66, 2, 736, 742, 7, 43, 2, 2, 737, 742, 7, 9, 2, 2, 738, 742, 7, 20, 2, 2, 739, 742, 7, 46, 2, 2, 740, 742, 7, 47, 2, 2, 741, 735, 3, 2, 2, 2, 741, 736, 3, 2, 2, 2, 741, 737, 3, 2, 2, 2, 741, 738, 3, 2, 2, 2, 741, 739, 3, 2, 2, 2, 741, 740, 3, 2, 2, 2, 742, 95, 3, 2, 2, 2, 743, 744, 5, 46, 24, 2, 744, 745, 5, 92, 47, 2, 745, 97, 3, 2, 2, 2, 746, 751, 5, 100, 51, 2, 747, 748, 7, 77, 2, 2, 748, 750, 5, 100, 51, 2, 749, 747, 3, 2, 2, 2, 750, 753, 3, 2, 2, 2, 751, 749, 3, 2, 2, 2, 751, 752, 3, 2, 2, 2, 752, 99, 3, 2, 2, 2, 753, 751, 3, 2, 2, 2, 754, 757, 5, 12, 7, 2, 755, 756, 7, 79, 2, 2, 756, 758, 5, 102, 52, 2, 757, 755, 3, 2, 2, 2, 757, 758, 3, 2, 2, 2, 758, 101, 3, 2, 2, 2, 759, 762, 5, 104, 53, 2, 760, 762, 5, 192, 97, 2, 761, 759, 3, 2, 2, 2, 761, 760, 3, 2, 2, 2, 762, 103, 3, 2, 2, 2, 763, 775, 7, 72, 2, 2, 764, 769, 5, 102, 52, 2, 765, 766, 7, 77, 2, 2, 766, 768, 5, 102, 52, 2, 767, 765, 3, 2, 2, 2, 768, 771, 3, 2, 2, 2, 769, 767, 3, 2, 2, 2, 769, 770, 3, 2, 2, 2, 770, 773, 3, 2, 2, 2, 771, 769, 3, 2, 2, 2, 772, 774, 7, 77, 2, 2, 773, 772, 3, 2, 2, 2, 773, 774, 3, 2, 2, 2, 774, 776, 3, 2, 2, 2, 775, 764, 3, 2, 2, 2, 775, 776, 3, 2, 2, 2, 776, 777, 3, 2, 2, 2, 777, 778, 7, 73, 2, 2, 778, 105, 3, 2, 2, 2, 779, 781, 7, 117, 2, 2, 780, 782, 5, 226, 114, 2, 781, 780, 3, 2, 2, 2, 781, 782, 3, 2, 2, 2, 782, 790, 3, 2, 2, 2, 783, 784, 7, 78, 2, 2, 784, 786, 7, 117, 2, 2, 785, 787, 5, 226, 114, 2, 786, 785, 3, 2, 2, 2, 786, 787, 3, 2, 2, 2, 787, 789, 3, 2, 2, 2, 788, 783, 3, 2, 2, 2, 789, 792, 3, 2, 2, 2, 790, 788, 3, 2, 2, 2, 790, 791, 3, 2, 2, 2, 791, 107, 3, 2, 2, 2, 792, 790, 3, 2, 2, 2, 793, 800, 5, 224, 113, 2, 794, 797, 7, 84, 2, 2, 795, 796, 9, 3, 2, 2, 796, 798, 5, 224, 113, 2, 797, 795, 3, 2, 2, 2, 797, 798, 3, 2, 2, 2, 798, 800, 3, 2, 2, 2, 799, 793, 3, 2, 2, 2, 799, 794, 3, 2, 2, 2, 800, 109, 3, 2, 2, 2, 801, 806, 5, 24, 13, 2, 802, 803, 7, 77, 2, 2, 803, 805, 5, 24, 13, 2, 804, 802, 3, 2, 2, 2, 805, 808, 3, 2, 2, 2, 806, 804, 3, 2, 2, 2, 806, 807, 3, 2, 2, 2, 807, 111, 3, 2, 2, 2, 808, 806, 3, 2, 2, 2, 809, 811, 7, 70, 2, 2, 810, 812, 5, 114, 58, 2, 811, 810, 3, 2, 2, 2, 811, 812, 3, 2, 2, 2, 812, 813, 3, 2, 2, 2, 813, 814, 7, 71, 2, 2, 814, 113, 3, 2, 2, 2, 815, 820, 5, 116, 59, 2, 816, 817, 7, 77, 2, 2, 817, 819, 5, 116, 59, 2, 818, 816, 3, 2, 2, 2, 819, 822, 3, 2, 2, 2, 820, 818, 3, 2, 2, 2, 820, 821, 3, 2, 2, 2, 821, 825, 3, 2, 2, 2, 822, 820, 3, 2, 2, 2, 823, 824, 7, 77, 2, 2, 824, 826, 5, 118, 60, 2, 825, 823, 3, 2, 2, 2, 825, 826, 3, 2, 2, 2, 826, 829, 3, 2, 2, 2, 827, 829, 5, 118, 60, 2, 828, 815, 3, 2, 2, 2, 828, 827, 3, 2, 2, 2, 829, 115, 3, 2, 2, 2, 830, 832, 5, 42, 22, 2, 831, 830, 3, 2, 2, 2, 832, 835, 3, 2, 2, 2, 833, 831, 3, 2, 2, 2, 833, 834, 3, 2, 2, 2, 834, 836, 3, 2, 2, 2, 835, 833, 3, 2, 2, 2, 836, 837, 5, 224, 113, 2, 837, 838, 5, 12, 7, 2, 838, 117, 3, 2, 2, 2, 839, 841, 5, 42, 22, 2, 840, 839, 3, 2, 2, 2, 841, 844, 3, 2, 2, 2, 842, 840, 3, 2, 2, 2, 842, 843, 3, 2, 2, 2, 843, 845, 3, 2, 2, 2, 844, 842, 3, 2, 2, 2, 845, 846, 5, 224, 113, 2, 846, 847, 7, 116, 2, 2, 847, 848, 5, 12, 7, 2, 848, 119, 3, 2, 2, 2, 849, 850, 7, 67, 2, 2, 850, 121, 3, 2, 2, 2, 851, 852, 7, 68, 2, 2, 852, 123, 3, 2, 2, 2, 853, 856, 5, 120, 61, 2, 854, 856, 5, 122, 62, 2, 855, 853, 3, 2, 2, 2, 855, 854, 3, 2, 2, 2, 856, 125, 3, 2, 2, 2, 857, 858, 9, 4, 2, 2, 858, 127, 3, 2, 2, 2, 859, 860, 9, 5, 2, 2, 860, 129, 3, 2, 2, 2, 861, 862, 7, 115, 2, 2, 862, 869, 5, 24, 13, 2, 863, 866, 7, 70, 2, 2, 864, 867, 5, 132, 67, 2, 865, 867, 5, 136, 69, 2, 866, 864, 3, 2, 2, 2, 866, 865, 3, 2, 2, 2, 866, 867, 3, 2, 2, 2, 867, 868, 3, 2, 2, 2, 868, 870, 7, 71, 2, 2, 869, 863, 3, 2, 2, 2, 869, 870, 3, 2, 2, 2, 870, 131, 3, 2, 2, 2, 871, 876, 5, 134, 68, 2, 872, 873, 7, 77, 2, 2, 873, 875, 5, 134, 68, 2, 874, 872, 3, 2, 2, 2, 875, 878, 3, 2, 2, 2, 876, 874, 3, 2, 2, 2, 876, 877, 3, 2, 2, 2, 877, 133, 3, 2, 2, 2, 878, 876, 3, 2, 2, 2, 879, 880, 7, 117, 2, 2, 880, 881, 7, 79, 2, 2, 881, 882, 5, 136, 69, 2, 882, 135, 3, 2, 2, 2, 883, 887, 5, 192, 97, 2, 884, 887, 5, 130, 66, 2, 885, 887, 5, 138, 70, 2, 886, 883, 3, 2, 2, 2, 886, 884, 3, 2, 2, 2, 886, 885, 3, 2, 2, 2, 887, 137, 3, 2, 2, 2, 888, 897, 7, 72, 2, 2, 889, 894, 5, 136, 69, 2, 890, 891, 7, 77, 2, 2, 891, 893, 5, 136, 69, 2, 892, 890, 3, 2, 2, 2, 893, 896, 3, 2, 2, 2, 894, 892, 3, 2, 2, 2, 894, 895, 3, 2, 2, 2, 895, 898, 3, 2, 2, 2, 896, 894, 3, 2, 2, 2, 897, 889, 3, 2, 2, 2, 897, 898, 3, 2, 2, 2, 898, 900, 3, 2, 2, 2, 899, 901, 7, 77, 2, 2, 900, 899, 3, 2, 2, 2, 900, 901, 3, 2, 2, 2, 901, 902, 3, 2, 2, 2, 902, 903, 7, 73, 2, 2, 903, 139, 3, 2, 2, 2, 904, 905, 7, 115, 2, 2, 905, 906, 7, 36, 2, 2, 906, 907, 7, 117, 2, 2, 907, 908, 5, 142, 72, 2, 908, 141, 3, 2, 2, 2, 909, 913, 7, 72, 2, 2, 910, 912, 5, 144, 73, 2, 911, 910, 3, 2, 2, 2, 912, 915, 3, 2, 2, 2, 913, 911, 3, 2, 2, 2, 913, 914, 3, 2, 2, 2, 914, 916, 3, 2, 2, 2, 915, 913, 3, 2, 2, 2, 916, 917, 7, 73, 2, 2, 917, 143, 3, 2, 2, 2, 918, 920, 5, 38, 20, 2, 919, 918, 3, 2, 2, 2, 920, 923, 3, 2, 2, 2, 921, 919, 3, 2, 2, 2, 921, 922, 3, 2, 2, 2, 922, 924, 3, 2, 2, 2, 923, 921, 3, 2, 2, 2, 924, 927, 5, 146, 74, 2, 925, 927, 7, 76, 2, 2, 926, 921, 3, 2, 2, 2, 926, 925, 3, 2, 2, 2, 927, 145, 3, 2, 2, 2, 928, 929, 5, 224, 113, 2, 929, 930, 5, 148, 75, 2, 930, 931, 7, 76, 2, 2, 931, 949, 3, 2, 2, 2, 932, 934, 5, 44, 23, 2, 933, 935, 7, 76, 2, 2, 934, 933, 3, 2, 2, 2, 934, 935, 3, 2, 2, 2, 935, 949, 3, 2, 2, 2, 936, 938, 5, 60, 31, 2, 937, 939, 7, 76, 2, 2, 938, 937, 3, 2, 2, 2, 938, 939, 3, 2, 2, 2, 939, 949, 3, 2, 2, 2, 940, 942, 5, 52, 27, 2, 941, 943, 7, 76, 2, 2, 942, 941, 3, 2, 2, 2, 942, 943, 3, 2, 2, 2, 943, 949, 3, 2, 2, 2, 944, 946, 5, 140, 71, 2, 945, 947, 7, 76, 2, 2, 946, 945, 3, 2, 2, 2, 946, 947, 3, 2, 2, 2, 947, 949, 3, 2, 2, 2, 948, 928, 3, 2, 2, 2, 948, 932, 3, 2, 2, 2, 948, 936, 3, 2, 2, 2, 948, 940, 3, 2, 2, 2, 948, 944, 3, 2, 2, 2, 949, 147, 3, 2, 2, 2, 950, 953, 5, 150, 76, 2, 951, 953, 5, 152, 77, 2, 952, 950, 3, 2, 2, 2, 952, 951, 3, 2, 2, 2, 953, 149, 3, 2, 2, 2, 954, 955, 7, 117, 2, 2, 955, 956, 7, 70, 2, 2, 956, 958, 7, 71, 2, 2, 957, 959, 5, 154, 78, 2, 958, 957, 3, 2, 2, 2, 958, 959, 3, 2, 2, 2, 959, 151, 3, 2, 2, 2, 960, 961, 5, 98, 50, 2, 961, 153, 3, 2, 2, 2, 962, 963, 7, 20, 2, 2, 963, 964, 5, 136, 69, 2, 964, 155, 3, 2, 2, 2, 965, 969, 7, 72, 2, 2, 966, 968, 5, 158, 80, 2, 967, 966, 3, 2, 2, 2, 968, 971, 3, 2, 2, 2, 969, 967, 3, 2, 2, 2, 969, 970, 3, 2, 2, 2, 970, 972, 3, 2, 2, 2, 971, 969, 3, 2, 2, 2, 972, 973, 7, 73, 2, 2, 973, 157, 3, 2, 2, 2, 974, 975, 5, 160, 81, 2, 975, 976, 7, 76, 2, 2, 976, 980, 3, 2, 2, 2, 977, 980, 5, 164, 83, 2, 978, 980, 5, 162, 82, 2, 979, 974, 3, 2, 2, 2, 979, 977, 3, 2, 2, 2, 979, 978, 3, 2, 2, 2, 980, 159, 3, 2, 2, 2, 981, 983, 5, 42, 22, 2, 982, 981, 3, 2, 2, 2, 983, 986, 3, 2, 2, 2, 984, 982, 3, 2, 2, 2, 984, 985, 3, 2, 2, 2, 985, 987, 3, 2, 2, 2, 986, 984, 3, 2, 2, 2, 987, 988, 5, 224, 113, 2, 988, 989, 5, 98, 50, 2, 989, 161, 3, 2, 2, 2, 990, 992, 5, 40, 21, 2, 991, 990, 3, 2, 2, 2, 992, 995, 3, 2, 2, 2, 993, 991, 3, 2, 2, 2, 993, 994, 3, 2, 2, 2, 994, 998, 3, 2, 2, 2, 995, 993, 3, 2, 2, 2, 996, 999, 5, 44, 23, 2, 997, 999, 5, 60, 31, 2, 998, 996, 3, 2, 2, 2, 998, 997, 3, 2, 2, 2, 999, 1002, 3, 2, 2, 2, 1000, 1002, 7, 76, 2, 2, 1001, 993, 3, 2, 2, 2, 1001, 1000, 3, 2, 2, 2, 1002, 163, 3, 2, 2, 2, 1003, 1108, 5, 156, 79, 2, 1004, 1005, 7, 10, 2, 2, 1005, 1008, 5, 192, 97, 2, 1006, 1007, 7, 85, 2, 2, 1007, 1009, 5, 192, 97, 2, 1008, 1006, 3, 2, 2, 2, 1008, 1009, 3, 2, 2, 2, 1009, 1010, 3, 2, 2, 2, 1010, 1011, 7, 76, 2, 2, 1011, 1108, 3, 2, 2, 2, 1012, 1013, 7, 30, 2, 2, 1013, 1014, 5, 188, 95, 2, 1014, 1017, 5, 164, 83, 2, 1015, 1016, 7, 23, 2, 2, 1016, 1018, 5, 164, 83, 2, 1017, 1015, 3, 2, 2, 2, 1017, 1018, 3, 2, 2, 2, 1018, 1108, 3, 2, 2, 2, 1019, 1020, 7, 29, 2, 2, 1020, 1021, 7, 70, 2, 2, 1021, 1022, 5, 182, 92, 2, 1022, 1023, 7, 71, 2, 2, 1023, 1024, 5, 164, 83, 2, 1024, 1108, 3, 2, 2, 2, 1025, 1026, 7, 59, 2, 2, 1026, 1027, 5, 188, 95, 2, 1027, 1028, 5, 164, 83, 2, 1028, 1108, 3, 2, 2, 2, 1029, 1030, 7, 21, 2, 2, 1030, 1031, 5, 164, 83, 2, 1031, 1032, 7, 59, 2, 2, 1032, 1033, 5, 188, 95, 2, 1033, 1034, 7, 76, 2, 2, 1034, 1108, 3, 2, 2, 2, 1035, 1036, 7, 55, 2, 2, 1036, 1046, 5, 156, 79, 2, 1037, 1039, 5, 166, 84, 2, 1038, 1037, 3, 2, 2, 2, 1039, 1040, 3, 2, 2, 2, 1040, 1038, 3, 2, 2, 2, 1040, 1041, 3, 2, 2, 2, 1041, 1043, 3, 2, 2, 2, 1042, 1044, 5, 170, 86, 2, 1043, 1042, 3, 2, 2, 2, 1043, 1044, 3, 2, 2, 2, 1044, 1047, 3, 2, 2, 2, 1045, 1047, 5, 170, 86, 2, 1046, 1038, 3, 2, 2, 2, 1046, 1045, 3, 2, 2, 2, 1047, 1108, 3, 2, 2, 2, 1048, 1049, 7, 55, 2, 2, 1049, 1050, 5, 172, 87, 2, 1050, 1054, 5, 156, 79, 2, 1051, 1053, 5, 166, 84, 2, 1052, 1051, 3, 2, 2, 2, 1053, 1056, 3, 2, 2, 2, 1054, 1052, 3, 2, 2, 2, 1054, 1055, 3, 2, 2, 2, 1055, 1058, 3, 2, 2, 2, 1056, 1054, 3, 2, 2, 2, 1057, 1059, 5, 170, 86, 2, 1058, 1057, 3, 2, 2, 2, 1058, 1059, 3, 2, 2, 2, 1059, 1108, 3, 2, 2, 2, 1060, 1061, 7, 49, 2, 2, 1061, 1062, 5, 188, 95, 2, 1062, 1066, 7, 72, 2, 2, 1063, 1065, 5, 178, 90, 2, 1064, 1063, 3, 2, 2, 2, 1065, 1068, 3, 2, 2, 2, 1066, 1064, 3, 2, 2, 2, 1066, 1067, 3, 2, 2, 2, 1067, 1072, 3, 2, 2, 2, 1068, 1066, 3, 2, 2, 2, 1069, 1071, 5, 180, 91, 2, 1070, 1069, 3, 2, 2, 2, 1071, 1074, 3, 2, 2, 2, 1072, 1070, 3, 2, 2, 2, 1072, 1073, 3, 2, 2, 2, 1073, 1075, 3, 2, 2, 2, 1074, 1072, 3, 2, 2, 2, 1075, 1076, 7, 73, 2, 2, 1076, 1108, 3, 2, 2, 2, 1077, 1078, 7, 50, 2, 2, 1078, 1079, 5, 188, 95, 2, 1079, 1080, 5, 156, 79, 2, 1080, 1108, 3, 2, 2, 2, 1081, 1083, 7, 44, 2, 2, 1082, 1084, 5, 192, 97, 2, 1083, 1082, 3, 2, 2, 2, 1083, 1084, 3, 2, 2, 2, 1084, 1085, 3, 2, 2, 2, 1085, 1108, 7, 76, 2, 2, 1086, 1087, 7, 52, 2, 2, 1087, 1088, 5, 192, 97, 2, 1088, 1089, 7, 76, 2, 2, 1089, 1108, 3, 2, 2, 2, 1090, 1092, 7, 12, 2, 2, 1091, 1093, 7, 117, 2, 2, 1092, 1091, 3, 2, 2, 2, 1092, 1093, 3, 2, 2, 2, 1093, 1094, 3, 2, 2, 2, 1094, 1108, 7, 76, 2, 2, 1095, 1097, 7, 19, 2, 2, 1096, 1098, 7, 117, 2, 2, 1097, 1096, 3, 2, 2, 2, 1097, 1098, 3, 2, 2, 2, 1098, 1099, 3, 2, 2, 2, 1099, 1108, 7, 76, 2, 2, 1100, 1108, 7, 76, 2, 2, 1101, 1102, 5, 192, 97, 2, 1102, 1103, 7, 76, 2, 2, 1103, 1108, 3, 2, 2, 2, 1104, 1105, 7, 117, 2, 2, 1105, 1106, 7, 85, 2, 2, 1106, 1108, 5, 164, 83, 2, 1107, 1003, 3, 2, 2, 2, 1107, 1004, 3, 2, 2, 2, 1107, 1012, 3, 2, 2, 2, 1107, 1019, 3, 2, 2, 2, 1107, 1025, 3, 2, 2, 2, 1107, 1029, 3, 2, 2, 2, 1107, 1035, 3, 2, 2, 2, 1107, 1048, 3, 2, 2, 2, 1107, 1060, 3, 2, 2, 2, 1107, 1077, 3, 2, 2, 2, 1107, 1081, 3, 2, 2, 2, 1107, 1086, 3, 2, 2, 2, 1107, 1090, 3, 2, 2, 2, 1107, 1095, 3, 2, 2, 2, 1107, 1100, 3, 2, 2, 2, 1107, 1101, 3, 2, 2, 2, 1107, 1104, 3, 2, 2, 2, 1108, 165, 3, 2, 2, 2, 1109, 1110, 7, 15, 2, 2, 1110, 1114, 7, 70, 2, 2, 1111, 1113, 5, 42, 22, 2, 1112, 1111, 3, 2, 2, 2, 1113, 1116, 3, 2, 2, 2, 1114, 1112, 3, 2, 2, 2, 1114, 1115, 3, 2, 2, 2, 1115, 1117, 3, 2, 2, 2, 1116, 1114, 3, 2, 2, 2, 1117, 1118, 5, 168, 85, 2, 1118, 1119, 7, 117, 2, 2, 1119, 1120, 7, 71, 2, 2, 1120, 1121, 5, 156, 79, 2, 1121, 167, 3, 2, 2, 2, 1122, 1127, 5, 24, 13, 2, 1123, 1124, 7, 99, 2, 2, 1124, 1126, 5, 24, 13, 2, 1125, 1123, 3, 2, 2, 2, 1126, 1129, 3, 2, 2, 2, 1127, 1125, 3, 2, 2, 2, 1127, 1128, 3, 2, 2, 2, 1128, 169, 3, 2, 2, 2, 1129, 1127, 3, 2, 2, 2, 1130, 1131, 7, 27, 2, 2, 1131, 1132, 5, 156, 79, 2, 1132, 171, 3, 2, 2, 2, 1133, 1134, 7, 70, 2, 2, 1134, 1136, 5, 174, 88, 2, 1135, 1137, 7, 76, 2, 2, 1136, 1135, 3, 2, 2, 2, 1136, 1137, 3, 2, 2, 2, 1137, 1138, 3, 2, 2, 2, 1138, 1139, 7, 71, 2, 2, 1139, 173, 3, 2, 2, 2, 1140, 1145, 5, 176, 89, 2, 1141, 1142, 7, 76, 2, 2, 1142, 1144, 5, 176, 89, 2, 1143, 1141, 3, 2, 2, 2, 1144, 1147, 3, 2, 2, 2, 1145, 1143, 3, 2, 2, 2, 1145, 1146, 3, 2, 2, 2, 1146, 175, 3, 2, 2, 2, 1147, 1145, 3, 2, 2, 2, 1148, 1150, 5, 42, 22, 2, 1149, 1148, 3, 2, 2, 2, 1150, 1153, 3, 2, 2, 2, 1151, 1149, 3, 2, 2, 2, 1151, 1152, 3, 2, 2, 2, 1152, 1154, 3, 2, 2, 2, 1153, 1151, 3, 2, 2, 2, 1154, 1155, 5, 106, 54, 2, 1155, 1156, 5, 12, 7, 2, 1156, 1157, 7, 79, 2, 2, 1157, 1158, 5, 192, 97, 2, 1158, 177, 3, 2, 2, 2, 1159, 1161, 5, 180, 91, 2, 1160, 1159, 3, 2, 2, 2, 1161, 1162, 3, 2, 2, 2, 1162, 1160, 3, 2, 2, 2, 1162, 1163, 3, 2, 2, 2, 1163, 1165, 3, 2, 2, 2, 1164, 1166, 5, 158, 80, 2, 1165, 1164, 3, 2, 2, 2, 1166, 1167, 3, 2, 2, 2, 1167, 1165, 3, 2, 2, 2, 1167, 1168, 3, 2, 2, 2, 1168, 179, 3, 2, 2, 2, 1169, 1172, 7, 14, 2, 2, 1170, 1173, 5, 192, 97, 2, 1171, 1173, 7, 117, 2, 2, 1172, 1170, 3, 2, 2, 2, 1172, 1171, 3, 2, 2, 2, 1173, 1174, 3, 2, 2, 2, 1174, 1178, 7, 85, 2, 2, 1175, 1176, 7, 20, 2, 2, 1176, 1178, 7, 85, 2, 2, 1177, 1169, 3, 2, 2, 2, 1177, 1175, 3, 2, 2, 2, 1178, 181, 3, 2, 2, 2, 1179, 1192, 5, 186, 94, 2, 1180, 1182, 5, 184, 93, 2, 1181, 1180, 3, 2, 2, 2, 1181, 1182, 3, 2, 2, 2, 1182, 1183, 3, 2, 2, 2, 1183, 1185, 7, 76, 2, 2, 1184, 1186, 5, 192, 97, 2, 1185, 1184, 3, 2, 2, 2, 1185, 1186, 3, 2, 2, 2, 1186, 1187, 3, 2, 2, 2, 1187, 1189, 7, 76, 2, 2, 1188, 1190, 5, 190, 96, 2, 1189, 1188, 3, 2, 2, 2, 1189, 1190, 3, 2, 2, 2, 1190, 1192, 3, 2, 2, 2, 1191, 1179, 3, 2, 2, 2, 1191, 1181, 3, 2, 2, 2, 1192, 183, 3, 2, 2, 2, 1193, 1196, 5, 160, 81, 2, 1194, 1196, 5, 190, 96, 2, 1195, 1193, 3, 2, 2, 2, 1195, 1194, 3, 2, 2, 2, 1196, 185, 3, 2, 2, 2, 1197, 1199, 5, 42, 22, 2, 1198, 1197, 3, 2, 2, 2, 1199, 1202, 3, 2, 2, 2, 1200, 1198, 3, 2, 2, 2, 1200, 1201, 3, 2, 2, 2, 1201, 1203, 3, 2, 2, 2, 1202, 1200, 3, 2, 2, 2, 1203, 1204, 5, 224, 113, 2, 1204, 1205, 5, 12, 7, 2, 1205, 1206, 7, 85, 2, 2, 1206, 1207, 5, 192, 97, 2, 1207, 187, 3, 2, 2, 2, 1208, 1209, 7, 70, 2, 2, 1209, 1210, 5, 192, 97, 2, 1210, 1211, 7, 71, 2, 2, 1211, 189, 3, 2, 2, 2, 1212, 1217, 5, 192, 97, 2, 1213, 1214, 7, 77, 2, 2, 1214, 1216, 5, 192, 97, 2, 1215, 1213, 3, 2, 2, 2, 1216, 1219, 3, 2, 2, 2, 1217, 1215, 3, 2, 2, 2, 1217, 1218, 3, 2, 2, 2, 1218, 191, 3, 2, 2, 2, 1219, 1217, 3, 2, 2, 2, 1220, 1221, 8, 97, 1, 2, 1221, 1252, 5, 200, 101, 2, 1222, 1252, 5, 16, 9, 2, 1223, 1224, 7, 39, 2, 2, 1224, 1252, 5, 204, 103, 2, 1225, 1226, 7, 70, 2, 2, 1226, 1227, 5, 224, 113, 2, 1227, 1228, 7, 71, 2, 2, 1228, 1229, 5, 192, 97, 23, 1229, 1252, 3, 2, 2, 2, 1230, 1231, 9, 6, 2, 2, 1231, 1252, 5, 192, 97, 21, 1232, 1233, 9, 7, 2, 2, 1233, 1252, 5, 192, 97, 20, 1234, 1252, 5, 194, 98, 2, 1235, 1236, 5, 224, 113, 2, 1236, 1242, 7, 114, 2, 2, 1237, 1239, 5, 226, 114, 2, 1238, 1237, 3, 2, 2, 2, 1238, 1239, 3, 2, 2, 2, 1239, 1240, 3, 2, 2, 2, 1240, 1243, 7, 117, 2, 2, 1241, 1243, 7, 39, 2, 2, 1242, 1238, 3, 2, 2, 2, 1242, 1241, 3, 2, 2, 2, 1243, 1252, 3, 2, 2, 2, 1244, 1245, 5, 202, 102, 2, 1245, 1247, 7, 114, 2, 2, 1246, 1248, 5, 226, 114, 2, 1247, 1246, 3, 2, 2, 2, 1247, 1248, 3, 2, 2, 2, 1248, 1249, 3, 2, 2, 2, 1249, 1250, 7, 39, 2, 2, 1250, 1252, 3, 2, 2, 2, 1251, 1220, 3, 2, 2, 2, 1251, 1222, 3, 2, 2, 2, 1251, 1223, 3, 2, 2, 2, 1251, 1225, 3, 2, 2, 2, 1251, 1230, 3, 2, 2, 2, 1251, 1232, 3, 2, 2, 2, 1251, 1234, 3, 2, 2, 2, 1251, 1235, 3, 2, 2, 2, 1251, 1244, 3, 2, 2, 2, 1252, 1333, 3, 2, 2, 2, 1253, 1254, 12, 19, 2, 2, 1254, 1255, 9, 8, 2, 2, 1255, 1332, 5, 192, 97, 20, 1256, 1257, 12, 18, 2, 2, 1257, 1258, 9, 9, 2, 2, 1258, 1332, 5, 192, 97, 19, 1259, 1267, 12, 17, 2, 2, 1260, 1261, 7, 81, 2, 2, 1261, 1268, 7, 81, 2, 2, 1262, 1263, 7, 80, 2, 2, 1263, 1264, 7, 80, 2, 2, 1264, 1268, 7, 80, 2, 2, 1265, 1266, 7, 80, 2, 2, 1266, 1268, 7, 80, 2, 2, 1267, 1260, 3, 2, 2, 2, 1267, 1262, 3, 2, 2, 2, 1267, 1265, 3, 2, 2, 2, 1268, 1269, 3, 2, 2, 2, 1269, 1332, 5, 192, 97, 18, 1270, 1271, 12, 16, 2, 2, 1271, 1272, 9, 10, 2, 2, 1272, 1332, 5, 192, 97, 17, 1273, 1274, 12, 14, 2, 2, 1274, 1275, 9, 11, 2, 2, 1275, 1332, 5, 192, 97, 15, 1276, 1277, 12, 13, 2, 2, 1277, 1278, 7, 98, 2, 2, 1278, 1332, 5, 192, 97, 14, 1279, 1280, 12, 12, 2, 2, 1280, 1281, 7, 100, 2, 2, 1281, 1332, 5, 192, 97, 13, 1282, 1283, 12, 11, 2, 2, 1283, 1284, 7, 99, 2, 2, 1284, 1332, 5, 192, 97, 12, 1285, 1286, 12, 10, 2, 2, 1286, 1287, 7, 90, 2, 2, 1287, 1332, 5, 192, 97, 11, 1288, 1289, 12, 9, 2, 2, 1289, 1290, 7, 91, 2, 2, 1290, 1332, 5, 192, 97, 10, 1291, 1292, 12, 8, 2, 2, 1292, 1293, 7, 84, 2, 2, 1293, 1294, 5, 192, 97, 2, 1294, 1295, 7, 85, 2, 2, 1295, 1296, 5, 192, 97, 9, 1296, 1332, 3, 2, 2, 2, 1297, 1298, 12, 7, 2, 2, 1298, 1299, 9, 12, 2, 2, 1299, 1332, 5, 192, 97, 7, 1300, 1301, 12, 27, 2, 2, 1301, 1313, 7, 78, 2, 2, 1302, 1314, 7, 117, 2, 2, 1303, 1314, 5, 16, 9, 2, 1304, 1314, 7, 51, 2, 2, 1305, 1307, 7, 39, 2, 2, 1306, 1308, 5, 220, 111, 2, 1307, 1306, 3, 2, 2, 2, 1307, 1308, 3, 2, 2, 2, 1308, 1309, 3, 2, 2, 2, 1309, 1314, 5, 208, 105, 2, 1310, 1311, 7, 48, 2, 2, 1311, 1314, 5, 228, 115, 2, 1312, 1314, 5, 214, 108, 2, 1313, 1302, 3, 2, 2, 2, 1313, 1303, 3, 2, 2, 2, 1313, 1304, 3, 2, 2, 2, 1313, 1305, 3, 2, 2, 2, 1313, 1310, 3, 2, 2, 2, 1313, 1312, 3, 2, 2, 2, 1314, 1332, 3, 2, 2, 2, 1315, 1316, 12, 26, 2, 2, 1316, 1317, 7, 74, 2, 2, 1317, 1318, 5, 192, 97, 2, 1318, 1319, 7, 75, 2, 2, 1319, 1332, 3, 2, 2, 2, 1320, 1321, 12, 22, 2, 2, 1321, 1332, 9, 13, 2, 2, 1322, 1323, 12, 15, 2, 2, 1323, 1324, 7, 34, 2, 2, 1324, 1332, 5, 224, 113, 2, 1325, 1326, 12, 5, 2, 2, 1326, 1328, 7, 114, 2, 2, 1327, 1329, 5, 226, 114, 2, 1328, 1327, 3, 2, 2, 2, 1328, 1329, 3, 2, 2, 2, 1329, 1330, 3, 2, 2, 2, 1330, 1332, 7, 117, 2, 2, 1331, 1253, 3, 2, 2, 2, 1331, 1256, 3, 2, 2, 2, 1331, 1259, 3, 2, 2, 2, 1331, 1270, 3, 2, 2, 2, 1331, 1273, 3, 2, 2, 2, 1331, 1276, 3, 2, 2, 2, 1331, 1279, 3, 2, 2, 2, 1331, 1282, 3, 2, 2, 2, 1331, 1285, 3, 2, 2, 2, 1331, 1288, 3, 2, 2, 2, 1331, 1291, 3, 2, 2, 2, 1331, 1297, 3, 2, 2, 2, 1331, 1300, 3, 2, 2, 2, 1331, 1315, 3, 2, 2, 2, 1331, 1320, 3, 2, 2, 2, 1331, 1322, 3, 2, 2, 2, 1331, 1325, 3, 2, 2, 2, 1332, 1335, 3, 2, 2, 2, 1333, 1331, 3, 2, 2, 2, 1333, 1334, 3, 2, 2, 2, 1334, 193, 3, 2, 2, 2, 1335, 1333, 3, 2, 2, 2, 1336, 1337, 5, 196, 99, 2, 1337, 1338, 7, 113, 2, 2, 1338, 1339, 5, 198, 100, 2, 1339, 195, 3, 2, 2, 2, 1340, 1357, 7, 117, 2, 2, 1341, 1343, 7, 70, 2, 2, 1342, 1344, 5, 114, 58, 2, 1343, 1342, 3, 2, 2, 2, 1343, 1344, 3, 2, 2, 2, 1344, 1345, 3, 2, 2, 2, 1345, 1357, 7, 71, 2, 2, 1346, 1347, 7, 70, 2, 2, 1347, 1352, 7, 117, 2, 2, 1348, 1349, 7, 77, 2, 2, 1349, 1351, 7, 117, 2, 2, 1350, 1348, 3, 2, 2, 2, 1351, 1354, 3, 2, 2, 2, 1352, 1350, 3, 2, 2, 2, 1352, 1353, 3, 2, 2, 2, 1353, 1355, 3, 2, 2, 2, 1354, 1352, 3, 2, 2, 2, 1355, 1357, 7, 71, 2, 2, 1356, 1340, 3, 2, 2, 2, 1356, 1341, 3, 2, 2, 2, 1356, 1346, 3, 2, 2, 2, 1357, 197, 3, 2, 2, 2, 1358, 1361, 5, 192, 97, 2, 1359, 1361, 5, 156, 79, 2, 1360, 1358, 3, 2, 2, 2, 1360, 1359, 3, 2, 2, 2, 1361, 199, 3, 2, 2, 2, 1362, 1363, 7, 70, 2, 2, 1363, 1364, 5, 192, 97, 2, 1364, 1365, 7, 71, 2, 2, 1365, 1381, 3, 2, 2, 2, 1366, 1381, 7, 51, 2, 2, 1367, 1381, 7, 48, 2, 2, 1368, 1381, 5, 26, 14, 2, 1369, 1381, 7, 117, 2, 2, 1370, 1371, 5, 74, 38, 2, 1371, 1372, 7, 78, 2, 2, 1372, 1373, 7, 17, 2, 2, 1373, 1381, 3, 2, 2, 2, 1374, 1378, 5, 220, 111, 2, 1375, 1379, 5, 230, 116, 2, 1376, 1377, 7, 51, 2, 2, 1377, 1379, 5, 232, 117, 2, 1378, 1375, 3, 2, 2, 2, 1378, 1376, 3, 2, 2, 2, 1379, 1381, 3, 2, 2, 2, 1380, 1362, 3, 2, 2, 2, 1380, 1366, 3, 2, 2, 2, 1380, 1367, 3, 2, 2, 2, 1380, 1368, 3, 2, 2, 2, 1380, 1369, 3, 2, 2, 2, 1380, 1370, 3, 2, 2, 2, 1380, 1374, 3, 2, 2, 2, 1381, 201, 3, 2, 2, 2, 1382, 1383, 5, 106, 54, 2, 1383, 1384, 7, 78, 2, 2, 1384, 1386, 3, 2, 2, 2, 1385, 1382, 3, 2, 2, 2, 1385, 1386, 3, 2, 2, 2, 1386, 1390, 3, 2, 2, 2, 1387, 1389, 5, 130, 66, 2, 1388, 1387, 3, 2, 2, 2, 1389, 1392, 3, 2, 2, 2, 1390, 1388, 3, 2, 2, 2, 1390, 1391, 3, 2, 2, 2, 1391, 1393, 3, 2, 2, 2, 1392, 1390, 3, 2, 2, 2, 1393, 1395, 7, 117, 2, 2, 1394, 1396, 5, 226, 114, 2, 1395, 1394, 3, 2, 2, 2, 1395, 1396, 3, 2, 2, 2, 1396, 203, 3, 2, 2, 2, 1397, 1398, 5, 220, 111, 2, 1398, 1399, 5, 206, 104, 2, 1399, 1400, 5, 212, 107, 2, 1400, 1407, 3, 2, 2, 2, 1401, 1404, 5, 206, 104, 2, 1402, 1405, 5, 210, 106, 2, 1403, 1405, 5, 212, 107, 2, 1404, 1402, 3, 2, 2, 2, 1404, 1403, 3, 2, 2, 2, 1405, 1407, 3, 2, 2, 2, 1406, 1397, 3, 2, 2, 2, 1406, 1401, 3, 2, 2, 2, 1407, 205, 3, 2, 2, 2, 1408, 1410, 7, 117, 2, 2, 1409, 1411, 5, 216, 109, 2, 1410, 1409, 3, 2, 2, 2, 1410, 1411, 3, 2, 2, 2, 1411, 1419, 3, 2, 2, 2, 1412, 1413, 7, 78, 2, 2, 1413, 1415, 7, 117, 2, 2, 1414, 1416, 5, 216, 109, 2, 1415, 1414, 3, 2, 2, 2, 1415, 1416, 3, 2, 2, 2, 1416, 1418, 3, 2, 2, 2, 1417, 1412, 3, 2, 2, 2, 1418, 1421, 3, 2, 2, 2, 1419, 1417, 3, 2, 2, 2, 1419, 1420, 3, 2, 2, 2, 1420, 1424, 3, 2, 2, 2, 1421, 1419, 3, 2, 2, 2, 1422, 1424, 5, 20, 11, 2, 1423, 1408, 3, 2, 2, 2, 1423, 1422, 3, 2, 2, 2, 1424, 207, 3, 2, 2, 2, 1425, 1427, 7, 117, 2, 2, 1426, 1428, 5, 218, 110, 2, 1427, 1426, 3, 2, 2, 2, 1427, 1428, 3, 2, 2, 2, 1428, 1429, 3, 2, 2, 2, 1429, 1430, 5, 212, 107, 2, 1430, 209, 3, 2, 2, 2, 1431, 1459, 7, 74, 2, 2, 1432, 1437, 7, 75, 2, 2, 1433, 1434, 7, 74, 2, 2, 1434, 1436, 7, 75, 2, 2, 1435, 1433, 3, 2, 2, 2, 1436, 1439, 3, 2, 2, 2, 1437, 1435, 3, 2, 2, 2, 1437, 1438, 3, 2, 2, 2, 1438, 1440, 3, 2, 2, 2, 1439, 1437, 3, 2, 2, 2, 1440, 1460, 5, 104, 53, 2, 1441, 1442, 5, 192, 97, 2, 1442, 1449, 7, 75, 2, 2, 1443, 1444, 7, 74, 2, 2, 1444, 1445, 5, 192, 97, 2, 1445, 1446, 7, 75, 2, 2, 1446, 1448, 3, 2, 2, 2, 1447, 1443, 3, 2, 2, 2, 1448, 1451, 3, 2, 2, 2, 1449, 1447, 3, 2, 2, 2, 1449, 1450, 3, 2, 2, 2, 1450, 1456, 3, 2, 2, 2, 1451, 1449, 3, 2, 2, 2, 1452, 1453, 7, 74, 2, 2, 1453, 1455, 7, 75, 2, 2, 1454, 1452, 3, 2, 2, 2, 1455, 1458, 3, 2, 2, 2, 1456, 1454, 3, 2, 2, 2, 1456, 1457, 3, 2, 2, 2, 1457, 1460, 3, 2, 2, 2, 1458, 1456, 3, 2, 2, 2, 1459, 1432, 3, 2, 2, 2, 1459, 1441, 3, 2, 2, 2, 1460, 211, 3, 2, 2, 2, 1461, 1463, 5, 232, 117, 2, 1462, 1464, 5, 62, 32, 2, 1463, 1462, 3, 2, 2, 2, 1463, 1464, 3, 2, 2, 2, 1464, 213, 3, 2, 2, 2, 1465, 1466, 5, 220, 111, 2, 1466, 1467, 5, 230, 116, 2, 1467, 215, 3, 2, 2, 2, 1468, 1469, 7, 81, 2, 2, 1469, 1472, 7, 80, 2, 2, 1470, 1472, 5, 226, 114, 2, 1471, 1468, 3, 2, 2, 2, 1471, 1470, 3, 2, 2, 2, 1472, 217, 3, 2, 2, 2, 1473, 1474, 7, 81, 2, 2, 1474, 1477, 7, 80, 2, 2, 1475, 1477, 5, 220, 111, 2, 1476, 1473, 3, 2, 2, 2, 1476, 1475, 3, 2, 2, 2, 1477, 219, 3, 2, 2, 2, 1478, 1479, 7, 81, 2, 2, 1479, 1480, 5, 222, 112, 2, 1480, 1481, 7, 80, 2, 2, 1481, 221, 3, 2, 2, 2, 1482, 1487, 5, 224, 113, 2, 1483, 1484, 7, 77, 2, 2, 1484, 1486, 5, 224, 113, 2, 1485, 1483, 3, 2, 2, 2, 1486, 1489, 3, 2, 2, 2, 1487, 1485, 3, 2, 2, 2, 1487, 1488, 3, 2, 2, 2, 1488, 223, 3, 2, 2, 2, 1489, 1487, 3, 2, 2, 2, 1490, 1492, 5, 130, 66, 2, 1491, 1490, 3, 2, 2, 2, 1491, 1492, 3, 2, 2, 2, 1492, 1496, 3, 2, 2, 2, 1493, 1497, 5, 106, 54, 2, 1494, 1497, 5, 20, 11, 2, 1495, 1497, 7, 56, 2, 2, 1496, 1493, 3, 2, 2, 2, 1496, 1494, 3, 2, 2, 2, 1496, 1495, 3, 2, 2, 2, 1497, 1502, 3, 2, 2, 2, 1498, 1499, 7, 74, 2, 2, 1499, 1501, 7, 75, 2, 2, 1500, 1498, 3, 2, 2, 2, 1501, 1504, 3, 2, 2, 2, 1502, 1500, 3, 2, 2, 2, 1502, 1503, 3, 2, 2, 2, 1503, 225, 3, 2, 2, 2, 1504, 1502, 3, 2, 2, 2, 1505, 1506, 7, 81, 2, 2, 1506, 1511, 5, 108, 55, 2, 1507, 1508, 7, 77, 2, 2, 1508, 1510, 5, 108, 55, 2, 1509, 1507, 3, 2, 2, 2, 1510, 1513, 3, 2, 2, 2, 1511, 1509, 3, 2, 2, 2, 1511, 1512, 3, 2, 2, 2, 1512, 1514, 3, 2, 2, 2, 1513, 1511, 3, 2, 2, 2, 1514, 1515, 7, 80, 2, 2, 1515, 227, 3, 2, 2, 2, 1516, 1523, 5, 232, 117, 2, 1517, 1518, 7, 78, 2, 2, 1518, 1520, 7, 117, 2, 2, 1519, 1521, 5, 232, 117, 2, 1520, 1519, 3, 2, 2, 2, 1520, 1521, 3, 2, 2, 2, 1521, 1523, 3, 2, 2, 2, 1522, 1516, 3, 2, 2, 2, 1522, 1517, 3, 2, 2, 2, 1523, 229, 3, 2, 2, 2, 1524, 1525, 7, 48, 2, 2, 1525, 1529, 5, 228, 115, 2, 1526, 1527, 7, 117, 2, 2, 1527, 1529, 5, 232, 117, 2, 1528, 1524, 3, 2, 2, 2, 1528, 1526, 3, 2, 2, 2, 1529, 231, 3, 2, 2, 2, 1530, 1532, 7, 70, 2, 2, 1531, 1533, 5, 190, 96, 2, 1532, 1531, 3, 2, 2, 2, 1532, 1533, 3, 2, 2, 2, 1533, 1534, 3, 2, 2, 2, 1534, 1535, 7, 71, 2, 2, 1535, 233, 3, 2, 2, 2, 197, 237, 240, 245, 251, 258, 260, 267, 269, 277, 279, 287, 289, 295, 297, 305, 307, 310, 318, 321, 328, 337, 343, 349, 352, 357, 370, 376, 381, 385, 395, 400, 405, 411, 419, 428, 433, 440, 447, 450, 457, 467, 471, 476, 480, 484, 494, 502, 508, 515, 522, 526, 529, 532, 541, 547, 552, 555, 561, 567, 571, 579, 588, 596, 602, 606, 617, 626, 631, 637, 641, 653, 664, 669, 678, 686, 696, 705, 713, 718, 726, 731, 741, 751, 757, 761, 769, 773, 775, 781, 786, 790, 797, 799, 806, 811, 820, 825, 828, 833, 842, 855, 866, 869, 876, 886, 894, 897, 900, 913, 921, 926, 934, 938, 942, 946, 948, 952, 958, 969, 979, 984, 993, 998, 1001, 1008, 1017, 1040, 1043, 1046, 1054, 1058, 1066, 1072, 1083, 1092, 1097, 1107, 1114, 1127, 1136, 1145, 1151, 1162, 1167, 1172, 1177, 1181, 1185, 1189, 1191, 1195, 1200, 1217, 1238, 1242, 1247, 1251, 1267, 1307, 1313, 1328, 1331, 1333, 1343, 1352, 1356, 1360, 1378, 1380, 1385, 1390, 1395, 1404, 1406, 1410, 1415, 1419, 1423, 1427, 1437, 1449, 1456, 1459, 1463, 1471, 1476, 1487, 1491, 1496, 1502, 1511, 1520, 1522, 1528, 1532]
\ No newline at end of file
diff --git a/java/generated/processing/mode/java/preproc/Processing.tokens b/java/generated/processing/mode/java/preproc/Processing.tokens
new file mode 100644
index 000000000..0b56eed32
--- /dev/null
+++ b/java/generated/processing/mode/java/preproc/Processing.tokens
@@ -0,0 +1,215 @@
+T__0=1
+HexColorLiteral=2
+WS=3
+COMMENT=4
+LINE_COMMENT=5
+CHAR_LITERAL=6
+ABSTRACT=7
+ASSERT=8
+BOOLEAN=9
+BREAK=10
+BYTE=11
+CASE=12
+CATCH=13
+CHAR=14
+CLASS=15
+CONST=16
+CONTINUE=17
+DEFAULT=18
+DO=19
+DOUBLE=20
+ELSE=21
+ENUM=22
+EXTENDS=23
+FINAL=24
+FINALLY=25
+FLOAT=26
+FOR=27
+IF=28
+GOTO=29
+IMPLEMENTS=30
+IMPORT=31
+INSTANCEOF=32
+INT=33
+INTERFACE=34
+LONG=35
+NATIVE=36
+NEW=37
+PACKAGE=38
+PRIVATE=39
+PROTECTED=40
+PUBLIC=41
+RETURN=42
+SHORT=43
+STATIC=44
+STRICTFP=45
+SUPER=46
+SWITCH=47
+SYNCHRONIZED=48
+THIS=49
+THROW=50
+THROWS=51
+TRANSIENT=52
+TRY=53
+VAR=54
+VOID=55
+VOLATILE=56
+WHILE=57
+DECIMAL_LITERAL=58
+HEX_LITERAL=59
+OCT_LITERAL=60
+BINARY_LITERAL=61
+FLOAT_LITERAL=62
+HEX_FLOAT_LITERAL=63
+BOOL_LITERAL=64
+STRING_LITERAL=65
+MULTI_STRING_LIT=66
+NULL_LITERAL=67
+LPAREN=68
+RPAREN=69
+LBRACE=70
+RBRACE=71
+LBRACK=72
+RBRACK=73
+SEMI=74
+COMMA=75
+DOT=76
+ASSIGN=77
+GT=78
+LT=79
+BANG=80
+TILDE=81
+QUESTION=82
+COLON=83
+EQUAL=84
+LE=85
+GE=86
+NOTEQUAL=87
+AND=88
+OR=89
+INC=90
+DEC=91
+ADD=92
+SUB=93
+MUL=94
+DIV=95
+BITAND=96
+BITOR=97
+CARET=98
+MOD=99
+ADD_ASSIGN=100
+SUB_ASSIGN=101
+MUL_ASSIGN=102
+DIV_ASSIGN=103
+AND_ASSIGN=104
+OR_ASSIGN=105
+XOR_ASSIGN=106
+MOD_ASSIGN=107
+LSHIFT_ASSIGN=108
+RSHIFT_ASSIGN=109
+URSHIFT_ASSIGN=110
+ARROW=111
+COLONCOLON=112
+AT=113
+ELLIPSIS=114
+IDENTIFIER=115
+'color'=1
+'abstract'=7
+'assert'=8
+'boolean'=9
+'break'=10
+'byte'=11
+'case'=12
+'catch'=13
+'char'=14
+'class'=15
+'const'=16
+'continue'=17
+'default'=18
+'do'=19
+'double'=20
+'else'=21
+'enum'=22
+'extends'=23
+'final'=24
+'finally'=25
+'float'=26
+'for'=27
+'if'=28
+'goto'=29
+'implements'=30
+'import'=31
+'instanceof'=32
+'int'=33
+'interface'=34
+'long'=35
+'native'=36
+'new'=37
+'package'=38
+'private'=39
+'protected'=40
+'public'=41
+'return'=42
+'short'=43
+'static'=44
+'strictfp'=45
+'super'=46
+'switch'=47
+'synchronized'=48
+'this'=49
+'throw'=50
+'throws'=51
+'transient'=52
+'try'=53
+'var'=54
+'void'=55
+'volatile'=56
+'while'=57
+'null'=67
+'('=68
+')'=69
+'{'=70
+'}'=71
+'['=72
+']'=73
+';'=74
+','=75
+'.'=76
+'='=77
+'>'=78
+'<'=79
+'!'=80
+'~'=81
+'?'=82
+':'=83
+'=='=84
+'<='=85
+'>='=86
+'!='=87
+'&&'=88
+'||'=89
+'++'=90
+'--'=91
+'+'=92
+'-'=93
+'*'=94
+'/'=95
+'&'=96
+'|'=97
+'^'=98
+'%'=99
+'+='=100
+'-='=101
+'*='=102
+'/='=103
+'&='=104
+'|='=105
+'^='=106
+'%='=107
+'<<='=108
+'>>='=109
+'>>>='=110
+'->'=111
+'::'=112
+'@'=113
+'...'=114
diff --git a/java/generated/processing/mode/java/preproc/ProcessingBaseListener.java b/java/generated/processing/mode/java/preproc/ProcessingBaseListener.java
new file mode 100644
index 000000000..43a196c77
--- /dev/null
+++ b/java/generated/processing/mode/java/preproc/ProcessingBaseListener.java
@@ -0,0 +1,1431 @@
+// Generated from /Users/steftervelde/Source/Processing-Foundation/processing4/java/src/processing/mode/java/preproc/Processing.g4 by ANTLR 4.7.2
+package processing.mode.java.preproc;
+
+import org.antlr.v4.runtime.ParserRuleContext;
+import org.antlr.v4.runtime.tree.ErrorNode;
+import org.antlr.v4.runtime.tree.TerminalNode;
+
+/**
+ * This class provides an empty implementation of {@link ProcessingListener},
+ * which can be extended to create a listener which only needs to handle a subset
+ * of the available methods.
+ */
+public class ProcessingBaseListener implements ProcessingListener {
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation does nothing.
+ */
+ @Override public void enterProcessingSketch(ProcessingParser.ProcessingSketchContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitProcessingSketch(ProcessingParser.ProcessingSketchContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterJavaProcessingSketch(ProcessingParser.JavaProcessingSketchContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitJavaProcessingSketch(ProcessingParser.JavaProcessingSketchContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterStaticProcessingSketch(ProcessingParser.StaticProcessingSketchContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitStaticProcessingSketch(ProcessingParser.StaticProcessingSketchContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterActiveProcessingSketch(ProcessingParser.ActiveProcessingSketchContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitActiveProcessingSketch(ProcessingParser.ActiveProcessingSketchContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterWarnMixedModes(ProcessingParser.WarnMixedModesContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitWarnMixedModes(ProcessingParser.WarnMixedModesContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterVariableDeclaratorId(ProcessingParser.VariableDeclaratorIdContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitVariableDeclaratorId(ProcessingParser.VariableDeclaratorIdContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterWarnTypeAsVariableName(ProcessingParser.WarnTypeAsVariableNameContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitWarnTypeAsVariableName(ProcessingParser.WarnTypeAsVariableNameContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterMethodCall(ProcessingParser.MethodCallContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitMethodCall(ProcessingParser.MethodCallContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterFunctionWithPrimitiveTypeName(ProcessingParser.FunctionWithPrimitiveTypeNameContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitFunctionWithPrimitiveTypeName(ProcessingParser.FunctionWithPrimitiveTypeNameContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterPrimitiveType(ProcessingParser.PrimitiveTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitPrimitiveType(ProcessingParser.PrimitiveTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterColorPrimitiveType(ProcessingParser.ColorPrimitiveTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitColorPrimitiveType(ProcessingParser.ColorPrimitiveTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterQualifiedName(ProcessingParser.QualifiedNameContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitQualifiedName(ProcessingParser.QualifiedNameContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterLiteral(ProcessingParser.LiteralContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitLiteral(ProcessingParser.LiteralContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterHexColorLiteral(ProcessingParser.HexColorLiteralContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitHexColorLiteral(ProcessingParser.HexColorLiteralContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterCompilationUnit(ProcessingParser.CompilationUnitContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitCompilationUnit(ProcessingParser.CompilationUnitContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterPackageDeclaration(ProcessingParser.PackageDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitPackageDeclaration(ProcessingParser.PackageDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterImportDeclaration(ProcessingParser.ImportDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitImportDeclaration(ProcessingParser.ImportDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterTypeDeclaration(ProcessingParser.TypeDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitTypeDeclaration(ProcessingParser.TypeDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterModifier(ProcessingParser.ModifierContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitModifier(ProcessingParser.ModifierContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterClassOrInterfaceModifier(ProcessingParser.ClassOrInterfaceModifierContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitClassOrInterfaceModifier(ProcessingParser.ClassOrInterfaceModifierContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterVariableModifier(ProcessingParser.VariableModifierContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitVariableModifier(ProcessingParser.VariableModifierContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterClassDeclaration(ProcessingParser.ClassDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitClassDeclaration(ProcessingParser.ClassDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterTypeParameters(ProcessingParser.TypeParametersContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitTypeParameters(ProcessingParser.TypeParametersContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterTypeParameter(ProcessingParser.TypeParameterContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitTypeParameter(ProcessingParser.TypeParameterContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterTypeBound(ProcessingParser.TypeBoundContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitTypeBound(ProcessingParser.TypeBoundContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterEnumDeclaration(ProcessingParser.EnumDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitEnumDeclaration(ProcessingParser.EnumDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterEnumConstants(ProcessingParser.EnumConstantsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitEnumConstants(ProcessingParser.EnumConstantsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterEnumConstant(ProcessingParser.EnumConstantContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitEnumConstant(ProcessingParser.EnumConstantContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterEnumBodyDeclarations(ProcessingParser.EnumBodyDeclarationsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitEnumBodyDeclarations(ProcessingParser.EnumBodyDeclarationsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterInterfaceDeclaration(ProcessingParser.InterfaceDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitInterfaceDeclaration(ProcessingParser.InterfaceDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterClassBody(ProcessingParser.ClassBodyContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitClassBody(ProcessingParser.ClassBodyContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterInterfaceBody(ProcessingParser.InterfaceBodyContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitInterfaceBody(ProcessingParser.InterfaceBodyContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterClassBodyDeclaration(ProcessingParser.ClassBodyDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitClassBodyDeclaration(ProcessingParser.ClassBodyDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterMemberDeclaration(ProcessingParser.MemberDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitMemberDeclaration(ProcessingParser.MemberDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterMethodDeclaration(ProcessingParser.MethodDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitMethodDeclaration(ProcessingParser.MethodDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterMethodBody(ProcessingParser.MethodBodyContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitMethodBody(ProcessingParser.MethodBodyContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterTypeTypeOrVoid(ProcessingParser.TypeTypeOrVoidContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitTypeTypeOrVoid(ProcessingParser.TypeTypeOrVoidContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterGenericMethodDeclaration(ProcessingParser.GenericMethodDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitGenericMethodDeclaration(ProcessingParser.GenericMethodDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterGenericConstructorDeclaration(ProcessingParser.GenericConstructorDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitGenericConstructorDeclaration(ProcessingParser.GenericConstructorDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterConstructorDeclaration(ProcessingParser.ConstructorDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitConstructorDeclaration(ProcessingParser.ConstructorDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterFieldDeclaration(ProcessingParser.FieldDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitFieldDeclaration(ProcessingParser.FieldDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterInterfaceBodyDeclaration(ProcessingParser.InterfaceBodyDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitInterfaceBodyDeclaration(ProcessingParser.InterfaceBodyDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterInterfaceMemberDeclaration(ProcessingParser.InterfaceMemberDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitInterfaceMemberDeclaration(ProcessingParser.InterfaceMemberDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterConstDeclaration(ProcessingParser.ConstDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitConstDeclaration(ProcessingParser.ConstDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterConstantDeclarator(ProcessingParser.ConstantDeclaratorContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitConstantDeclarator(ProcessingParser.ConstantDeclaratorContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterInterfaceMethodDeclaration(ProcessingParser.InterfaceMethodDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitInterfaceMethodDeclaration(ProcessingParser.InterfaceMethodDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterInterfaceMethodModifier(ProcessingParser.InterfaceMethodModifierContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitInterfaceMethodModifier(ProcessingParser.InterfaceMethodModifierContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterGenericInterfaceMethodDeclaration(ProcessingParser.GenericInterfaceMethodDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitGenericInterfaceMethodDeclaration(ProcessingParser.GenericInterfaceMethodDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterVariableDeclarators(ProcessingParser.VariableDeclaratorsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitVariableDeclarators(ProcessingParser.VariableDeclaratorsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterVariableDeclarator(ProcessingParser.VariableDeclaratorContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitVariableDeclarator(ProcessingParser.VariableDeclaratorContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterVariableInitializer(ProcessingParser.VariableInitializerContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitVariableInitializer(ProcessingParser.VariableInitializerContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterArrayInitializer(ProcessingParser.ArrayInitializerContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitArrayInitializer(ProcessingParser.ArrayInitializerContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterClassOrInterfaceType(ProcessingParser.ClassOrInterfaceTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitClassOrInterfaceType(ProcessingParser.ClassOrInterfaceTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterTypeArgument(ProcessingParser.TypeArgumentContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitTypeArgument(ProcessingParser.TypeArgumentContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterQualifiedNameList(ProcessingParser.QualifiedNameListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitQualifiedNameList(ProcessingParser.QualifiedNameListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterFormalParameters(ProcessingParser.FormalParametersContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitFormalParameters(ProcessingParser.FormalParametersContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterFormalParameterList(ProcessingParser.FormalParameterListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitFormalParameterList(ProcessingParser.FormalParameterListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterFormalParameter(ProcessingParser.FormalParameterContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitFormalParameter(ProcessingParser.FormalParameterContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterLastFormalParameter(ProcessingParser.LastFormalParameterContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitLastFormalParameter(ProcessingParser.LastFormalParameterContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterBaseStringLiteral(ProcessingParser.BaseStringLiteralContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitBaseStringLiteral(ProcessingParser.BaseStringLiteralContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterMultilineStringLiteral(ProcessingParser.MultilineStringLiteralContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitMultilineStringLiteral(ProcessingParser.MultilineStringLiteralContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterStringLiteral(ProcessingParser.StringLiteralContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitStringLiteral(ProcessingParser.StringLiteralContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterIntegerLiteral(ProcessingParser.IntegerLiteralContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitIntegerLiteral(ProcessingParser.IntegerLiteralContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterFloatLiteral(ProcessingParser.FloatLiteralContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitFloatLiteral(ProcessingParser.FloatLiteralContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterAnnotation(ProcessingParser.AnnotationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitAnnotation(ProcessingParser.AnnotationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterElementValuePairs(ProcessingParser.ElementValuePairsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitElementValuePairs(ProcessingParser.ElementValuePairsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterElementValuePair(ProcessingParser.ElementValuePairContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitElementValuePair(ProcessingParser.ElementValuePairContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterElementValue(ProcessingParser.ElementValueContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitElementValue(ProcessingParser.ElementValueContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterElementValueArrayInitializer(ProcessingParser.ElementValueArrayInitializerContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitElementValueArrayInitializer(ProcessingParser.ElementValueArrayInitializerContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterAnnotationTypeDeclaration(ProcessingParser.AnnotationTypeDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitAnnotationTypeDeclaration(ProcessingParser.AnnotationTypeDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterAnnotationTypeBody(ProcessingParser.AnnotationTypeBodyContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitAnnotationTypeBody(ProcessingParser.AnnotationTypeBodyContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterAnnotationTypeElementDeclaration(ProcessingParser.AnnotationTypeElementDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitAnnotationTypeElementDeclaration(ProcessingParser.AnnotationTypeElementDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterAnnotationTypeElementRest(ProcessingParser.AnnotationTypeElementRestContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitAnnotationTypeElementRest(ProcessingParser.AnnotationTypeElementRestContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterAnnotationMethodOrConstantRest(ProcessingParser.AnnotationMethodOrConstantRestContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitAnnotationMethodOrConstantRest(ProcessingParser.AnnotationMethodOrConstantRestContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterAnnotationMethodRest(ProcessingParser.AnnotationMethodRestContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitAnnotationMethodRest(ProcessingParser.AnnotationMethodRestContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterAnnotationConstantRest(ProcessingParser.AnnotationConstantRestContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitAnnotationConstantRest(ProcessingParser.AnnotationConstantRestContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterDefaultValue(ProcessingParser.DefaultValueContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitDefaultValue(ProcessingParser.DefaultValueContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterBlock(ProcessingParser.BlockContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitBlock(ProcessingParser.BlockContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterBlockStatement(ProcessingParser.BlockStatementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitBlockStatement(ProcessingParser.BlockStatementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterLocalVariableDeclaration(ProcessingParser.LocalVariableDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitLocalVariableDeclaration(ProcessingParser.LocalVariableDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterLocalTypeDeclaration(ProcessingParser.LocalTypeDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitLocalTypeDeclaration(ProcessingParser.LocalTypeDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterStatement(ProcessingParser.StatementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitStatement(ProcessingParser.StatementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterCatchClause(ProcessingParser.CatchClauseContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitCatchClause(ProcessingParser.CatchClauseContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterCatchType(ProcessingParser.CatchTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitCatchType(ProcessingParser.CatchTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterFinallyBlock(ProcessingParser.FinallyBlockContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitFinallyBlock(ProcessingParser.FinallyBlockContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterResourceSpecification(ProcessingParser.ResourceSpecificationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitResourceSpecification(ProcessingParser.ResourceSpecificationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterResources(ProcessingParser.ResourcesContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitResources(ProcessingParser.ResourcesContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterResource(ProcessingParser.ResourceContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitResource(ProcessingParser.ResourceContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterSwitchBlockStatementGroup(ProcessingParser.SwitchBlockStatementGroupContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitSwitchBlockStatementGroup(ProcessingParser.SwitchBlockStatementGroupContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterSwitchLabel(ProcessingParser.SwitchLabelContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitSwitchLabel(ProcessingParser.SwitchLabelContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterForControl(ProcessingParser.ForControlContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitForControl(ProcessingParser.ForControlContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterForInit(ProcessingParser.ForInitContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitForInit(ProcessingParser.ForInitContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterEnhancedForControl(ProcessingParser.EnhancedForControlContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitEnhancedForControl(ProcessingParser.EnhancedForControlContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterParExpression(ProcessingParser.ParExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitParExpression(ProcessingParser.ParExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterExpressionList(ProcessingParser.ExpressionListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitExpressionList(ProcessingParser.ExpressionListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterExpression(ProcessingParser.ExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitExpression(ProcessingParser.ExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterLambdaExpression(ProcessingParser.LambdaExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitLambdaExpression(ProcessingParser.LambdaExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterLambdaParameters(ProcessingParser.LambdaParametersContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitLambdaParameters(ProcessingParser.LambdaParametersContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterLambdaBody(ProcessingParser.LambdaBodyContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitLambdaBody(ProcessingParser.LambdaBodyContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterPrimary(ProcessingParser.PrimaryContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitPrimary(ProcessingParser.PrimaryContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterClassType(ProcessingParser.ClassTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitClassType(ProcessingParser.ClassTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterCreator(ProcessingParser.CreatorContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitCreator(ProcessingParser.CreatorContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterCreatedName(ProcessingParser.CreatedNameContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitCreatedName(ProcessingParser.CreatedNameContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterInnerCreator(ProcessingParser.InnerCreatorContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitInnerCreator(ProcessingParser.InnerCreatorContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterArrayCreatorRest(ProcessingParser.ArrayCreatorRestContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitArrayCreatorRest(ProcessingParser.ArrayCreatorRestContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterClassCreatorRest(ProcessingParser.ClassCreatorRestContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitClassCreatorRest(ProcessingParser.ClassCreatorRestContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterExplicitGenericInvocation(ProcessingParser.ExplicitGenericInvocationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitExplicitGenericInvocation(ProcessingParser.ExplicitGenericInvocationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterTypeArgumentsOrDiamond(ProcessingParser.TypeArgumentsOrDiamondContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitTypeArgumentsOrDiamond(ProcessingParser.TypeArgumentsOrDiamondContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterNonWildcardTypeArgumentsOrDiamond(ProcessingParser.NonWildcardTypeArgumentsOrDiamondContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitNonWildcardTypeArgumentsOrDiamond(ProcessingParser.NonWildcardTypeArgumentsOrDiamondContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterNonWildcardTypeArguments(ProcessingParser.NonWildcardTypeArgumentsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitNonWildcardTypeArguments(ProcessingParser.NonWildcardTypeArgumentsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterTypeList(ProcessingParser.TypeListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitTypeList(ProcessingParser.TypeListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterTypeType(ProcessingParser.TypeTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitTypeType(ProcessingParser.TypeTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterTypeArguments(ProcessingParser.TypeArgumentsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitTypeArguments(ProcessingParser.TypeArgumentsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterSuperSuffix(ProcessingParser.SuperSuffixContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitSuperSuffix(ProcessingParser.SuperSuffixContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterExplicitGenericInvocationSuffix(ProcessingParser.ExplicitGenericInvocationSuffixContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitExplicitGenericInvocationSuffix(ProcessingParser.ExplicitGenericInvocationSuffixContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterArguments(ProcessingParser.ArgumentsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitArguments(ProcessingParser.ArgumentsContext ctx) { }
+
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterEveryRule(ParserRuleContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitEveryRule(ParserRuleContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void visitTerminal(TerminalNode node) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void visitErrorNode(ErrorNode node) { }
+}
\ No newline at end of file
diff --git a/java/generated/processing/mode/java/preproc/ProcessingLexer.interp b/java/generated/processing/mode/java/preproc/ProcessingLexer.interp
new file mode 100644
index 000000000..144a4eac0
--- /dev/null
+++ b/java/generated/processing/mode/java/preproc/ProcessingLexer.interp
@@ -0,0 +1,369 @@
+token literal names:
+null
+'color'
+null
+null
+null
+null
+null
+'abstract'
+'assert'
+'boolean'
+'break'
+'byte'
+'case'
+'catch'
+'char'
+'class'
+'const'
+'continue'
+'default'
+'do'
+'double'
+'else'
+'enum'
+'extends'
+'final'
+'finally'
+'float'
+'for'
+'if'
+'goto'
+'implements'
+'import'
+'instanceof'
+'int'
+'interface'
+'long'
+'native'
+'new'
+'package'
+'private'
+'protected'
+'public'
+'return'
+'short'
+'static'
+'strictfp'
+'super'
+'switch'
+'synchronized'
+'this'
+'throw'
+'throws'
+'transient'
+'try'
+'var'
+'void'
+'volatile'
+'while'
+null
+null
+null
+null
+null
+null
+null
+null
+null
+'null'
+'('
+')'
+'{'
+'}'
+'['
+']'
+';'
+','
+'.'
+'='
+'>'
+'<'
+'!'
+'~'
+'?'
+':'
+'=='
+'<='
+'>='
+'!='
+'&&'
+'||'
+'++'
+'--'
+'+'
+'-'
+'*'
+'/'
+'&'
+'|'
+'^'
+'%'
+'+='
+'-='
+'*='
+'/='
+'&='
+'|='
+'^='
+'%='
+'<<='
+'>>='
+'>>>='
+'->'
+'::'
+'@'
+'...'
+null
+
+token symbolic names:
+null
+null
+HexColorLiteral
+WS
+COMMENT
+LINE_COMMENT
+CHAR_LITERAL
+ABSTRACT
+ASSERT
+BOOLEAN
+BREAK
+BYTE
+CASE
+CATCH
+CHAR
+CLASS
+CONST
+CONTINUE
+DEFAULT
+DO
+DOUBLE
+ELSE
+ENUM
+EXTENDS
+FINAL
+FINALLY
+FLOAT
+FOR
+IF
+GOTO
+IMPLEMENTS
+IMPORT
+INSTANCEOF
+INT
+INTERFACE
+LONG
+NATIVE
+NEW
+PACKAGE
+PRIVATE
+PROTECTED
+PUBLIC
+RETURN
+SHORT
+STATIC
+STRICTFP
+SUPER
+SWITCH
+SYNCHRONIZED
+THIS
+THROW
+THROWS
+TRANSIENT
+TRY
+VAR
+VOID
+VOLATILE
+WHILE
+DECIMAL_LITERAL
+HEX_LITERAL
+OCT_LITERAL
+BINARY_LITERAL
+FLOAT_LITERAL
+HEX_FLOAT_LITERAL
+BOOL_LITERAL
+STRING_LITERAL
+MULTI_STRING_LIT
+NULL_LITERAL
+LPAREN
+RPAREN
+LBRACE
+RBRACE
+LBRACK
+RBRACK
+SEMI
+COMMA
+DOT
+ASSIGN
+GT
+LT
+BANG
+TILDE
+QUESTION
+COLON
+EQUAL
+LE
+GE
+NOTEQUAL
+AND
+OR
+INC
+DEC
+ADD
+SUB
+MUL
+DIV
+BITAND
+BITOR
+CARET
+MOD
+ADD_ASSIGN
+SUB_ASSIGN
+MUL_ASSIGN
+DIV_ASSIGN
+AND_ASSIGN
+OR_ASSIGN
+XOR_ASSIGN
+MOD_ASSIGN
+LSHIFT_ASSIGN
+RSHIFT_ASSIGN
+URSHIFT_ASSIGN
+ARROW
+COLONCOLON
+AT
+ELLIPSIS
+IDENTIFIER
+
+rule names:
+T__0
+HexColorLiteral
+WS
+COMMENT
+LINE_COMMENT
+CHAR_LITERAL
+ABSTRACT
+ASSERT
+BOOLEAN
+BREAK
+BYTE
+CASE
+CATCH
+CHAR
+CLASS
+CONST
+CONTINUE
+DEFAULT
+DO
+DOUBLE
+ELSE
+ENUM
+EXTENDS
+FINAL
+FINALLY
+FLOAT
+FOR
+IF
+GOTO
+IMPLEMENTS
+IMPORT
+INSTANCEOF
+INT
+INTERFACE
+LONG
+NATIVE
+NEW
+PACKAGE
+PRIVATE
+PROTECTED
+PUBLIC
+RETURN
+SHORT
+STATIC
+STRICTFP
+SUPER
+SWITCH
+SYNCHRONIZED
+THIS
+THROW
+THROWS
+TRANSIENT
+TRY
+VAR
+VOID
+VOLATILE
+WHILE
+DECIMAL_LITERAL
+HEX_LITERAL
+OCT_LITERAL
+BINARY_LITERAL
+FLOAT_LITERAL
+HEX_FLOAT_LITERAL
+BOOL_LITERAL
+STRING_LITERAL
+MULTI_STRING_LIT
+NULL_LITERAL
+LPAREN
+RPAREN
+LBRACE
+RBRACE
+LBRACK
+RBRACK
+SEMI
+COMMA
+DOT
+ASSIGN
+GT
+LT
+BANG
+TILDE
+QUESTION
+COLON
+EQUAL
+LE
+GE
+NOTEQUAL
+AND
+OR
+INC
+DEC
+ADD
+SUB
+MUL
+DIV
+BITAND
+BITOR
+CARET
+MOD
+ADD_ASSIGN
+SUB_ASSIGN
+MUL_ASSIGN
+DIV_ASSIGN
+AND_ASSIGN
+OR_ASSIGN
+XOR_ASSIGN
+MOD_ASSIGN
+LSHIFT_ASSIGN
+RSHIFT_ASSIGN
+URSHIFT_ASSIGN
+ARROW
+COLONCOLON
+AT
+ELLIPSIS
+IDENTIFIER
+ExponentPart
+EscapeSequence
+HexDigits
+HexDigit
+Digits
+LetterOrDigit
+Letter
+
+channel names:
+DEFAULT_TOKEN_CHANNEL
+HIDDEN
+
+mode names:
+DEFAULT_MODE
+
+atn:
+[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 2, 117, 996, 8, 1, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, 49, 4, 50, 9, 50, 4, 51, 9, 51, 4, 52, 9, 52, 4, 53, 9, 53, 4, 54, 9, 54, 4, 55, 9, 55, 4, 56, 9, 56, 4, 57, 9, 57, 4, 58, 9, 58, 4, 59, 9, 59, 4, 60, 9, 60, 4, 61, 9, 61, 4, 62, 9, 62, 4, 63, 9, 63, 4, 64, 9, 64, 4, 65, 9, 65, 4, 66, 9, 66, 4, 67, 9, 67, 4, 68, 9, 68, 4, 69, 9, 69, 4, 70, 9, 70, 4, 71, 9, 71, 4, 72, 9, 72, 4, 73, 9, 73, 4, 74, 9, 74, 4, 75, 9, 75, 4, 76, 9, 76, 4, 77, 9, 77, 4, 78, 9, 78, 4, 79, 9, 79, 4, 80, 9, 80, 4, 81, 9, 81, 4, 82, 9, 82, 4, 83, 9, 83, 4, 84, 9, 84, 4, 85, 9, 85, 4, 86, 9, 86, 4, 87, 9, 87, 4, 88, 9, 88, 4, 89, 9, 89, 4, 90, 9, 90, 4, 91, 9, 91, 4, 92, 9, 92, 4, 93, 9, 93, 4, 94, 9, 94, 4, 95, 9, 95, 4, 96, 9, 96, 4, 97, 9, 97, 4, 98, 9, 98, 4, 99, 9, 99, 4, 100, 9, 100, 4, 101, 9, 101, 4, 102, 9, 102, 4, 103, 9, 103, 4, 104, 9, 104, 4, 105, 9, 105, 4, 106, 9, 106, 4, 107, 9, 107, 4, 108, 9, 108, 4, 109, 9, 109, 4, 110, 9, 110, 4, 111, 9, 111, 4, 112, 9, 112, 4, 113, 9, 113, 4, 114, 9, 114, 4, 115, 9, 115, 4, 116, 9, 116, 4, 117, 9, 117, 4, 118, 9, 118, 4, 119, 9, 119, 4, 120, 9, 120, 4, 121, 9, 121, 4, 122, 9, 122, 4, 123, 9, 123, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 5, 3, 258, 10, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 6, 4, 268, 10, 4, 13, 4, 14, 4, 269, 3, 4, 3, 4, 3, 5, 3, 5, 3, 5, 3, 5, 7, 5, 278, 10, 5, 12, 5, 14, 5, 281, 11, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 6, 3, 6, 3, 6, 3, 6, 7, 6, 292, 10, 6, 12, 6, 14, 6, 295, 11, 6, 3, 6, 3, 6, 3, 7, 3, 7, 3, 7, 7, 7, 302, 10, 7, 12, 7, 14, 7, 305, 11, 7, 3, 7, 3, 7, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 20, 3, 20, 3, 20, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 28, 3, 28, 3, 28, 3, 28, 3, 29, 3, 29, 3, 29, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 34, 3, 34, 3, 34, 3, 34, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 38, 3, 38, 3, 38, 3, 38, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 54, 3, 54, 3, 54, 3, 54, 3, 55, 3, 55, 3, 55, 3, 55, 3, 56, 3, 56, 3, 56, 3, 56, 3, 56, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 59, 3, 59, 3, 59, 5, 59, 655, 10, 59, 3, 59, 6, 59, 658, 10, 59, 13, 59, 14, 59, 659, 3, 59, 5, 59, 663, 10, 59, 5, 59, 665, 10, 59, 3, 59, 5, 59, 668, 10, 59, 3, 60, 3, 60, 3, 60, 3, 60, 7, 60, 674, 10, 60, 12, 60, 14, 60, 677, 11, 60, 3, 60, 5, 60, 680, 10, 60, 3, 60, 5, 60, 683, 10, 60, 3, 61, 3, 61, 7, 61, 687, 10, 61, 12, 61, 14, 61, 690, 11, 61, 3, 61, 3, 61, 7, 61, 694, 10, 61, 12, 61, 14, 61, 697, 11, 61, 3, 61, 5, 61, 700, 10, 61, 3, 61, 5, 61, 703, 10, 61, 3, 62, 3, 62, 3, 62, 3, 62, 7, 62, 709, 10, 62, 12, 62, 14, 62, 712, 11, 62, 3, 62, 5, 62, 715, 10, 62, 3, 62, 5, 62, 718, 10, 62, 3, 63, 3, 63, 3, 63, 5, 63, 723, 10, 63, 3, 63, 3, 63, 5, 63, 727, 10, 63, 3, 63, 5, 63, 730, 10, 63, 3, 63, 5, 63, 733, 10, 63, 3, 63, 3, 63, 3, 63, 5, 63, 738, 10, 63, 3, 63, 5, 63, 741, 10, 63, 5, 63, 743, 10, 63, 3, 64, 3, 64, 3, 64, 3, 64, 5, 64, 749, 10, 64, 3, 64, 5, 64, 752, 10, 64, 3, 64, 3, 64, 5, 64, 756, 10, 64, 3, 64, 3, 64, 5, 64, 760, 10, 64, 3, 64, 3, 64, 5, 64, 764, 10, 64, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 5, 65, 775, 10, 65, 3, 66, 3, 66, 3, 66, 7, 66, 780, 10, 66, 12, 66, 14, 66, 783, 11, 66, 3, 66, 3, 66, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 7, 67, 793, 10, 67, 12, 67, 14, 67, 796, 11, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 69, 3, 69, 3, 70, 3, 70, 3, 71, 3, 71, 3, 72, 3, 72, 3, 73, 3, 73, 3, 74, 3, 74, 3, 75, 3, 75, 3, 76, 3, 76, 3, 77, 3, 77, 3, 78, 3, 78, 3, 79, 3, 79, 3, 80, 3, 80, 3, 81, 3, 81, 3, 82, 3, 82, 3, 83, 3, 83, 3, 84, 3, 84, 3, 85, 3, 85, 3, 85, 3, 86, 3, 86, 3, 86, 3, 87, 3, 87, 3, 87, 3, 88, 3, 88, 3, 88, 3, 89, 3, 89, 3, 89, 3, 90, 3, 90, 3, 90, 3, 91, 3, 91, 3, 91, 3, 92, 3, 92, 3, 92, 3, 93, 3, 93, 3, 94, 3, 94, 3, 95, 3, 95, 3, 96, 3, 96, 3, 97, 3, 97, 3, 98, 3, 98, 3, 99, 3, 99, 3, 100, 3, 100, 3, 101, 3, 101, 3, 101, 3, 102, 3, 102, 3, 102, 3, 103, 3, 103, 3, 103, 3, 104, 3, 104, 3, 104, 3, 105, 3, 105, 3, 105, 3, 106, 3, 106, 3, 106, 3, 107, 3, 107, 3, 107, 3, 108, 3, 108, 3, 108, 3, 109, 3, 109, 3, 109, 3, 109, 3, 110, 3, 110, 3, 110, 3, 110, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 112, 3, 112, 3, 112, 3, 113, 3, 113, 3, 113, 3, 114, 3, 114, 3, 115, 3, 115, 3, 115, 3, 115, 3, 116, 3, 116, 7, 116, 930, 10, 116, 12, 116, 14, 116, 933, 11, 116, 3, 117, 3, 117, 5, 117, 937, 10, 117, 3, 117, 3, 117, 3, 118, 3, 118, 3, 118, 3, 118, 5, 118, 945, 10, 118, 3, 118, 5, 118, 948, 10, 118, 3, 118, 3, 118, 3, 118, 6, 118, 953, 10, 118, 13, 118, 14, 118, 954, 3, 118, 3, 118, 3, 118, 3, 118, 3, 118, 5, 118, 962, 10, 118, 3, 119, 3, 119, 3, 119, 7, 119, 967, 10, 119, 12, 119, 14, 119, 970, 11, 119, 3, 119, 5, 119, 973, 10, 119, 3, 120, 3, 120, 3, 121, 3, 121, 7, 121, 979, 10, 121, 12, 121, 14, 121, 982, 11, 121, 3, 121, 5, 121, 985, 10, 121, 3, 122, 3, 122, 5, 122, 989, 10, 122, 3, 123, 3, 123, 3, 123, 3, 123, 5, 123, 995, 10, 123, 4, 279, 794, 2, 124, 3, 3, 5, 4, 7, 5, 9, 6, 11, 7, 13, 8, 15, 9, 17, 10, 19, 11, 21, 12, 23, 13, 25, 14, 27, 15, 29, 16, 31, 17, 33, 18, 35, 19, 37, 20, 39, 21, 41, 22, 43, 23, 45, 24, 47, 25, 49, 26, 51, 27, 53, 28, 55, 29, 57, 30, 59, 31, 61, 32, 63, 33, 65, 34, 67, 35, 69, 36, 71, 37, 73, 38, 75, 39, 77, 40, 79, 41, 81, 42, 83, 43, 85, 44, 87, 45, 89, 46, 91, 47, 93, 48, 95, 49, 97, 50, 99, 51, 101, 52, 103, 53, 105, 54, 107, 55, 109, 56, 111, 57, 113, 58, 115, 59, 117, 60, 119, 61, 121, 62, 123, 63, 125, 64, 127, 65, 129, 66, 131, 67, 133, 68, 135, 69, 137, 70, 139, 71, 141, 72, 143, 73, 145, 74, 147, 75, 149, 76, 151, 77, 153, 78, 155, 79, 157, 80, 159, 81, 161, 82, 163, 83, 165, 84, 167, 85, 169, 86, 171, 87, 173, 88, 175, 89, 177, 90, 179, 91, 181, 92, 183, 93, 185, 94, 187, 95, 189, 96, 191, 97, 193, 98, 195, 99, 197, 100, 199, 101, 201, 102, 203, 103, 205, 104, 207, 105, 209, 106, 211, 107, 213, 108, 215, 109, 217, 110, 219, 111, 221, 112, 223, 113, 225, 114, 227, 115, 229, 116, 231, 117, 233, 2, 235, 2, 237, 2, 239, 2, 241, 2, 243, 2, 245, 2, 3, 2, 29, 5, 2, 11, 12, 14, 15, 34, 34, 4, 2, 12, 12, 15, 15, 6, 2, 12, 12, 15, 15, 41, 41, 94, 94, 3, 2, 51, 59, 4, 2, 78, 78, 110, 110, 4, 2, 90, 90, 122, 122, 5, 2, 50, 59, 67, 72, 99, 104, 6, 2, 50, 59, 67, 72, 97, 97, 99, 104, 3, 2, 50, 57, 4, 2, 50, 57, 97, 97, 4, 2, 68, 68, 100, 100, 3, 2, 50, 51, 4, 2, 50, 51, 97, 97, 6, 2, 70, 70, 72, 72, 102, 102, 104, 104, 4, 2, 82, 82, 114, 114, 4, 2, 45, 45, 47, 47, 6, 2, 12, 12, 15, 15, 36, 36, 94, 94, 3, 2, 94, 94, 4, 2, 71, 71, 103, 103, 10, 2, 36, 36, 41, 41, 94, 94, 100, 100, 104, 104, 112, 112, 116, 116, 118, 118, 3, 2, 50, 53, 3, 2, 50, 59, 4, 2, 50, 59, 97, 97, 6, 2, 38, 38, 67, 92, 97, 97, 99, 124, 4, 2, 2, 129, 55298, 56321, 3, 2, 55298, 56321, 3, 2, 56322, 57345, 2, 1041, 2, 3, 3, 2, 2, 2, 2, 5, 3, 2, 2, 2, 2, 7, 3, 2, 2, 2, 2, 9, 3, 2, 2, 2, 2, 11, 3, 2, 2, 2, 2, 13, 3, 2, 2, 2, 2, 15, 3, 2, 2, 2, 2, 17, 3, 2, 2, 2, 2, 19, 3, 2, 2, 2, 2, 21, 3, 2, 2, 2, 2, 23, 3, 2, 2, 2, 2, 25, 3, 2, 2, 2, 2, 27, 3, 2, 2, 2, 2, 29, 3, 2, 2, 2, 2, 31, 3, 2, 2, 2, 2, 33, 3, 2, 2, 2, 2, 35, 3, 2, 2, 2, 2, 37, 3, 2, 2, 2, 2, 39, 3, 2, 2, 2, 2, 41, 3, 2, 2, 2, 2, 43, 3, 2, 2, 2, 2, 45, 3, 2, 2, 2, 2, 47, 3, 2, 2, 2, 2, 49, 3, 2, 2, 2, 2, 51, 3, 2, 2, 2, 2, 53, 3, 2, 2, 2, 2, 55, 3, 2, 2, 2, 2, 57, 3, 2, 2, 2, 2, 59, 3, 2, 2, 2, 2, 61, 3, 2, 2, 2, 2, 63, 3, 2, 2, 2, 2, 65, 3, 2, 2, 2, 2, 67, 3, 2, 2, 2, 2, 69, 3, 2, 2, 2, 2, 71, 3, 2, 2, 2, 2, 73, 3, 2, 2, 2, 2, 75, 3, 2, 2, 2, 2, 77, 3, 2, 2, 2, 2, 79, 3, 2, 2, 2, 2, 81, 3, 2, 2, 2, 2, 83, 3, 2, 2, 2, 2, 85, 3, 2, 2, 2, 2, 87, 3, 2, 2, 2, 2, 89, 3, 2, 2, 2, 2, 91, 3, 2, 2, 2, 2, 93, 3, 2, 2, 2, 2, 95, 3, 2, 2, 2, 2, 97, 3, 2, 2, 2, 2, 99, 3, 2, 2, 2, 2, 101, 3, 2, 2, 2, 2, 103, 3, 2, 2, 2, 2, 105, 3, 2, 2, 2, 2, 107, 3, 2, 2, 2, 2, 109, 3, 2, 2, 2, 2, 111, 3, 2, 2, 2, 2, 113, 3, 2, 2, 2, 2, 115, 3, 2, 2, 2, 2, 117, 3, 2, 2, 2, 2, 119, 3, 2, 2, 2, 2, 121, 3, 2, 2, 2, 2, 123, 3, 2, 2, 2, 2, 125, 3, 2, 2, 2, 2, 127, 3, 2, 2, 2, 2, 129, 3, 2, 2, 2, 2, 131, 3, 2, 2, 2, 2, 133, 3, 2, 2, 2, 2, 135, 3, 2, 2, 2, 2, 137, 3, 2, 2, 2, 2, 139, 3, 2, 2, 2, 2, 141, 3, 2, 2, 2, 2, 143, 3, 2, 2, 2, 2, 145, 3, 2, 2, 2, 2, 147, 3, 2, 2, 2, 2, 149, 3, 2, 2, 2, 2, 151, 3, 2, 2, 2, 2, 153, 3, 2, 2, 2, 2, 155, 3, 2, 2, 2, 2, 157, 3, 2, 2, 2, 2, 159, 3, 2, 2, 2, 2, 161, 3, 2, 2, 2, 2, 163, 3, 2, 2, 2, 2, 165, 3, 2, 2, 2, 2, 167, 3, 2, 2, 2, 2, 169, 3, 2, 2, 2, 2, 171, 3, 2, 2, 2, 2, 173, 3, 2, 2, 2, 2, 175, 3, 2, 2, 2, 2, 177, 3, 2, 2, 2, 2, 179, 3, 2, 2, 2, 2, 181, 3, 2, 2, 2, 2, 183, 3, 2, 2, 2, 2, 185, 3, 2, 2, 2, 2, 187, 3, 2, 2, 2, 2, 189, 3, 2, 2, 2, 2, 191, 3, 2, 2, 2, 2, 193, 3, 2, 2, 2, 2, 195, 3, 2, 2, 2, 2, 197, 3, 2, 2, 2, 2, 199, 3, 2, 2, 2, 2, 201, 3, 2, 2, 2, 2, 203, 3, 2, 2, 2, 2, 205, 3, 2, 2, 2, 2, 207, 3, 2, 2, 2, 2, 209, 3, 2, 2, 2, 2, 211, 3, 2, 2, 2, 2, 213, 3, 2, 2, 2, 2, 215, 3, 2, 2, 2, 2, 217, 3, 2, 2, 2, 2, 219, 3, 2, 2, 2, 2, 221, 3, 2, 2, 2, 2, 223, 3, 2, 2, 2, 2, 225, 3, 2, 2, 2, 2, 227, 3, 2, 2, 2, 2, 229, 3, 2, 2, 2, 2, 231, 3, 2, 2, 2, 3, 247, 3, 2, 2, 2, 5, 253, 3, 2, 2, 2, 7, 267, 3, 2, 2, 2, 9, 273, 3, 2, 2, 2, 11, 287, 3, 2, 2, 2, 13, 298, 3, 2, 2, 2, 15, 308, 3, 2, 2, 2, 17, 317, 3, 2, 2, 2, 19, 324, 3, 2, 2, 2, 21, 332, 3, 2, 2, 2, 23, 338, 3, 2, 2, 2, 25, 343, 3, 2, 2, 2, 27, 348, 3, 2, 2, 2, 29, 354, 3, 2, 2, 2, 31, 359, 3, 2, 2, 2, 33, 365, 3, 2, 2, 2, 35, 371, 3, 2, 2, 2, 37, 380, 3, 2, 2, 2, 39, 388, 3, 2, 2, 2, 41, 391, 3, 2, 2, 2, 43, 398, 3, 2, 2, 2, 45, 403, 3, 2, 2, 2, 47, 408, 3, 2, 2, 2, 49, 416, 3, 2, 2, 2, 51, 422, 3, 2, 2, 2, 53, 430, 3, 2, 2, 2, 55, 436, 3, 2, 2, 2, 57, 440, 3, 2, 2, 2, 59, 443, 3, 2, 2, 2, 61, 448, 3, 2, 2, 2, 63, 459, 3, 2, 2, 2, 65, 466, 3, 2, 2, 2, 67, 477, 3, 2, 2, 2, 69, 481, 3, 2, 2, 2, 71, 491, 3, 2, 2, 2, 73, 496, 3, 2, 2, 2, 75, 503, 3, 2, 2, 2, 77, 507, 3, 2, 2, 2, 79, 515, 3, 2, 2, 2, 81, 523, 3, 2, 2, 2, 83, 533, 3, 2, 2, 2, 85, 540, 3, 2, 2, 2, 87, 547, 3, 2, 2, 2, 89, 553, 3, 2, 2, 2, 91, 560, 3, 2, 2, 2, 93, 569, 3, 2, 2, 2, 95, 575, 3, 2, 2, 2, 97, 582, 3, 2, 2, 2, 99, 595, 3, 2, 2, 2, 101, 600, 3, 2, 2, 2, 103, 606, 3, 2, 2, 2, 105, 613, 3, 2, 2, 2, 107, 623, 3, 2, 2, 2, 109, 627, 3, 2, 2, 2, 111, 631, 3, 2, 2, 2, 113, 636, 3, 2, 2, 2, 115, 645, 3, 2, 2, 2, 117, 664, 3, 2, 2, 2, 119, 669, 3, 2, 2, 2, 121, 684, 3, 2, 2, 2, 123, 704, 3, 2, 2, 2, 125, 742, 3, 2, 2, 2, 127, 744, 3, 2, 2, 2, 129, 774, 3, 2, 2, 2, 131, 776, 3, 2, 2, 2, 133, 786, 3, 2, 2, 2, 135, 801, 3, 2, 2, 2, 137, 806, 3, 2, 2, 2, 139, 808, 3, 2, 2, 2, 141, 810, 3, 2, 2, 2, 143, 812, 3, 2, 2, 2, 145, 814, 3, 2, 2, 2, 147, 816, 3, 2, 2, 2, 149, 818, 3, 2, 2, 2, 151, 820, 3, 2, 2, 2, 153, 822, 3, 2, 2, 2, 155, 824, 3, 2, 2, 2, 157, 826, 3, 2, 2, 2, 159, 828, 3, 2, 2, 2, 161, 830, 3, 2, 2, 2, 163, 832, 3, 2, 2, 2, 165, 834, 3, 2, 2, 2, 167, 836, 3, 2, 2, 2, 169, 838, 3, 2, 2, 2, 171, 841, 3, 2, 2, 2, 173, 844, 3, 2, 2, 2, 175, 847, 3, 2, 2, 2, 177, 850, 3, 2, 2, 2, 179, 853, 3, 2, 2, 2, 181, 856, 3, 2, 2, 2, 183, 859, 3, 2, 2, 2, 185, 862, 3, 2, 2, 2, 187, 864, 3, 2, 2, 2, 189, 866, 3, 2, 2, 2, 191, 868, 3, 2, 2, 2, 193, 870, 3, 2, 2, 2, 195, 872, 3, 2, 2, 2, 197, 874, 3, 2, 2, 2, 199, 876, 3, 2, 2, 2, 201, 878, 3, 2, 2, 2, 203, 881, 3, 2, 2, 2, 205, 884, 3, 2, 2, 2, 207, 887, 3, 2, 2, 2, 209, 890, 3, 2, 2, 2, 211, 893, 3, 2, 2, 2, 213, 896, 3, 2, 2, 2, 215, 899, 3, 2, 2, 2, 217, 902, 3, 2, 2, 2, 219, 906, 3, 2, 2, 2, 221, 910, 3, 2, 2, 2, 223, 915, 3, 2, 2, 2, 225, 918, 3, 2, 2, 2, 227, 921, 3, 2, 2, 2, 229, 923, 3, 2, 2, 2, 231, 927, 3, 2, 2, 2, 233, 934, 3, 2, 2, 2, 235, 961, 3, 2, 2, 2, 237, 963, 3, 2, 2, 2, 239, 974, 3, 2, 2, 2, 241, 976, 3, 2, 2, 2, 243, 988, 3, 2, 2, 2, 245, 994, 3, 2, 2, 2, 247, 248, 7, 101, 2, 2, 248, 249, 7, 113, 2, 2, 249, 250, 7, 110, 2, 2, 250, 251, 7, 113, 2, 2, 251, 252, 7, 116, 2, 2, 252, 4, 3, 2, 2, 2, 253, 257, 7, 37, 2, 2, 254, 255, 5, 239, 120, 2, 255, 256, 5, 239, 120, 2, 256, 258, 3, 2, 2, 2, 257, 254, 3, 2, 2, 2, 257, 258, 3, 2, 2, 2, 258, 259, 3, 2, 2, 2, 259, 260, 5, 239, 120, 2, 260, 261, 5, 239, 120, 2, 261, 262, 5, 239, 120, 2, 262, 263, 5, 239, 120, 2, 263, 264, 5, 239, 120, 2, 264, 265, 5, 239, 120, 2, 265, 6, 3, 2, 2, 2, 266, 268, 9, 2, 2, 2, 267, 266, 3, 2, 2, 2, 268, 269, 3, 2, 2, 2, 269, 267, 3, 2, 2, 2, 269, 270, 3, 2, 2, 2, 270, 271, 3, 2, 2, 2, 271, 272, 8, 4, 2, 2, 272, 8, 3, 2, 2, 2, 273, 274, 7, 49, 2, 2, 274, 275, 7, 44, 2, 2, 275, 279, 3, 2, 2, 2, 276, 278, 11, 2, 2, 2, 277, 276, 3, 2, 2, 2, 278, 281, 3, 2, 2, 2, 279, 280, 3, 2, 2, 2, 279, 277, 3, 2, 2, 2, 280, 282, 3, 2, 2, 2, 281, 279, 3, 2, 2, 2, 282, 283, 7, 44, 2, 2, 283, 284, 7, 49, 2, 2, 284, 285, 3, 2, 2, 2, 285, 286, 8, 5, 3, 2, 286, 10, 3, 2, 2, 2, 287, 288, 7, 49, 2, 2, 288, 289, 7, 49, 2, 2, 289, 293, 3, 2, 2, 2, 290, 292, 10, 3, 2, 2, 291, 290, 3, 2, 2, 2, 292, 295, 3, 2, 2, 2, 293, 291, 3, 2, 2, 2, 293, 294, 3, 2, 2, 2, 294, 296, 3, 2, 2, 2, 295, 293, 3, 2, 2, 2, 296, 297, 8, 6, 3, 2, 297, 12, 3, 2, 2, 2, 298, 303, 7, 41, 2, 2, 299, 302, 10, 4, 2, 2, 300, 302, 5, 235, 118, 2, 301, 299, 3, 2, 2, 2, 301, 300, 3, 2, 2, 2, 302, 305, 3, 2, 2, 2, 303, 301, 3, 2, 2, 2, 303, 304, 3, 2, 2, 2, 304, 306, 3, 2, 2, 2, 305, 303, 3, 2, 2, 2, 306, 307, 7, 41, 2, 2, 307, 14, 3, 2, 2, 2, 308, 309, 7, 99, 2, 2, 309, 310, 7, 100, 2, 2, 310, 311, 7, 117, 2, 2, 311, 312, 7, 118, 2, 2, 312, 313, 7, 116, 2, 2, 313, 314, 7, 99, 2, 2, 314, 315, 7, 101, 2, 2, 315, 316, 7, 118, 2, 2, 316, 16, 3, 2, 2, 2, 317, 318, 7, 99, 2, 2, 318, 319, 7, 117, 2, 2, 319, 320, 7, 117, 2, 2, 320, 321, 7, 103, 2, 2, 321, 322, 7, 116, 2, 2, 322, 323, 7, 118, 2, 2, 323, 18, 3, 2, 2, 2, 324, 325, 7, 100, 2, 2, 325, 326, 7, 113, 2, 2, 326, 327, 7, 113, 2, 2, 327, 328, 7, 110, 2, 2, 328, 329, 7, 103, 2, 2, 329, 330, 7, 99, 2, 2, 330, 331, 7, 112, 2, 2, 331, 20, 3, 2, 2, 2, 332, 333, 7, 100, 2, 2, 333, 334, 7, 116, 2, 2, 334, 335, 7, 103, 2, 2, 335, 336, 7, 99, 2, 2, 336, 337, 7, 109, 2, 2, 337, 22, 3, 2, 2, 2, 338, 339, 7, 100, 2, 2, 339, 340, 7, 123, 2, 2, 340, 341, 7, 118, 2, 2, 341, 342, 7, 103, 2, 2, 342, 24, 3, 2, 2, 2, 343, 344, 7, 101, 2, 2, 344, 345, 7, 99, 2, 2, 345, 346, 7, 117, 2, 2, 346, 347, 7, 103, 2, 2, 347, 26, 3, 2, 2, 2, 348, 349, 7, 101, 2, 2, 349, 350, 7, 99, 2, 2, 350, 351, 7, 118, 2, 2, 351, 352, 7, 101, 2, 2, 352, 353, 7, 106, 2, 2, 353, 28, 3, 2, 2, 2, 354, 355, 7, 101, 2, 2, 355, 356, 7, 106, 2, 2, 356, 357, 7, 99, 2, 2, 357, 358, 7, 116, 2, 2, 358, 30, 3, 2, 2, 2, 359, 360, 7, 101, 2, 2, 360, 361, 7, 110, 2, 2, 361, 362, 7, 99, 2, 2, 362, 363, 7, 117, 2, 2, 363, 364, 7, 117, 2, 2, 364, 32, 3, 2, 2, 2, 365, 366, 7, 101, 2, 2, 366, 367, 7, 113, 2, 2, 367, 368, 7, 112, 2, 2, 368, 369, 7, 117, 2, 2, 369, 370, 7, 118, 2, 2, 370, 34, 3, 2, 2, 2, 371, 372, 7, 101, 2, 2, 372, 373, 7, 113, 2, 2, 373, 374, 7, 112, 2, 2, 374, 375, 7, 118, 2, 2, 375, 376, 7, 107, 2, 2, 376, 377, 7, 112, 2, 2, 377, 378, 7, 119, 2, 2, 378, 379, 7, 103, 2, 2, 379, 36, 3, 2, 2, 2, 380, 381, 7, 102, 2, 2, 381, 382, 7, 103, 2, 2, 382, 383, 7, 104, 2, 2, 383, 384, 7, 99, 2, 2, 384, 385, 7, 119, 2, 2, 385, 386, 7, 110, 2, 2, 386, 387, 7, 118, 2, 2, 387, 38, 3, 2, 2, 2, 388, 389, 7, 102, 2, 2, 389, 390, 7, 113, 2, 2, 390, 40, 3, 2, 2, 2, 391, 392, 7, 102, 2, 2, 392, 393, 7, 113, 2, 2, 393, 394, 7, 119, 2, 2, 394, 395, 7, 100, 2, 2, 395, 396, 7, 110, 2, 2, 396, 397, 7, 103, 2, 2, 397, 42, 3, 2, 2, 2, 398, 399, 7, 103, 2, 2, 399, 400, 7, 110, 2, 2, 400, 401, 7, 117, 2, 2, 401, 402, 7, 103, 2, 2, 402, 44, 3, 2, 2, 2, 403, 404, 7, 103, 2, 2, 404, 405, 7, 112, 2, 2, 405, 406, 7, 119, 2, 2, 406, 407, 7, 111, 2, 2, 407, 46, 3, 2, 2, 2, 408, 409, 7, 103, 2, 2, 409, 410, 7, 122, 2, 2, 410, 411, 7, 118, 2, 2, 411, 412, 7, 103, 2, 2, 412, 413, 7, 112, 2, 2, 413, 414, 7, 102, 2, 2, 414, 415, 7, 117, 2, 2, 415, 48, 3, 2, 2, 2, 416, 417, 7, 104, 2, 2, 417, 418, 7, 107, 2, 2, 418, 419, 7, 112, 2, 2, 419, 420, 7, 99, 2, 2, 420, 421, 7, 110, 2, 2, 421, 50, 3, 2, 2, 2, 422, 423, 7, 104, 2, 2, 423, 424, 7, 107, 2, 2, 424, 425, 7, 112, 2, 2, 425, 426, 7, 99, 2, 2, 426, 427, 7, 110, 2, 2, 427, 428, 7, 110, 2, 2, 428, 429, 7, 123, 2, 2, 429, 52, 3, 2, 2, 2, 430, 431, 7, 104, 2, 2, 431, 432, 7, 110, 2, 2, 432, 433, 7, 113, 2, 2, 433, 434, 7, 99, 2, 2, 434, 435, 7, 118, 2, 2, 435, 54, 3, 2, 2, 2, 436, 437, 7, 104, 2, 2, 437, 438, 7, 113, 2, 2, 438, 439, 7, 116, 2, 2, 439, 56, 3, 2, 2, 2, 440, 441, 7, 107, 2, 2, 441, 442, 7, 104, 2, 2, 442, 58, 3, 2, 2, 2, 443, 444, 7, 105, 2, 2, 444, 445, 7, 113, 2, 2, 445, 446, 7, 118, 2, 2, 446, 447, 7, 113, 2, 2, 447, 60, 3, 2, 2, 2, 448, 449, 7, 107, 2, 2, 449, 450, 7, 111, 2, 2, 450, 451, 7, 114, 2, 2, 451, 452, 7, 110, 2, 2, 452, 453, 7, 103, 2, 2, 453, 454, 7, 111, 2, 2, 454, 455, 7, 103, 2, 2, 455, 456, 7, 112, 2, 2, 456, 457, 7, 118, 2, 2, 457, 458, 7, 117, 2, 2, 458, 62, 3, 2, 2, 2, 459, 460, 7, 107, 2, 2, 460, 461, 7, 111, 2, 2, 461, 462, 7, 114, 2, 2, 462, 463, 7, 113, 2, 2, 463, 464, 7, 116, 2, 2, 464, 465, 7, 118, 2, 2, 465, 64, 3, 2, 2, 2, 466, 467, 7, 107, 2, 2, 467, 468, 7, 112, 2, 2, 468, 469, 7, 117, 2, 2, 469, 470, 7, 118, 2, 2, 470, 471, 7, 99, 2, 2, 471, 472, 7, 112, 2, 2, 472, 473, 7, 101, 2, 2, 473, 474, 7, 103, 2, 2, 474, 475, 7, 113, 2, 2, 475, 476, 7, 104, 2, 2, 476, 66, 3, 2, 2, 2, 477, 478, 7, 107, 2, 2, 478, 479, 7, 112, 2, 2, 479, 480, 7, 118, 2, 2, 480, 68, 3, 2, 2, 2, 481, 482, 7, 107, 2, 2, 482, 483, 7, 112, 2, 2, 483, 484, 7, 118, 2, 2, 484, 485, 7, 103, 2, 2, 485, 486, 7, 116, 2, 2, 486, 487, 7, 104, 2, 2, 487, 488, 7, 99, 2, 2, 488, 489, 7, 101, 2, 2, 489, 490, 7, 103, 2, 2, 490, 70, 3, 2, 2, 2, 491, 492, 7, 110, 2, 2, 492, 493, 7, 113, 2, 2, 493, 494, 7, 112, 2, 2, 494, 495, 7, 105, 2, 2, 495, 72, 3, 2, 2, 2, 496, 497, 7, 112, 2, 2, 497, 498, 7, 99, 2, 2, 498, 499, 7, 118, 2, 2, 499, 500, 7, 107, 2, 2, 500, 501, 7, 120, 2, 2, 501, 502, 7, 103, 2, 2, 502, 74, 3, 2, 2, 2, 503, 504, 7, 112, 2, 2, 504, 505, 7, 103, 2, 2, 505, 506, 7, 121, 2, 2, 506, 76, 3, 2, 2, 2, 507, 508, 7, 114, 2, 2, 508, 509, 7, 99, 2, 2, 509, 510, 7, 101, 2, 2, 510, 511, 7, 109, 2, 2, 511, 512, 7, 99, 2, 2, 512, 513, 7, 105, 2, 2, 513, 514, 7, 103, 2, 2, 514, 78, 3, 2, 2, 2, 515, 516, 7, 114, 2, 2, 516, 517, 7, 116, 2, 2, 517, 518, 7, 107, 2, 2, 518, 519, 7, 120, 2, 2, 519, 520, 7, 99, 2, 2, 520, 521, 7, 118, 2, 2, 521, 522, 7, 103, 2, 2, 522, 80, 3, 2, 2, 2, 523, 524, 7, 114, 2, 2, 524, 525, 7, 116, 2, 2, 525, 526, 7, 113, 2, 2, 526, 527, 7, 118, 2, 2, 527, 528, 7, 103, 2, 2, 528, 529, 7, 101, 2, 2, 529, 530, 7, 118, 2, 2, 530, 531, 7, 103, 2, 2, 531, 532, 7, 102, 2, 2, 532, 82, 3, 2, 2, 2, 533, 534, 7, 114, 2, 2, 534, 535, 7, 119, 2, 2, 535, 536, 7, 100, 2, 2, 536, 537, 7, 110, 2, 2, 537, 538, 7, 107, 2, 2, 538, 539, 7, 101, 2, 2, 539, 84, 3, 2, 2, 2, 540, 541, 7, 116, 2, 2, 541, 542, 7, 103, 2, 2, 542, 543, 7, 118, 2, 2, 543, 544, 7, 119, 2, 2, 544, 545, 7, 116, 2, 2, 545, 546, 7, 112, 2, 2, 546, 86, 3, 2, 2, 2, 547, 548, 7, 117, 2, 2, 548, 549, 7, 106, 2, 2, 549, 550, 7, 113, 2, 2, 550, 551, 7, 116, 2, 2, 551, 552, 7, 118, 2, 2, 552, 88, 3, 2, 2, 2, 553, 554, 7, 117, 2, 2, 554, 555, 7, 118, 2, 2, 555, 556, 7, 99, 2, 2, 556, 557, 7, 118, 2, 2, 557, 558, 7, 107, 2, 2, 558, 559, 7, 101, 2, 2, 559, 90, 3, 2, 2, 2, 560, 561, 7, 117, 2, 2, 561, 562, 7, 118, 2, 2, 562, 563, 7, 116, 2, 2, 563, 564, 7, 107, 2, 2, 564, 565, 7, 101, 2, 2, 565, 566, 7, 118, 2, 2, 566, 567, 7, 104, 2, 2, 567, 568, 7, 114, 2, 2, 568, 92, 3, 2, 2, 2, 569, 570, 7, 117, 2, 2, 570, 571, 7, 119, 2, 2, 571, 572, 7, 114, 2, 2, 572, 573, 7, 103, 2, 2, 573, 574, 7, 116, 2, 2, 574, 94, 3, 2, 2, 2, 575, 576, 7, 117, 2, 2, 576, 577, 7, 121, 2, 2, 577, 578, 7, 107, 2, 2, 578, 579, 7, 118, 2, 2, 579, 580, 7, 101, 2, 2, 580, 581, 7, 106, 2, 2, 581, 96, 3, 2, 2, 2, 582, 583, 7, 117, 2, 2, 583, 584, 7, 123, 2, 2, 584, 585, 7, 112, 2, 2, 585, 586, 7, 101, 2, 2, 586, 587, 7, 106, 2, 2, 587, 588, 7, 116, 2, 2, 588, 589, 7, 113, 2, 2, 589, 590, 7, 112, 2, 2, 590, 591, 7, 107, 2, 2, 591, 592, 7, 124, 2, 2, 592, 593, 7, 103, 2, 2, 593, 594, 7, 102, 2, 2, 594, 98, 3, 2, 2, 2, 595, 596, 7, 118, 2, 2, 596, 597, 7, 106, 2, 2, 597, 598, 7, 107, 2, 2, 598, 599, 7, 117, 2, 2, 599, 100, 3, 2, 2, 2, 600, 601, 7, 118, 2, 2, 601, 602, 7, 106, 2, 2, 602, 603, 7, 116, 2, 2, 603, 604, 7, 113, 2, 2, 604, 605, 7, 121, 2, 2, 605, 102, 3, 2, 2, 2, 606, 607, 7, 118, 2, 2, 607, 608, 7, 106, 2, 2, 608, 609, 7, 116, 2, 2, 609, 610, 7, 113, 2, 2, 610, 611, 7, 121, 2, 2, 611, 612, 7, 117, 2, 2, 612, 104, 3, 2, 2, 2, 613, 614, 7, 118, 2, 2, 614, 615, 7, 116, 2, 2, 615, 616, 7, 99, 2, 2, 616, 617, 7, 112, 2, 2, 617, 618, 7, 117, 2, 2, 618, 619, 7, 107, 2, 2, 619, 620, 7, 103, 2, 2, 620, 621, 7, 112, 2, 2, 621, 622, 7, 118, 2, 2, 622, 106, 3, 2, 2, 2, 623, 624, 7, 118, 2, 2, 624, 625, 7, 116, 2, 2, 625, 626, 7, 123, 2, 2, 626, 108, 3, 2, 2, 2, 627, 628, 7, 120, 2, 2, 628, 629, 7, 99, 2, 2, 629, 630, 7, 116, 2, 2, 630, 110, 3, 2, 2, 2, 631, 632, 7, 120, 2, 2, 632, 633, 7, 113, 2, 2, 633, 634, 7, 107, 2, 2, 634, 635, 7, 102, 2, 2, 635, 112, 3, 2, 2, 2, 636, 637, 7, 120, 2, 2, 637, 638, 7, 113, 2, 2, 638, 639, 7, 110, 2, 2, 639, 640, 7, 99, 2, 2, 640, 641, 7, 118, 2, 2, 641, 642, 7, 107, 2, 2, 642, 643, 7, 110, 2, 2, 643, 644, 7, 103, 2, 2, 644, 114, 3, 2, 2, 2, 645, 646, 7, 121, 2, 2, 646, 647, 7, 106, 2, 2, 647, 648, 7, 107, 2, 2, 648, 649, 7, 110, 2, 2, 649, 650, 7, 103, 2, 2, 650, 116, 3, 2, 2, 2, 651, 665, 7, 50, 2, 2, 652, 662, 9, 5, 2, 2, 653, 655, 5, 241, 121, 2, 654, 653, 3, 2, 2, 2, 654, 655, 3, 2, 2, 2, 655, 663, 3, 2, 2, 2, 656, 658, 7, 97, 2, 2, 657, 656, 3, 2, 2, 2, 658, 659, 3, 2, 2, 2, 659, 657, 3, 2, 2, 2, 659, 660, 3, 2, 2, 2, 660, 661, 3, 2, 2, 2, 661, 663, 5, 241, 121, 2, 662, 654, 3, 2, 2, 2, 662, 657, 3, 2, 2, 2, 663, 665, 3, 2, 2, 2, 664, 651, 3, 2, 2, 2, 664, 652, 3, 2, 2, 2, 665, 667, 3, 2, 2, 2, 666, 668, 9, 6, 2, 2, 667, 666, 3, 2, 2, 2, 667, 668, 3, 2, 2, 2, 668, 118, 3, 2, 2, 2, 669, 670, 7, 50, 2, 2, 670, 671, 9, 7, 2, 2, 671, 679, 9, 8, 2, 2, 672, 674, 9, 9, 2, 2, 673, 672, 3, 2, 2, 2, 674, 677, 3, 2, 2, 2, 675, 673, 3, 2, 2, 2, 675, 676, 3, 2, 2, 2, 676, 678, 3, 2, 2, 2, 677, 675, 3, 2, 2, 2, 678, 680, 9, 8, 2, 2, 679, 675, 3, 2, 2, 2, 679, 680, 3, 2, 2, 2, 680, 682, 3, 2, 2, 2, 681, 683, 9, 6, 2, 2, 682, 681, 3, 2, 2, 2, 682, 683, 3, 2, 2, 2, 683, 120, 3, 2, 2, 2, 684, 688, 7, 50, 2, 2, 685, 687, 7, 97, 2, 2, 686, 685, 3, 2, 2, 2, 687, 690, 3, 2, 2, 2, 688, 686, 3, 2, 2, 2, 688, 689, 3, 2, 2, 2, 689, 691, 3, 2, 2, 2, 690, 688, 3, 2, 2, 2, 691, 699, 9, 10, 2, 2, 692, 694, 9, 11, 2, 2, 693, 692, 3, 2, 2, 2, 694, 697, 3, 2, 2, 2, 695, 693, 3, 2, 2, 2, 695, 696, 3, 2, 2, 2, 696, 698, 3, 2, 2, 2, 697, 695, 3, 2, 2, 2, 698, 700, 9, 10, 2, 2, 699, 695, 3, 2, 2, 2, 699, 700, 3, 2, 2, 2, 700, 702, 3, 2, 2, 2, 701, 703, 9, 6, 2, 2, 702, 701, 3, 2, 2, 2, 702, 703, 3, 2, 2, 2, 703, 122, 3, 2, 2, 2, 704, 705, 7, 50, 2, 2, 705, 706, 9, 12, 2, 2, 706, 714, 9, 13, 2, 2, 707, 709, 9, 14, 2, 2, 708, 707, 3, 2, 2, 2, 709, 712, 3, 2, 2, 2, 710, 708, 3, 2, 2, 2, 710, 711, 3, 2, 2, 2, 711, 713, 3, 2, 2, 2, 712, 710, 3, 2, 2, 2, 713, 715, 9, 13, 2, 2, 714, 710, 3, 2, 2, 2, 714, 715, 3, 2, 2, 2, 715, 717, 3, 2, 2, 2, 716, 718, 9, 6, 2, 2, 717, 716, 3, 2, 2, 2, 717, 718, 3, 2, 2, 2, 718, 124, 3, 2, 2, 2, 719, 720, 5, 241, 121, 2, 720, 722, 7, 48, 2, 2, 721, 723, 5, 241, 121, 2, 722, 721, 3, 2, 2, 2, 722, 723, 3, 2, 2, 2, 723, 727, 3, 2, 2, 2, 724, 725, 7, 48, 2, 2, 725, 727, 5, 241, 121, 2, 726, 719, 3, 2, 2, 2, 726, 724, 3, 2, 2, 2, 727, 729, 3, 2, 2, 2, 728, 730, 5, 233, 117, 2, 729, 728, 3, 2, 2, 2, 729, 730, 3, 2, 2, 2, 730, 732, 3, 2, 2, 2, 731, 733, 9, 15, 2, 2, 732, 731, 3, 2, 2, 2, 732, 733, 3, 2, 2, 2, 733, 743, 3, 2, 2, 2, 734, 740, 5, 241, 121, 2, 735, 737, 5, 233, 117, 2, 736, 738, 9, 15, 2, 2, 737, 736, 3, 2, 2, 2, 737, 738, 3, 2, 2, 2, 738, 741, 3, 2, 2, 2, 739, 741, 9, 15, 2, 2, 740, 735, 3, 2, 2, 2, 740, 739, 3, 2, 2, 2, 741, 743, 3, 2, 2, 2, 742, 726, 3, 2, 2, 2, 742, 734, 3, 2, 2, 2, 743, 126, 3, 2, 2, 2, 744, 745, 7, 50, 2, 2, 745, 755, 9, 7, 2, 2, 746, 748, 5, 237, 119, 2, 747, 749, 7, 48, 2, 2, 748, 747, 3, 2, 2, 2, 748, 749, 3, 2, 2, 2, 749, 756, 3, 2, 2, 2, 750, 752, 5, 237, 119, 2, 751, 750, 3, 2, 2, 2, 751, 752, 3, 2, 2, 2, 752, 753, 3, 2, 2, 2, 753, 754, 7, 48, 2, 2, 754, 756, 5, 237, 119, 2, 755, 746, 3, 2, 2, 2, 755, 751, 3, 2, 2, 2, 756, 757, 3, 2, 2, 2, 757, 759, 9, 16, 2, 2, 758, 760, 9, 17, 2, 2, 759, 758, 3, 2, 2, 2, 759, 760, 3, 2, 2, 2, 760, 761, 3, 2, 2, 2, 761, 763, 5, 241, 121, 2, 762, 764, 9, 15, 2, 2, 763, 762, 3, 2, 2, 2, 763, 764, 3, 2, 2, 2, 764, 128, 3, 2, 2, 2, 765, 766, 7, 118, 2, 2, 766, 767, 7, 116, 2, 2, 767, 768, 7, 119, 2, 2, 768, 775, 7, 103, 2, 2, 769, 770, 7, 104, 2, 2, 770, 771, 7, 99, 2, 2, 771, 772, 7, 110, 2, 2, 772, 773, 7, 117, 2, 2, 773, 775, 7, 103, 2, 2, 774, 765, 3, 2, 2, 2, 774, 769, 3, 2, 2, 2, 775, 130, 3, 2, 2, 2, 776, 781, 7, 36, 2, 2, 777, 780, 10, 18, 2, 2, 778, 780, 5, 235, 118, 2, 779, 777, 3, 2, 2, 2, 779, 778, 3, 2, 2, 2, 780, 783, 3, 2, 2, 2, 781, 779, 3, 2, 2, 2, 781, 782, 3, 2, 2, 2, 782, 784, 3, 2, 2, 2, 783, 781, 3, 2, 2, 2, 784, 785, 7, 36, 2, 2, 785, 132, 3, 2, 2, 2, 786, 787, 7, 36, 2, 2, 787, 788, 7, 36, 2, 2, 788, 789, 7, 36, 2, 2, 789, 794, 3, 2, 2, 2, 790, 793, 10, 19, 2, 2, 791, 793, 5, 235, 118, 2, 792, 790, 3, 2, 2, 2, 792, 791, 3, 2, 2, 2, 793, 796, 3, 2, 2, 2, 794, 795, 3, 2, 2, 2, 794, 792, 3, 2, 2, 2, 795, 797, 3, 2, 2, 2, 796, 794, 3, 2, 2, 2, 797, 798, 7, 36, 2, 2, 798, 799, 7, 36, 2, 2, 799, 800, 7, 36, 2, 2, 800, 134, 3, 2, 2, 2, 801, 802, 7, 112, 2, 2, 802, 803, 7, 119, 2, 2, 803, 804, 7, 110, 2, 2, 804, 805, 7, 110, 2, 2, 805, 136, 3, 2, 2, 2, 806, 807, 7, 42, 2, 2, 807, 138, 3, 2, 2, 2, 808, 809, 7, 43, 2, 2, 809, 140, 3, 2, 2, 2, 810, 811, 7, 125, 2, 2, 811, 142, 3, 2, 2, 2, 812, 813, 7, 127, 2, 2, 813, 144, 3, 2, 2, 2, 814, 815, 7, 93, 2, 2, 815, 146, 3, 2, 2, 2, 816, 817, 7, 95, 2, 2, 817, 148, 3, 2, 2, 2, 818, 819, 7, 61, 2, 2, 819, 150, 3, 2, 2, 2, 820, 821, 7, 46, 2, 2, 821, 152, 3, 2, 2, 2, 822, 823, 7, 48, 2, 2, 823, 154, 3, 2, 2, 2, 824, 825, 7, 63, 2, 2, 825, 156, 3, 2, 2, 2, 826, 827, 7, 64, 2, 2, 827, 158, 3, 2, 2, 2, 828, 829, 7, 62, 2, 2, 829, 160, 3, 2, 2, 2, 830, 831, 7, 35, 2, 2, 831, 162, 3, 2, 2, 2, 832, 833, 7, 128, 2, 2, 833, 164, 3, 2, 2, 2, 834, 835, 7, 65, 2, 2, 835, 166, 3, 2, 2, 2, 836, 837, 7, 60, 2, 2, 837, 168, 3, 2, 2, 2, 838, 839, 7, 63, 2, 2, 839, 840, 7, 63, 2, 2, 840, 170, 3, 2, 2, 2, 841, 842, 7, 62, 2, 2, 842, 843, 7, 63, 2, 2, 843, 172, 3, 2, 2, 2, 844, 845, 7, 64, 2, 2, 845, 846, 7, 63, 2, 2, 846, 174, 3, 2, 2, 2, 847, 848, 7, 35, 2, 2, 848, 849, 7, 63, 2, 2, 849, 176, 3, 2, 2, 2, 850, 851, 7, 40, 2, 2, 851, 852, 7, 40, 2, 2, 852, 178, 3, 2, 2, 2, 853, 854, 7, 126, 2, 2, 854, 855, 7, 126, 2, 2, 855, 180, 3, 2, 2, 2, 856, 857, 7, 45, 2, 2, 857, 858, 7, 45, 2, 2, 858, 182, 3, 2, 2, 2, 859, 860, 7, 47, 2, 2, 860, 861, 7, 47, 2, 2, 861, 184, 3, 2, 2, 2, 862, 863, 7, 45, 2, 2, 863, 186, 3, 2, 2, 2, 864, 865, 7, 47, 2, 2, 865, 188, 3, 2, 2, 2, 866, 867, 7, 44, 2, 2, 867, 190, 3, 2, 2, 2, 868, 869, 7, 49, 2, 2, 869, 192, 3, 2, 2, 2, 870, 871, 7, 40, 2, 2, 871, 194, 3, 2, 2, 2, 872, 873, 7, 126, 2, 2, 873, 196, 3, 2, 2, 2, 874, 875, 7, 96, 2, 2, 875, 198, 3, 2, 2, 2, 876, 877, 7, 39, 2, 2, 877, 200, 3, 2, 2, 2, 878, 879, 7, 45, 2, 2, 879, 880, 7, 63, 2, 2, 880, 202, 3, 2, 2, 2, 881, 882, 7, 47, 2, 2, 882, 883, 7, 63, 2, 2, 883, 204, 3, 2, 2, 2, 884, 885, 7, 44, 2, 2, 885, 886, 7, 63, 2, 2, 886, 206, 3, 2, 2, 2, 887, 888, 7, 49, 2, 2, 888, 889, 7, 63, 2, 2, 889, 208, 3, 2, 2, 2, 890, 891, 7, 40, 2, 2, 891, 892, 7, 63, 2, 2, 892, 210, 3, 2, 2, 2, 893, 894, 7, 126, 2, 2, 894, 895, 7, 63, 2, 2, 895, 212, 3, 2, 2, 2, 896, 897, 7, 96, 2, 2, 897, 898, 7, 63, 2, 2, 898, 214, 3, 2, 2, 2, 899, 900, 7, 39, 2, 2, 900, 901, 7, 63, 2, 2, 901, 216, 3, 2, 2, 2, 902, 903, 7, 62, 2, 2, 903, 904, 7, 62, 2, 2, 904, 905, 7, 63, 2, 2, 905, 218, 3, 2, 2, 2, 906, 907, 7, 64, 2, 2, 907, 908, 7, 64, 2, 2, 908, 909, 7, 63, 2, 2, 909, 220, 3, 2, 2, 2, 910, 911, 7, 64, 2, 2, 911, 912, 7, 64, 2, 2, 912, 913, 7, 64, 2, 2, 913, 914, 7, 63, 2, 2, 914, 222, 3, 2, 2, 2, 915, 916, 7, 47, 2, 2, 916, 917, 7, 64, 2, 2, 917, 224, 3, 2, 2, 2, 918, 919, 7, 60, 2, 2, 919, 920, 7, 60, 2, 2, 920, 226, 3, 2, 2, 2, 921, 922, 7, 66, 2, 2, 922, 228, 3, 2, 2, 2, 923, 924, 7, 48, 2, 2, 924, 925, 7, 48, 2, 2, 925, 926, 7, 48, 2, 2, 926, 230, 3, 2, 2, 2, 927, 931, 5, 245, 123, 2, 928, 930, 5, 243, 122, 2, 929, 928, 3, 2, 2, 2, 930, 933, 3, 2, 2, 2, 931, 929, 3, 2, 2, 2, 931, 932, 3, 2, 2, 2, 932, 232, 3, 2, 2, 2, 933, 931, 3, 2, 2, 2, 934, 936, 9, 20, 2, 2, 935, 937, 9, 17, 2, 2, 936, 935, 3, 2, 2, 2, 936, 937, 3, 2, 2, 2, 937, 938, 3, 2, 2, 2, 938, 939, 5, 241, 121, 2, 939, 234, 3, 2, 2, 2, 940, 941, 7, 94, 2, 2, 941, 962, 9, 21, 2, 2, 942, 947, 7, 94, 2, 2, 943, 945, 9, 22, 2, 2, 944, 943, 3, 2, 2, 2, 944, 945, 3, 2, 2, 2, 945, 946, 3, 2, 2, 2, 946, 948, 9, 10, 2, 2, 947, 944, 3, 2, 2, 2, 947, 948, 3, 2, 2, 2, 948, 949, 3, 2, 2, 2, 949, 962, 9, 10, 2, 2, 950, 952, 7, 94, 2, 2, 951, 953, 7, 119, 2, 2, 952, 951, 3, 2, 2, 2, 953, 954, 3, 2, 2, 2, 954, 952, 3, 2, 2, 2, 954, 955, 3, 2, 2, 2, 955, 956, 3, 2, 2, 2, 956, 957, 5, 239, 120, 2, 957, 958, 5, 239, 120, 2, 958, 959, 5, 239, 120, 2, 959, 960, 5, 239, 120, 2, 960, 962, 3, 2, 2, 2, 961, 940, 3, 2, 2, 2, 961, 942, 3, 2, 2, 2, 961, 950, 3, 2, 2, 2, 962, 236, 3, 2, 2, 2, 963, 972, 5, 239, 120, 2, 964, 967, 5, 239, 120, 2, 965, 967, 7, 97, 2, 2, 966, 964, 3, 2, 2, 2, 966, 965, 3, 2, 2, 2, 967, 970, 3, 2, 2, 2, 968, 966, 3, 2, 2, 2, 968, 969, 3, 2, 2, 2, 969, 971, 3, 2, 2, 2, 970, 968, 3, 2, 2, 2, 971, 973, 5, 239, 120, 2, 972, 968, 3, 2, 2, 2, 972, 973, 3, 2, 2, 2, 973, 238, 3, 2, 2, 2, 974, 975, 9, 8, 2, 2, 975, 240, 3, 2, 2, 2, 976, 984, 9, 23, 2, 2, 977, 979, 9, 24, 2, 2, 978, 977, 3, 2, 2, 2, 979, 982, 3, 2, 2, 2, 980, 978, 3, 2, 2, 2, 980, 981, 3, 2, 2, 2, 981, 983, 3, 2, 2, 2, 982, 980, 3, 2, 2, 2, 983, 985, 9, 23, 2, 2, 984, 980, 3, 2, 2, 2, 984, 985, 3, 2, 2, 2, 985, 242, 3, 2, 2, 2, 986, 989, 5, 245, 123, 2, 987, 989, 9, 23, 2, 2, 988, 986, 3, 2, 2, 2, 988, 987, 3, 2, 2, 2, 989, 244, 3, 2, 2, 2, 990, 995, 9, 25, 2, 2, 991, 995, 10, 26, 2, 2, 992, 993, 9, 27, 2, 2, 993, 995, 9, 28, 2, 2, 994, 990, 3, 2, 2, 2, 994, 991, 3, 2, 2, 2, 994, 992, 3, 2, 2, 2, 995, 246, 3, 2, 2, 2, 54, 2, 257, 269, 279, 293, 301, 303, 654, 659, 662, 664, 667, 675, 679, 682, 688, 695, 699, 702, 710, 714, 717, 722, 726, 729, 732, 737, 740, 742, 748, 751, 755, 759, 763, 774, 779, 781, 792, 794, 931, 936, 944, 947, 954, 961, 966, 968, 972, 980, 984, 988, 994, 4, 2, 3, 2, 2, 4, 2]
\ No newline at end of file
diff --git a/java/generated/processing/mode/java/preproc/ProcessingLexer.java b/java/generated/processing/mode/java/preproc/ProcessingLexer.java
new file mode 100644
index 000000000..89e86ef64
--- /dev/null
+++ b/java/generated/processing/mode/java/preproc/ProcessingLexer.java
@@ -0,0 +1,531 @@
+// Generated from /Users/steftervelde/Source/Processing-Foundation/processing4/java/src/processing/mode/java/preproc/Processing.g4 by ANTLR 4.7.2
+package processing.mode.java.preproc;
+import org.antlr.v4.runtime.Lexer;
+import org.antlr.v4.runtime.CharStream;
+import org.antlr.v4.runtime.Token;
+import org.antlr.v4.runtime.TokenStream;
+import org.antlr.v4.runtime.*;
+import org.antlr.v4.runtime.atn.*;
+import org.antlr.v4.runtime.dfa.DFA;
+import org.antlr.v4.runtime.misc.*;
+
+@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"})
+public class ProcessingLexer extends Lexer {
+ static { RuntimeMetaData.checkVersion("4.7.2", RuntimeMetaData.VERSION); }
+
+ protected static final DFA[] _decisionToDFA;
+ protected static final PredictionContextCache _sharedContextCache =
+ new PredictionContextCache();
+ public static final int
+ T__0=1, HexColorLiteral=2, WS=3, COMMENT=4, LINE_COMMENT=5, CHAR_LITERAL=6,
+ ABSTRACT=7, ASSERT=8, BOOLEAN=9, BREAK=10, BYTE=11, CASE=12, CATCH=13,
+ CHAR=14, CLASS=15, CONST=16, CONTINUE=17, DEFAULT=18, DO=19, DOUBLE=20,
+ ELSE=21, ENUM=22, EXTENDS=23, FINAL=24, FINALLY=25, FLOAT=26, FOR=27,
+ IF=28, GOTO=29, IMPLEMENTS=30, IMPORT=31, INSTANCEOF=32, INT=33, INTERFACE=34,
+ LONG=35, NATIVE=36, NEW=37, PACKAGE=38, PRIVATE=39, PROTECTED=40, PUBLIC=41,
+ RETURN=42, SHORT=43, STATIC=44, STRICTFP=45, SUPER=46, SWITCH=47, SYNCHRONIZED=48,
+ THIS=49, THROW=50, THROWS=51, TRANSIENT=52, TRY=53, VAR=54, VOID=55, VOLATILE=56,
+ WHILE=57, DECIMAL_LITERAL=58, HEX_LITERAL=59, OCT_LITERAL=60, BINARY_LITERAL=61,
+ FLOAT_LITERAL=62, HEX_FLOAT_LITERAL=63, BOOL_LITERAL=64, STRING_LITERAL=65,
+ MULTI_STRING_LIT=66, NULL_LITERAL=67, LPAREN=68, RPAREN=69, LBRACE=70,
+ RBRACE=71, LBRACK=72, RBRACK=73, SEMI=74, COMMA=75, DOT=76, ASSIGN=77,
+ GT=78, LT=79, BANG=80, TILDE=81, QUESTION=82, COLON=83, EQUAL=84, LE=85,
+ GE=86, NOTEQUAL=87, AND=88, OR=89, INC=90, DEC=91, ADD=92, SUB=93, MUL=94,
+ DIV=95, BITAND=96, BITOR=97, CARET=98, MOD=99, ADD_ASSIGN=100, SUB_ASSIGN=101,
+ MUL_ASSIGN=102, DIV_ASSIGN=103, AND_ASSIGN=104, OR_ASSIGN=105, XOR_ASSIGN=106,
+ MOD_ASSIGN=107, LSHIFT_ASSIGN=108, RSHIFT_ASSIGN=109, URSHIFT_ASSIGN=110,
+ ARROW=111, COLONCOLON=112, AT=113, ELLIPSIS=114, IDENTIFIER=115;
+ public static String[] channelNames = {
+ "DEFAULT_TOKEN_CHANNEL", "HIDDEN"
+ };
+
+ public static String[] modeNames = {
+ "DEFAULT_MODE"
+ };
+
+ private static String[] makeRuleNames() {
+ return new String[] {
+ "T__0", "HexColorLiteral", "WS", "COMMENT", "LINE_COMMENT", "CHAR_LITERAL",
+ "ABSTRACT", "ASSERT", "BOOLEAN", "BREAK", "BYTE", "CASE", "CATCH", "CHAR",
+ "CLASS", "CONST", "CONTINUE", "DEFAULT", "DO", "DOUBLE", "ELSE", "ENUM",
+ "EXTENDS", "FINAL", "FINALLY", "FLOAT", "FOR", "IF", "GOTO", "IMPLEMENTS",
+ "IMPORT", "INSTANCEOF", "INT", "INTERFACE", "LONG", "NATIVE", "NEW",
+ "PACKAGE", "PRIVATE", "PROTECTED", "PUBLIC", "RETURN", "SHORT", "STATIC",
+ "STRICTFP", "SUPER", "SWITCH", "SYNCHRONIZED", "THIS", "THROW", "THROWS",
+ "TRANSIENT", "TRY", "VAR", "VOID", "VOLATILE", "WHILE", "DECIMAL_LITERAL",
+ "HEX_LITERAL", "OCT_LITERAL", "BINARY_LITERAL", "FLOAT_LITERAL", "HEX_FLOAT_LITERAL",
+ "BOOL_LITERAL", "STRING_LITERAL", "MULTI_STRING_LIT", "NULL_LITERAL",
+ "LPAREN", "RPAREN", "LBRACE", "RBRACE", "LBRACK", "RBRACK", "SEMI", "COMMA",
+ "DOT", "ASSIGN", "GT", "LT", "BANG", "TILDE", "QUESTION", "COLON", "EQUAL",
+ "LE", "GE", "NOTEQUAL", "AND", "OR", "INC", "DEC", "ADD", "SUB", "MUL",
+ "DIV", "BITAND", "BITOR", "CARET", "MOD", "ADD_ASSIGN", "SUB_ASSIGN",
+ "MUL_ASSIGN", "DIV_ASSIGN", "AND_ASSIGN", "OR_ASSIGN", "XOR_ASSIGN",
+ "MOD_ASSIGN", "LSHIFT_ASSIGN", "RSHIFT_ASSIGN", "URSHIFT_ASSIGN", "ARROW",
+ "COLONCOLON", "AT", "ELLIPSIS", "IDENTIFIER", "ExponentPart", "EscapeSequence",
+ "HexDigits", "HexDigit", "Digits", "LetterOrDigit", "Letter"
+ };
+ }
+ public static final String[] ruleNames = makeRuleNames();
+
+ private static String[] makeLiteralNames() {
+ return new String[] {
+ null, "'color'", null, null, null, null, null, "'abstract'", "'assert'",
+ "'boolean'", "'break'", "'byte'", "'case'", "'catch'", "'char'", "'class'",
+ "'const'", "'continue'", "'default'", "'do'", "'double'", "'else'", "'enum'",
+ "'extends'", "'final'", "'finally'", "'float'", "'for'", "'if'", "'goto'",
+ "'implements'", "'import'", "'instanceof'", "'int'", "'interface'", "'long'",
+ "'native'", "'new'", "'package'", "'private'", "'protected'", "'public'",
+ "'return'", "'short'", "'static'", "'strictfp'", "'super'", "'switch'",
+ "'synchronized'", "'this'", "'throw'", "'throws'", "'transient'", "'try'",
+ "'var'", "'void'", "'volatile'", "'while'", null, null, null, null, null,
+ null, null, null, null, "'null'", "'('", "')'", "'{'", "'}'", "'['",
+ "']'", "';'", "','", "'.'", "'='", "'>'", "'<'", "'!'", "'~'", "'?'",
+ "':'", "'=='", "'<='", "'>='", "'!='", "'&&'", "'||'", "'++'", "'--'",
+ "'+'", "'-'", "'*'", "'/'", "'&'", "'|'", "'^'", "'%'", "'+='", "'-='",
+ "'*='", "'/='", "'&='", "'|='", "'^='", "'%='", "'<<='", "'>>='", "'>>>='",
+ "'->'", "'::'", "'@'", "'...'"
+ };
+ }
+ private static final String[] _LITERAL_NAMES = makeLiteralNames();
+ private static String[] makeSymbolicNames() {
+ return new String[] {
+ null, null, "HexColorLiteral", "WS", "COMMENT", "LINE_COMMENT", "CHAR_LITERAL",
+ "ABSTRACT", "ASSERT", "BOOLEAN", "BREAK", "BYTE", "CASE", "CATCH", "CHAR",
+ "CLASS", "CONST", "CONTINUE", "DEFAULT", "DO", "DOUBLE", "ELSE", "ENUM",
+ "EXTENDS", "FINAL", "FINALLY", "FLOAT", "FOR", "IF", "GOTO", "IMPLEMENTS",
+ "IMPORT", "INSTANCEOF", "INT", "INTERFACE", "LONG", "NATIVE", "NEW",
+ "PACKAGE", "PRIVATE", "PROTECTED", "PUBLIC", "RETURN", "SHORT", "STATIC",
+ "STRICTFP", "SUPER", "SWITCH", "SYNCHRONIZED", "THIS", "THROW", "THROWS",
+ "TRANSIENT", "TRY", "VAR", "VOID", "VOLATILE", "WHILE", "DECIMAL_LITERAL",
+ "HEX_LITERAL", "OCT_LITERAL", "BINARY_LITERAL", "FLOAT_LITERAL", "HEX_FLOAT_LITERAL",
+ "BOOL_LITERAL", "STRING_LITERAL", "MULTI_STRING_LIT", "NULL_LITERAL",
+ "LPAREN", "RPAREN", "LBRACE", "RBRACE", "LBRACK", "RBRACK", "SEMI", "COMMA",
+ "DOT", "ASSIGN", "GT", "LT", "BANG", "TILDE", "QUESTION", "COLON", "EQUAL",
+ "LE", "GE", "NOTEQUAL", "AND", "OR", "INC", "DEC", "ADD", "SUB", "MUL",
+ "DIV", "BITAND", "BITOR", "CARET", "MOD", "ADD_ASSIGN", "SUB_ASSIGN",
+ "MUL_ASSIGN", "DIV_ASSIGN", "AND_ASSIGN", "OR_ASSIGN", "XOR_ASSIGN",
+ "MOD_ASSIGN", "LSHIFT_ASSIGN", "RSHIFT_ASSIGN", "URSHIFT_ASSIGN", "ARROW",
+ "COLONCOLON", "AT", "ELLIPSIS", "IDENTIFIER"
+ };
+ }
+ private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames();
+ public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES);
+
+ /**
+ * @deprecated Use {@link #VOCABULARY} instead.
+ */
+ @Deprecated
+ public static final String[] tokenNames;
+ static {
+ tokenNames = new String[_SYMBOLIC_NAMES.length];
+ for (int i = 0; i < tokenNames.length; i++) {
+ tokenNames[i] = VOCABULARY.getLiteralName(i);
+ if (tokenNames[i] == null) {
+ tokenNames[i] = VOCABULARY.getSymbolicName(i);
+ }
+
+ if (tokenNames[i] == null) {
+ tokenNames[i] = "";
+ }
+ }
+ }
+
+ @Override
+ @Deprecated
+ public String[] getTokenNames() {
+ return tokenNames;
+ }
+
+ @Override
+
+ public Vocabulary getVocabulary() {
+ return VOCABULARY;
+ }
+
+
+ public static final int WHITESPACE = 1;
+ public static final int COMMENTS = 2;
+
+
+ public ProcessingLexer(CharStream input) {
+ super(input);
+ _interp = new LexerATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache);
+ }
+
+ @Override
+ public String getGrammarFileName() { return "Processing.g4"; }
+
+ @Override
+ public String[] getRuleNames() { return ruleNames; }
+
+ @Override
+ public String getSerializedATN() { return _serializedATN; }
+
+ @Override
+ public String[] getChannelNames() { return channelNames; }
+
+ @Override
+ public String[] getModeNames() { return modeNames; }
+
+ @Override
+ public ATN getATN() { return _ATN; }
+
+ public static final String _serializedATN =
+ "\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2u\u03e4\b\1\4\2\t"+
+ "\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13"+
+ "\t\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22"+
+ "\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31\t\31"+
+ "\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36\t\36\4\37\t\37\4 \t \4!"+
+ "\t!\4\"\t\"\4#\t#\4$\t$\4%\t%\4&\t&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t+\4"+
+ ",\t,\4-\t-\4.\t.\4/\t/\4\60\t\60\4\61\t\61\4\62\t\62\4\63\t\63\4\64\t"+
+ "\64\4\65\t\65\4\66\t\66\4\67\t\67\48\t8\49\t9\4:\t:\4;\t;\4<\t<\4=\t="+
+ "\4>\t>\4?\t?\4@\t@\4A\tA\4B\tB\4C\tC\4D\tD\4E\tE\4F\tF\4G\tG\4H\tH\4I"+
+ "\tI\4J\tJ\4K\tK\4L\tL\4M\tM\4N\tN\4O\tO\4P\tP\4Q\tQ\4R\tR\4S\tS\4T\tT"+
+ "\4U\tU\4V\tV\4W\tW\4X\tX\4Y\tY\4Z\tZ\4[\t[\4\\\t\\\4]\t]\4^\t^\4_\t_\4"+
+ "`\t`\4a\ta\4b\tb\4c\tc\4d\td\4e\te\4f\tf\4g\tg\4h\th\4i\ti\4j\tj\4k\t"+
+ "k\4l\tl\4m\tm\4n\tn\4o\to\4p\tp\4q\tq\4r\tr\4s\ts\4t\tt\4u\tu\4v\tv\4"+
+ "w\tw\4x\tx\4y\ty\4z\tz\4{\t{\3\2\3\2\3\2\3\2\3\2\3\2\3\3\3\3\3\3\3\3\5"+
+ "\3\u0102\n\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\4\6\4\u010c\n\4\r\4\16\4\u010d"+
+ "\3\4\3\4\3\5\3\5\3\5\3\5\7\5\u0116\n\5\f\5\16\5\u0119\13\5\3\5\3\5\3\5"+
+ "\3\5\3\5\3\6\3\6\3\6\3\6\7\6\u0124\n\6\f\6\16\6\u0127\13\6\3\6\3\6\3\7"+
+ "\3\7\3\7\7\7\u012e\n\7\f\7\16\7\u0131\13\7\3\7\3\7\3\b\3\b\3\b\3\b\3\b"+
+ "\3\b\3\b\3\b\3\b\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\n\3\n\3\n\3\n\3\n\3\n\3"+
+ "\n\3\n\3\13\3\13\3\13\3\13\3\13\3\13\3\f\3\f\3\f\3\f\3\f\3\r\3\r\3\r\3"+
+ "\r\3\r\3\16\3\16\3\16\3\16\3\16\3\16\3\17\3\17\3\17\3\17\3\17\3\20\3\20"+
+ "\3\20\3\20\3\20\3\20\3\21\3\21\3\21\3\21\3\21\3\21\3\22\3\22\3\22\3\22"+
+ "\3\22\3\22\3\22\3\22\3\22\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\24"+
+ "\3\24\3\24\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\26\3\26\3\26\3\26\3\26"+
+ "\3\27\3\27\3\27\3\27\3\27\3\30\3\30\3\30\3\30\3\30\3\30\3\30\3\30\3\31"+
+ "\3\31\3\31\3\31\3\31\3\31\3\32\3\32\3\32\3\32\3\32\3\32\3\32\3\32\3\33"+
+ "\3\33\3\33\3\33\3\33\3\33\3\34\3\34\3\34\3\34\3\35\3\35\3\35\3\36\3\36"+
+ "\3\36\3\36\3\36\3\37\3\37\3\37\3\37\3\37\3\37\3\37\3\37\3\37\3\37\3\37"+
+ "\3 \3 \3 \3 \3 \3 \3 \3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3\"\3\"\3\"\3\""+
+ "\3#\3#\3#\3#\3#\3#\3#\3#\3#\3#\3$\3$\3$\3$\3$\3%\3%\3%\3%\3%\3%\3%\3&"+
+ "\3&\3&\3&\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3(\3(\3(\3(\3(\3(\3(\3(\3)\3"+
+ ")\3)\3)\3)\3)\3)\3)\3)\3)\3*\3*\3*\3*\3*\3*\3*\3+\3+\3+\3+\3+\3+\3+\3"+
+ ",\3,\3,\3,\3,\3,\3-\3-\3-\3-\3-\3-\3-\3.\3.\3.\3.\3.\3.\3.\3.\3.\3/\3"+
+ "/\3/\3/\3/\3/\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\61\3\61\3\61\3\61\3"+
+ "\61\3\61\3\61\3\61\3\61\3\61\3\61\3\61\3\61\3\62\3\62\3\62\3\62\3\62\3"+
+ "\63\3\63\3\63\3\63\3\63\3\63\3\64\3\64\3\64\3\64\3\64\3\64\3\64\3\65\3"+
+ "\65\3\65\3\65\3\65\3\65\3\65\3\65\3\65\3\65\3\66\3\66\3\66\3\66\3\67\3"+
+ "\67\3\67\3\67\38\38\38\38\38\39\39\39\39\39\39\39\39\39\3:\3:\3:\3:\3"+
+ ":\3:\3;\3;\3;\5;\u028f\n;\3;\6;\u0292\n;\r;\16;\u0293\3;\5;\u0297\n;\5"+
+ ";\u0299\n;\3;\5;\u029c\n;\3<\3<\3<\3<\7<\u02a2\n<\f<\16<\u02a5\13<\3<"+
+ "\5<\u02a8\n<\3<\5<\u02ab\n<\3=\3=\7=\u02af\n=\f=\16=\u02b2\13=\3=\3=\7"+
+ "=\u02b6\n=\f=\16=\u02b9\13=\3=\5=\u02bc\n=\3=\5=\u02bf\n=\3>\3>\3>\3>"+
+ "\7>\u02c5\n>\f>\16>\u02c8\13>\3>\5>\u02cb\n>\3>\5>\u02ce\n>\3?\3?\3?\5"+
+ "?\u02d3\n?\3?\3?\5?\u02d7\n?\3?\5?\u02da\n?\3?\5?\u02dd\n?\3?\3?\3?\5"+
+ "?\u02e2\n?\3?\5?\u02e5\n?\5?\u02e7\n?\3@\3@\3@\3@\5@\u02ed\n@\3@\5@\u02f0"+
+ "\n@\3@\3@\5@\u02f4\n@\3@\3@\5@\u02f8\n@\3@\3@\5@\u02fc\n@\3A\3A\3A\3A"+
+ "\3A\3A\3A\3A\3A\5A\u0307\nA\3B\3B\3B\7B\u030c\nB\fB\16B\u030f\13B\3B\3"+
+ "B\3C\3C\3C\3C\3C\3C\7C\u0319\nC\fC\16C\u031c\13C\3C\3C\3C\3C\3D\3D\3D"+
+ "\3D\3D\3E\3E\3F\3F\3G\3G\3H\3H\3I\3I\3J\3J\3K\3K\3L\3L\3M\3M\3N\3N\3O"+
+ "\3O\3P\3P\3Q\3Q\3R\3R\3S\3S\3T\3T\3U\3U\3U\3V\3V\3V\3W\3W\3W\3X\3X\3X"+
+ "\3Y\3Y\3Y\3Z\3Z\3Z\3[\3[\3[\3\\\3\\\3\\\3]\3]\3^\3^\3_\3_\3`\3`\3a\3a"+
+ "\3b\3b\3c\3c\3d\3d\3e\3e\3e\3f\3f\3f\3g\3g\3g\3h\3h\3h\3i\3i\3i\3j\3j"+
+ "\3j\3k\3k\3k\3l\3l\3l\3m\3m\3m\3m\3n\3n\3n\3n\3o\3o\3o\3o\3o\3p\3p\3p"+
+ "\3q\3q\3q\3r\3r\3s\3s\3s\3s\3t\3t\7t\u03a2\nt\ft\16t\u03a5\13t\3u\3u\5"+
+ "u\u03a9\nu\3u\3u\3v\3v\3v\3v\5v\u03b1\nv\3v\5v\u03b4\nv\3v\3v\3v\6v\u03b9"+
+ "\nv\rv\16v\u03ba\3v\3v\3v\3v\3v\5v\u03c2\nv\3w\3w\3w\7w\u03c7\nw\fw\16"+
+ "w\u03ca\13w\3w\5w\u03cd\nw\3x\3x\3y\3y\7y\u03d3\ny\fy\16y\u03d6\13y\3"+
+ "y\5y\u03d9\ny\3z\3z\5z\u03dd\nz\3{\3{\3{\3{\5{\u03e3\n{\4\u0117\u031a"+
+ "\2|\3\3\5\4\7\5\t\6\13\7\r\b\17\t\21\n\23\13\25\f\27\r\31\16\33\17\35"+
+ "\20\37\21!\22#\23%\24\'\25)\26+\27-\30/\31\61\32\63\33\65\34\67\359\36"+
+ ";\37= ?!A\"C#E$G%I&K\'M(O)Q*S+U,W-Y.[/]\60_\61a\62c\63e\64g\65i\66k\67"+
+ "m8o9q:s;u{?}@\177A\u0081B\u0083C\u0085D\u0087E\u0089F\u008bG\u008d"+
+ "H\u008fI\u0091J\u0093K\u0095L\u0097M\u0099N\u009bO\u009dP\u009fQ\u00a1"+
+ "R\u00a3S\u00a5T\u00a7U\u00a9V\u00abW\u00adX\u00afY\u00b1Z\u00b3[\u00b5"+
+ "\\\u00b7]\u00b9^\u00bb_\u00bd`\u00bfa\u00c1b\u00c3c\u00c5d\u00c7e\u00c9"+
+ "f\u00cbg\u00cdh\u00cfi\u00d1j\u00d3k\u00d5l\u00d7m\u00d9n\u00dbo\u00dd"+
+ "p\u00dfq\u00e1r\u00e3s\u00e5t\u00e7u\u00e9\2\u00eb\2\u00ed\2\u00ef\2\u00f1"+
+ "\2\u00f3\2\u00f5\2\3\2\35\5\2\13\f\16\17\"\"\4\2\f\f\17\17\6\2\f\f\17"+
+ "\17))^^\3\2\63;\4\2NNnn\4\2ZZzz\5\2\62;CHch\6\2\62;CHaach\3\2\629\4\2"+
+ "\629aa\4\2DDdd\3\2\62\63\4\2\62\63aa\6\2FFHHffhh\4\2RRrr\4\2--//\6\2\f"+
+ "\f\17\17$$^^\3\2^^\4\2GGgg\n\2$$))^^ddhhppttvv\3\2\62\65\3\2\62;\4\2\62"+
+ ";aa\6\2&&C\\aac|\4\2\2\u0081\ud802\udc01\3\2\ud802\udc01\3\2\udc02\ue001"+
+ "\2\u0411\2\3\3\2\2\2\2\5\3\2\2\2\2\7\3\2\2\2\2\t\3\2\2\2\2\13\3\2\2\2"+
+ "\2\r\3\2\2\2\2\17\3\2\2\2\2\21\3\2\2\2\2\23\3\2\2\2\2\25\3\2\2\2\2\27"+
+ "\3\2\2\2\2\31\3\2\2\2\2\33\3\2\2\2\2\35\3\2\2\2\2\37\3\2\2\2\2!\3\2\2"+
+ "\2\2#\3\2\2\2\2%\3\2\2\2\2\'\3\2\2\2\2)\3\2\2\2\2+\3\2\2\2\2-\3\2\2\2"+
+ "\2/\3\2\2\2\2\61\3\2\2\2\2\63\3\2\2\2\2\65\3\2\2\2\2\67\3\2\2\2\29\3\2"+
+ "\2\2\2;\3\2\2\2\2=\3\2\2\2\2?\3\2\2\2\2A\3\2\2\2\2C\3\2\2\2\2E\3\2\2\2"+
+ "\2G\3\2\2\2\2I\3\2\2\2\2K\3\2\2\2\2M\3\2\2\2\2O\3\2\2\2\2Q\3\2\2\2\2S"+
+ "\3\2\2\2\2U\3\2\2\2\2W\3\2\2\2\2Y\3\2\2\2\2[\3\2\2\2\2]\3\2\2\2\2_\3\2"+
+ "\2\2\2a\3\2\2\2\2c\3\2\2\2\2e\3\2\2\2\2g\3\2\2\2\2i\3\2\2\2\2k\3\2\2\2"+
+ "\2m\3\2\2\2\2o\3\2\2\2\2q\3\2\2\2\2s\3\2\2\2\2u\3\2\2\2\2w\3\2\2\2\2y"+
+ "\3\2\2\2\2{\3\2\2\2\2}\3\2\2\2\2\177\3\2\2\2\2\u0081\3\2\2\2\2\u0083\3"+
+ "\2\2\2\2\u0085\3\2\2\2\2\u0087\3\2\2\2\2\u0089\3\2\2\2\2\u008b\3\2\2\2"+
+ "\2\u008d\3\2\2\2\2\u008f\3\2\2\2\2\u0091\3\2\2\2\2\u0093\3\2\2\2\2\u0095"+
+ "\3\2\2\2\2\u0097\3\2\2\2\2\u0099\3\2\2\2\2\u009b\3\2\2\2\2\u009d\3\2\2"+
+ "\2\2\u009f\3\2\2\2\2\u00a1\3\2\2\2\2\u00a3\3\2\2\2\2\u00a5\3\2\2\2\2\u00a7"+
+ "\3\2\2\2\2\u00a9\3\2\2\2\2\u00ab\3\2\2\2\2\u00ad\3\2\2\2\2\u00af\3\2\2"+
+ "\2\2\u00b1\3\2\2\2\2\u00b3\3\2\2\2\2\u00b5\3\2\2\2\2\u00b7\3\2\2\2\2\u00b9"+
+ "\3\2\2\2\2\u00bb\3\2\2\2\2\u00bd\3\2\2\2\2\u00bf\3\2\2\2\2\u00c1\3\2\2"+
+ "\2\2\u00c3\3\2\2\2\2\u00c5\3\2\2\2\2\u00c7\3\2\2\2\2\u00c9\3\2\2\2\2\u00cb"+
+ "\3\2\2\2\2\u00cd\3\2\2\2\2\u00cf\3\2\2\2\2\u00d1\3\2\2\2\2\u00d3\3\2\2"+
+ "\2\2\u00d5\3\2\2\2\2\u00d7\3\2\2\2\2\u00d9\3\2\2\2\2\u00db\3\2\2\2\2\u00dd"+
+ "\3\2\2\2\2\u00df\3\2\2\2\2\u00e1\3\2\2\2\2\u00e3\3\2\2\2\2\u00e5\3\2\2"+
+ "\2\2\u00e7\3\2\2\2\3\u00f7\3\2\2\2\5\u00fd\3\2\2\2\7\u010b\3\2\2\2\t\u0111"+
+ "\3\2\2\2\13\u011f\3\2\2\2\r\u012a\3\2\2\2\17\u0134\3\2\2\2\21\u013d\3"+
+ "\2\2\2\23\u0144\3\2\2\2\25\u014c\3\2\2\2\27\u0152\3\2\2\2\31\u0157\3\2"+
+ "\2\2\33\u015c\3\2\2\2\35\u0162\3\2\2\2\37\u0167\3\2\2\2!\u016d\3\2\2\2"+
+ "#\u0173\3\2\2\2%\u017c\3\2\2\2\'\u0184\3\2\2\2)\u0187\3\2\2\2+\u018e\3"+
+ "\2\2\2-\u0193\3\2\2\2/\u0198\3\2\2\2\61\u01a0\3\2\2\2\63\u01a6\3\2\2\2"+
+ "\65\u01ae\3\2\2\2\67\u01b4\3\2\2\29\u01b8\3\2\2\2;\u01bb\3\2\2\2=\u01c0"+
+ "\3\2\2\2?\u01cb\3\2\2\2A\u01d2\3\2\2\2C\u01dd\3\2\2\2E\u01e1\3\2\2\2G"+
+ "\u01eb\3\2\2\2I\u01f0\3\2\2\2K\u01f7\3\2\2\2M\u01fb\3\2\2\2O\u0203\3\2"+
+ "\2\2Q\u020b\3\2\2\2S\u0215\3\2\2\2U\u021c\3\2\2\2W\u0223\3\2\2\2Y\u0229"+
+ "\3\2\2\2[\u0230\3\2\2\2]\u0239\3\2\2\2_\u023f\3\2\2\2a\u0246\3\2\2\2c"+
+ "\u0253\3\2\2\2e\u0258\3\2\2\2g\u025e\3\2\2\2i\u0265\3\2\2\2k\u026f\3\2"+
+ "\2\2m\u0273\3\2\2\2o\u0277\3\2\2\2q\u027c\3\2\2\2s\u0285\3\2\2\2u\u0298"+
+ "\3\2\2\2w\u029d\3\2\2\2y\u02ac\3\2\2\2{\u02c0\3\2\2\2}\u02e6\3\2\2\2\177"+
+ "\u02e8\3\2\2\2\u0081\u0306\3\2\2\2\u0083\u0308\3\2\2\2\u0085\u0312\3\2"+
+ "\2\2\u0087\u0321\3\2\2\2\u0089\u0326\3\2\2\2\u008b\u0328\3\2\2\2\u008d"+
+ "\u032a\3\2\2\2\u008f\u032c\3\2\2\2\u0091\u032e\3\2\2\2\u0093\u0330\3\2"+
+ "\2\2\u0095\u0332\3\2\2\2\u0097\u0334\3\2\2\2\u0099\u0336\3\2\2\2\u009b"+
+ "\u0338\3\2\2\2\u009d\u033a\3\2\2\2\u009f\u033c\3\2\2\2\u00a1\u033e\3\2"+
+ "\2\2\u00a3\u0340\3\2\2\2\u00a5\u0342\3\2\2\2\u00a7\u0344\3\2\2\2\u00a9"+
+ "\u0346\3\2\2\2\u00ab\u0349\3\2\2\2\u00ad\u034c\3\2\2\2\u00af\u034f\3\2"+
+ "\2\2\u00b1\u0352\3\2\2\2\u00b3\u0355\3\2\2\2\u00b5\u0358\3\2\2\2\u00b7"+
+ "\u035b\3\2\2\2\u00b9\u035e\3\2\2\2\u00bb\u0360\3\2\2\2\u00bd\u0362\3\2"+
+ "\2\2\u00bf\u0364\3\2\2\2\u00c1\u0366\3\2\2\2\u00c3\u0368\3\2\2\2\u00c5"+
+ "\u036a\3\2\2\2\u00c7\u036c\3\2\2\2\u00c9\u036e\3\2\2\2\u00cb\u0371\3\2"+
+ "\2\2\u00cd\u0374\3\2\2\2\u00cf\u0377\3\2\2\2\u00d1\u037a\3\2\2\2\u00d3"+
+ "\u037d\3\2\2\2\u00d5\u0380\3\2\2\2\u00d7\u0383\3\2\2\2\u00d9\u0386\3\2"+
+ "\2\2\u00db\u038a\3\2\2\2\u00dd\u038e\3\2\2\2\u00df\u0393\3\2\2\2\u00e1"+
+ "\u0396\3\2\2\2\u00e3\u0399\3\2\2\2\u00e5\u039b\3\2\2\2\u00e7\u039f\3\2"+
+ "\2\2\u00e9\u03a6\3\2\2\2\u00eb\u03c1\3\2\2\2\u00ed\u03c3\3\2\2\2\u00ef"+
+ "\u03ce\3\2\2\2\u00f1\u03d0\3\2\2\2\u00f3\u03dc\3\2\2\2\u00f5\u03e2\3\2"+
+ "\2\2\u00f7\u00f8\7e\2\2\u00f8\u00f9\7q\2\2\u00f9\u00fa\7n\2\2\u00fa\u00fb"+
+ "\7q\2\2\u00fb\u00fc\7t\2\2\u00fc\4\3\2\2\2\u00fd\u0101\7%\2\2\u00fe\u00ff"+
+ "\5\u00efx\2\u00ff\u0100\5\u00efx\2\u0100\u0102\3\2\2\2\u0101\u00fe\3\2"+
+ "\2\2\u0101\u0102\3\2\2\2\u0102\u0103\3\2\2\2\u0103\u0104\5\u00efx\2\u0104"+
+ "\u0105\5\u00efx\2\u0105\u0106\5\u00efx\2\u0106\u0107\5\u00efx\2\u0107"+
+ "\u0108\5\u00efx\2\u0108\u0109\5\u00efx\2\u0109\6\3\2\2\2\u010a\u010c\t"+
+ "\2\2\2\u010b\u010a\3\2\2\2\u010c\u010d\3\2\2\2\u010d\u010b\3\2\2\2\u010d"+
+ "\u010e\3\2\2\2\u010e\u010f\3\2\2\2\u010f\u0110\b\4\2\2\u0110\b\3\2\2\2"+
+ "\u0111\u0112\7\61\2\2\u0112\u0113\7,\2\2\u0113\u0117\3\2\2\2\u0114\u0116"+
+ "\13\2\2\2\u0115\u0114\3\2\2\2\u0116\u0119\3\2\2\2\u0117\u0118\3\2\2\2"+
+ "\u0117\u0115\3\2\2\2\u0118\u011a\3\2\2\2\u0119\u0117\3\2\2\2\u011a\u011b"+
+ "\7,\2\2\u011b\u011c\7\61\2\2\u011c\u011d\3\2\2\2\u011d\u011e\b\5\3\2\u011e"+
+ "\n\3\2\2\2\u011f\u0120\7\61\2\2\u0120\u0121\7\61\2\2\u0121\u0125\3\2\2"+
+ "\2\u0122\u0124\n\3\2\2\u0123\u0122\3\2\2\2\u0124\u0127\3\2\2\2\u0125\u0123"+
+ "\3\2\2\2\u0125\u0126\3\2\2\2\u0126\u0128\3\2\2\2\u0127\u0125\3\2\2\2\u0128"+
+ "\u0129\b\6\3\2\u0129\f\3\2\2\2\u012a\u012f\7)\2\2\u012b\u012e\n\4\2\2"+
+ "\u012c\u012e\5\u00ebv\2\u012d\u012b\3\2\2\2\u012d\u012c\3\2\2\2\u012e"+
+ "\u0131\3\2\2\2\u012f\u012d\3\2\2\2\u012f\u0130\3\2\2\2\u0130\u0132\3\2"+
+ "\2\2\u0131\u012f\3\2\2\2\u0132\u0133\7)\2\2\u0133\16\3\2\2\2\u0134\u0135"+
+ "\7c\2\2\u0135\u0136\7d\2\2\u0136\u0137\7u\2\2\u0137\u0138\7v\2\2\u0138"+
+ "\u0139\7t\2\2\u0139\u013a\7c\2\2\u013a\u013b\7e\2\2\u013b\u013c\7v\2\2"+
+ "\u013c\20\3\2\2\2\u013d\u013e\7c\2\2\u013e\u013f\7u\2\2\u013f\u0140\7"+
+ "u\2\2\u0140\u0141\7g\2\2\u0141\u0142\7t\2\2\u0142\u0143\7v\2\2\u0143\22"+
+ "\3\2\2\2\u0144\u0145\7d\2\2\u0145\u0146\7q\2\2\u0146\u0147\7q\2\2\u0147"+
+ "\u0148\7n\2\2\u0148\u0149\7g\2\2\u0149\u014a\7c\2\2\u014a\u014b\7p\2\2"+
+ "\u014b\24\3\2\2\2\u014c\u014d\7d\2\2\u014d\u014e\7t\2\2\u014e\u014f\7"+
+ "g\2\2\u014f\u0150\7c\2\2\u0150\u0151\7m\2\2\u0151\26\3\2\2\2\u0152\u0153"+
+ "\7d\2\2\u0153\u0154\7{\2\2\u0154\u0155\7v\2\2\u0155\u0156\7g\2\2\u0156"+
+ "\30\3\2\2\2\u0157\u0158\7e\2\2\u0158\u0159\7c\2\2\u0159\u015a\7u\2\2\u015a"+
+ "\u015b\7g\2\2\u015b\32\3\2\2\2\u015c\u015d\7e\2\2\u015d\u015e\7c\2\2\u015e"+
+ "\u015f\7v\2\2\u015f\u0160\7e\2\2\u0160\u0161\7j\2\2\u0161\34\3\2\2\2\u0162"+
+ "\u0163\7e\2\2\u0163\u0164\7j\2\2\u0164\u0165\7c\2\2\u0165\u0166\7t\2\2"+
+ "\u0166\36\3\2\2\2\u0167\u0168\7e\2\2\u0168\u0169\7n\2\2\u0169\u016a\7"+
+ "c\2\2\u016a\u016b\7u\2\2\u016b\u016c\7u\2\2\u016c \3\2\2\2\u016d\u016e"+
+ "\7e\2\2\u016e\u016f\7q\2\2\u016f\u0170\7p\2\2\u0170\u0171\7u\2\2\u0171"+
+ "\u0172\7v\2\2\u0172\"\3\2\2\2\u0173\u0174\7e\2\2\u0174\u0175\7q\2\2\u0175"+
+ "\u0176\7p\2\2\u0176\u0177\7v\2\2\u0177\u0178\7k\2\2\u0178\u0179\7p\2\2"+
+ "\u0179\u017a\7w\2\2\u017a\u017b\7g\2\2\u017b$\3\2\2\2\u017c\u017d\7f\2"+
+ "\2\u017d\u017e\7g\2\2\u017e\u017f\7h\2\2\u017f\u0180\7c\2\2\u0180\u0181"+
+ "\7w\2\2\u0181\u0182\7n\2\2\u0182\u0183\7v\2\2\u0183&\3\2\2\2\u0184\u0185"+
+ "\7f\2\2\u0185\u0186\7q\2\2\u0186(\3\2\2\2\u0187\u0188\7f\2\2\u0188\u0189"+
+ "\7q\2\2\u0189\u018a\7w\2\2\u018a\u018b\7d\2\2\u018b\u018c\7n\2\2\u018c"+
+ "\u018d\7g\2\2\u018d*\3\2\2\2\u018e\u018f\7g\2\2\u018f\u0190\7n\2\2\u0190"+
+ "\u0191\7u\2\2\u0191\u0192\7g\2\2\u0192,\3\2\2\2\u0193\u0194\7g\2\2\u0194"+
+ "\u0195\7p\2\2\u0195\u0196\7w\2\2\u0196\u0197\7o\2\2\u0197.\3\2\2\2\u0198"+
+ "\u0199\7g\2\2\u0199\u019a\7z\2\2\u019a\u019b\7v\2\2\u019b\u019c\7g\2\2"+
+ "\u019c\u019d\7p\2\2\u019d\u019e\7f\2\2\u019e\u019f\7u\2\2\u019f\60\3\2"+
+ "\2\2\u01a0\u01a1\7h\2\2\u01a1\u01a2\7k\2\2\u01a2\u01a3\7p\2\2\u01a3\u01a4"+
+ "\7c\2\2\u01a4\u01a5\7n\2\2\u01a5\62\3\2\2\2\u01a6\u01a7\7h\2\2\u01a7\u01a8"+
+ "\7k\2\2\u01a8\u01a9\7p\2\2\u01a9\u01aa\7c\2\2\u01aa\u01ab\7n\2\2\u01ab"+
+ "\u01ac\7n\2\2\u01ac\u01ad\7{\2\2\u01ad\64\3\2\2\2\u01ae\u01af\7h\2\2\u01af"+
+ "\u01b0\7n\2\2\u01b0\u01b1\7q\2\2\u01b1\u01b2\7c\2\2\u01b2\u01b3\7v\2\2"+
+ "\u01b3\66\3\2\2\2\u01b4\u01b5\7h\2\2\u01b5\u01b6\7q\2\2\u01b6\u01b7\7"+
+ "t\2\2\u01b78\3\2\2\2\u01b8\u01b9\7k\2\2\u01b9\u01ba\7h\2\2\u01ba:\3\2"+
+ "\2\2\u01bb\u01bc\7i\2\2\u01bc\u01bd\7q\2\2\u01bd\u01be\7v\2\2\u01be\u01bf"+
+ "\7q\2\2\u01bf<\3\2\2\2\u01c0\u01c1\7k\2\2\u01c1\u01c2\7o\2\2\u01c2\u01c3"+
+ "\7r\2\2\u01c3\u01c4\7n\2\2\u01c4\u01c5\7g\2\2\u01c5\u01c6\7o\2\2\u01c6"+
+ "\u01c7\7g\2\2\u01c7\u01c8\7p\2\2\u01c8\u01c9\7v\2\2\u01c9\u01ca\7u\2\2"+
+ "\u01ca>\3\2\2\2\u01cb\u01cc\7k\2\2\u01cc\u01cd\7o\2\2\u01cd\u01ce\7r\2"+
+ "\2\u01ce\u01cf\7q\2\2\u01cf\u01d0\7t\2\2\u01d0\u01d1\7v\2\2\u01d1@\3\2"+
+ "\2\2\u01d2\u01d3\7k\2\2\u01d3\u01d4\7p\2\2\u01d4\u01d5\7u\2\2\u01d5\u01d6"+
+ "\7v\2\2\u01d6\u01d7\7c\2\2\u01d7\u01d8\7p\2\2\u01d8\u01d9\7e\2\2\u01d9"+
+ "\u01da\7g\2\2\u01da\u01db\7q\2\2\u01db\u01dc\7h\2\2\u01dcB\3\2\2\2\u01dd"+
+ "\u01de\7k\2\2\u01de\u01df\7p\2\2\u01df\u01e0\7v\2\2\u01e0D\3\2\2\2\u01e1"+
+ "\u01e2\7k\2\2\u01e2\u01e3\7p\2\2\u01e3\u01e4\7v\2\2\u01e4\u01e5\7g\2\2"+
+ "\u01e5\u01e6\7t\2\2\u01e6\u01e7\7h\2\2\u01e7\u01e8\7c\2\2\u01e8\u01e9"+
+ "\7e\2\2\u01e9\u01ea\7g\2\2\u01eaF\3\2\2\2\u01eb\u01ec\7n\2\2\u01ec\u01ed"+
+ "\7q\2\2\u01ed\u01ee\7p\2\2\u01ee\u01ef\7i\2\2\u01efH\3\2\2\2\u01f0\u01f1"+
+ "\7p\2\2\u01f1\u01f2\7c\2\2\u01f2\u01f3\7v\2\2\u01f3\u01f4\7k\2\2\u01f4"+
+ "\u01f5\7x\2\2\u01f5\u01f6\7g\2\2\u01f6J\3\2\2\2\u01f7\u01f8\7p\2\2\u01f8"+
+ "\u01f9\7g\2\2\u01f9\u01fa\7y\2\2\u01faL\3\2\2\2\u01fb\u01fc\7r\2\2\u01fc"+
+ "\u01fd\7c\2\2\u01fd\u01fe\7e\2\2\u01fe\u01ff\7m\2\2\u01ff\u0200\7c\2\2"+
+ "\u0200\u0201\7i\2\2\u0201\u0202\7g\2\2\u0202N\3\2\2\2\u0203\u0204\7r\2"+
+ "\2\u0204\u0205\7t\2\2\u0205\u0206\7k\2\2\u0206\u0207\7x\2\2\u0207\u0208"+
+ "\7c\2\2\u0208\u0209\7v\2\2\u0209\u020a\7g\2\2\u020aP\3\2\2\2\u020b\u020c"+
+ "\7r\2\2\u020c\u020d\7t\2\2\u020d\u020e\7q\2\2\u020e\u020f\7v\2\2\u020f"+
+ "\u0210\7g\2\2\u0210\u0211\7e\2\2\u0211\u0212\7v\2\2\u0212\u0213\7g\2\2"+
+ "\u0213\u0214\7f\2\2\u0214R\3\2\2\2\u0215\u0216\7r\2\2\u0216\u0217\7w\2"+
+ "\2\u0217\u0218\7d\2\2\u0218\u0219\7n\2\2\u0219\u021a\7k\2\2\u021a\u021b"+
+ "\7e\2\2\u021bT\3\2\2\2\u021c\u021d\7t\2\2\u021d\u021e\7g\2\2\u021e\u021f"+
+ "\7v\2\2\u021f\u0220\7w\2\2\u0220\u0221\7t\2\2\u0221\u0222\7p\2\2\u0222"+
+ "V\3\2\2\2\u0223\u0224\7u\2\2\u0224\u0225\7j\2\2\u0225\u0226\7q\2\2\u0226"+
+ "\u0227\7t\2\2\u0227\u0228\7v\2\2\u0228X\3\2\2\2\u0229\u022a\7u\2\2\u022a"+
+ "\u022b\7v\2\2\u022b\u022c\7c\2\2\u022c\u022d\7v\2\2\u022d\u022e\7k\2\2"+
+ "\u022e\u022f\7e\2\2\u022fZ\3\2\2\2\u0230\u0231\7u\2\2\u0231\u0232\7v\2"+
+ "\2\u0232\u0233\7t\2\2\u0233\u0234\7k\2\2\u0234\u0235\7e\2\2\u0235\u0236"+
+ "\7v\2\2\u0236\u0237\7h\2\2\u0237\u0238\7r\2\2\u0238\\\3\2\2\2\u0239\u023a"+
+ "\7u\2\2\u023a\u023b\7w\2\2\u023b\u023c\7r\2\2\u023c\u023d\7g\2\2\u023d"+
+ "\u023e\7t\2\2\u023e^\3\2\2\2\u023f\u0240\7u\2\2\u0240\u0241\7y\2\2\u0241"+
+ "\u0242\7k\2\2\u0242\u0243\7v\2\2\u0243\u0244\7e\2\2\u0244\u0245\7j\2\2"+
+ "\u0245`\3\2\2\2\u0246\u0247\7u\2\2\u0247\u0248\7{\2\2\u0248\u0249\7p\2"+
+ "\2\u0249\u024a\7e\2\2\u024a\u024b\7j\2\2\u024b\u024c\7t\2\2\u024c\u024d"+
+ "\7q\2\2\u024d\u024e\7p\2\2\u024e\u024f\7k\2\2\u024f\u0250\7|\2\2\u0250"+
+ "\u0251\7g\2\2\u0251\u0252\7f\2\2\u0252b\3\2\2\2\u0253\u0254\7v\2\2\u0254"+
+ "\u0255\7j\2\2\u0255\u0256\7k\2\2\u0256\u0257\7u\2\2\u0257d\3\2\2\2\u0258"+
+ "\u0259\7v\2\2\u0259\u025a\7j\2\2\u025a\u025b\7t\2\2\u025b\u025c\7q\2\2"+
+ "\u025c\u025d\7y\2\2\u025df\3\2\2\2\u025e\u025f\7v\2\2\u025f\u0260\7j\2"+
+ "\2\u0260\u0261\7t\2\2\u0261\u0262\7q\2\2\u0262\u0263\7y\2\2\u0263\u0264"+
+ "\7u\2\2\u0264h\3\2\2\2\u0265\u0266\7v\2\2\u0266\u0267\7t\2\2\u0267\u0268"+
+ "\7c\2\2\u0268\u0269\7p\2\2\u0269\u026a\7u\2\2\u026a\u026b\7k\2\2\u026b"+
+ "\u026c\7g\2\2\u026c\u026d\7p\2\2\u026d\u026e\7v\2\2\u026ej\3\2\2\2\u026f"+
+ "\u0270\7v\2\2\u0270\u0271\7t\2\2\u0271\u0272\7{\2\2\u0272l\3\2\2\2\u0273"+
+ "\u0274\7x\2\2\u0274\u0275\7c\2\2\u0275\u0276\7t\2\2\u0276n\3\2\2\2\u0277"+
+ "\u0278\7x\2\2\u0278\u0279\7q\2\2\u0279\u027a\7k\2\2\u027a\u027b\7f\2\2"+
+ "\u027bp\3\2\2\2\u027c\u027d\7x\2\2\u027d\u027e\7q\2\2\u027e\u027f\7n\2"+
+ "\2\u027f\u0280\7c\2\2\u0280\u0281\7v\2\2\u0281\u0282\7k\2\2\u0282\u0283"+
+ "\7n\2\2\u0283\u0284\7g\2\2\u0284r\3\2\2\2\u0285\u0286\7y\2\2\u0286\u0287"+
+ "\7j\2\2\u0287\u0288\7k\2\2\u0288\u0289\7n\2\2\u0289\u028a\7g\2\2\u028a"+
+ "t\3\2\2\2\u028b\u0299\7\62\2\2\u028c\u0296\t\5\2\2\u028d\u028f\5\u00f1"+
+ "y\2\u028e\u028d\3\2\2\2\u028e\u028f\3\2\2\2\u028f\u0297\3\2\2\2\u0290"+
+ "\u0292\7a\2\2\u0291\u0290\3\2\2\2\u0292\u0293\3\2\2\2\u0293\u0291\3\2"+
+ "\2\2\u0293\u0294\3\2\2\2\u0294\u0295\3\2\2\2\u0295\u0297\5\u00f1y\2\u0296"+
+ "\u028e\3\2\2\2\u0296\u0291\3\2\2\2\u0297\u0299\3\2\2\2\u0298\u028b\3\2"+
+ "\2\2\u0298\u028c\3\2\2\2\u0299\u029b\3\2\2\2\u029a\u029c\t\6\2\2\u029b"+
+ "\u029a\3\2\2\2\u029b\u029c\3\2\2\2\u029cv\3\2\2\2\u029d\u029e\7\62\2\2"+
+ "\u029e\u029f\t\7\2\2\u029f\u02a7\t\b\2\2\u02a0\u02a2\t\t\2\2\u02a1\u02a0"+
+ "\3\2\2\2\u02a2\u02a5\3\2\2\2\u02a3\u02a1\3\2\2\2\u02a3\u02a4\3\2\2\2\u02a4"+
+ "\u02a6\3\2\2\2\u02a5\u02a3\3\2\2\2\u02a6\u02a8\t\b\2\2\u02a7\u02a3\3\2"+
+ "\2\2\u02a7\u02a8\3\2\2\2\u02a8\u02aa\3\2\2\2\u02a9\u02ab\t\6\2\2\u02aa"+
+ "\u02a9\3\2\2\2\u02aa\u02ab\3\2\2\2\u02abx\3\2\2\2\u02ac\u02b0\7\62\2\2"+
+ "\u02ad\u02af\7a\2\2\u02ae\u02ad\3\2\2\2\u02af\u02b2\3\2\2\2\u02b0\u02ae"+
+ "\3\2\2\2\u02b0\u02b1\3\2\2\2\u02b1\u02b3\3\2\2\2\u02b2\u02b0\3\2\2\2\u02b3"+
+ "\u02bb\t\n\2\2\u02b4\u02b6\t\13\2\2\u02b5\u02b4\3\2\2\2\u02b6\u02b9\3"+
+ "\2\2\2\u02b7\u02b5\3\2\2\2\u02b7\u02b8\3\2\2\2\u02b8\u02ba\3\2\2\2\u02b9"+
+ "\u02b7\3\2\2\2\u02ba\u02bc\t\n\2\2\u02bb\u02b7\3\2\2\2\u02bb\u02bc\3\2"+
+ "\2\2\u02bc\u02be\3\2\2\2\u02bd\u02bf\t\6\2\2\u02be\u02bd\3\2\2\2\u02be"+
+ "\u02bf\3\2\2\2\u02bfz\3\2\2\2\u02c0\u02c1\7\62\2\2\u02c1\u02c2\t\f\2\2"+
+ "\u02c2\u02ca\t\r\2\2\u02c3\u02c5\t\16\2\2\u02c4\u02c3\3\2\2\2\u02c5\u02c8"+
+ "\3\2\2\2\u02c6\u02c4\3\2\2\2\u02c6\u02c7\3\2\2\2\u02c7\u02c9\3\2\2\2\u02c8"+
+ "\u02c6\3\2\2\2\u02c9\u02cb\t\r\2\2\u02ca\u02c6\3\2\2\2\u02ca\u02cb\3\2"+
+ "\2\2\u02cb\u02cd\3\2\2\2\u02cc\u02ce\t\6\2\2\u02cd\u02cc\3\2\2\2\u02cd"+
+ "\u02ce\3\2\2\2\u02ce|\3\2\2\2\u02cf\u02d0\5\u00f1y\2\u02d0\u02d2\7\60"+
+ "\2\2\u02d1\u02d3\5\u00f1y\2\u02d2\u02d1\3\2\2\2\u02d2\u02d3\3\2\2\2\u02d3"+
+ "\u02d7\3\2\2\2\u02d4\u02d5\7\60\2\2\u02d5\u02d7\5\u00f1y\2\u02d6\u02cf"+
+ "\3\2\2\2\u02d6\u02d4\3\2\2\2\u02d7\u02d9\3\2\2\2\u02d8\u02da\5\u00e9u"+
+ "\2\u02d9\u02d8\3\2\2\2\u02d9\u02da\3\2\2\2\u02da\u02dc\3\2\2\2\u02db\u02dd"+
+ "\t\17\2\2\u02dc\u02db\3\2\2\2\u02dc\u02dd\3\2\2\2\u02dd\u02e7\3\2\2\2"+
+ "\u02de\u02e4\5\u00f1y\2\u02df\u02e1\5\u00e9u\2\u02e0\u02e2\t\17\2\2\u02e1"+
+ "\u02e0\3\2\2\2\u02e1\u02e2\3\2\2\2\u02e2\u02e5\3\2\2\2\u02e3\u02e5\t\17"+
+ "\2\2\u02e4\u02df\3\2\2\2\u02e4\u02e3\3\2\2\2\u02e5\u02e7\3\2\2\2\u02e6"+
+ "\u02d6\3\2\2\2\u02e6\u02de\3\2\2\2\u02e7~\3\2\2\2\u02e8\u02e9\7\62\2\2"+
+ "\u02e9\u02f3\t\7\2\2\u02ea\u02ec\5\u00edw\2\u02eb\u02ed\7\60\2\2\u02ec"+
+ "\u02eb\3\2\2\2\u02ec\u02ed\3\2\2\2\u02ed\u02f4\3\2\2\2\u02ee\u02f0\5\u00ed"+
+ "w\2\u02ef\u02ee\3\2\2\2\u02ef\u02f0\3\2\2\2\u02f0\u02f1\3\2\2\2\u02f1"+
+ "\u02f2\7\60\2\2\u02f2\u02f4\5\u00edw\2\u02f3\u02ea\3\2\2\2\u02f3\u02ef"+
+ "\3\2\2\2\u02f4\u02f5\3\2\2\2\u02f5\u02f7\t\20\2\2\u02f6\u02f8\t\21\2\2"+
+ "\u02f7\u02f6\3\2\2\2\u02f7\u02f8\3\2\2\2\u02f8\u02f9\3\2\2\2\u02f9\u02fb"+
+ "\5\u00f1y\2\u02fa\u02fc\t\17\2\2\u02fb\u02fa\3\2\2\2\u02fb\u02fc\3\2\2"+
+ "\2\u02fc\u0080\3\2\2\2\u02fd\u02fe\7v\2\2\u02fe\u02ff\7t\2\2\u02ff\u0300"+
+ "\7w\2\2\u0300\u0307\7g\2\2\u0301\u0302\7h\2\2\u0302\u0303\7c\2\2\u0303"+
+ "\u0304\7n\2\2\u0304\u0305\7u\2\2\u0305\u0307\7g\2\2\u0306\u02fd\3\2\2"+
+ "\2\u0306\u0301\3\2\2\2\u0307\u0082\3\2\2\2\u0308\u030d\7$\2\2\u0309\u030c"+
+ "\n\22\2\2\u030a\u030c\5\u00ebv\2\u030b\u0309\3\2\2\2\u030b\u030a\3\2\2"+
+ "\2\u030c\u030f\3\2\2\2\u030d\u030b\3\2\2\2\u030d\u030e\3\2\2\2\u030e\u0310"+
+ "\3\2\2\2\u030f\u030d\3\2\2\2\u0310\u0311\7$\2\2\u0311\u0084\3\2\2\2\u0312"+
+ "\u0313\7$\2\2\u0313\u0314\7$\2\2\u0314\u0315\7$\2\2\u0315\u031a\3\2\2"+
+ "\2\u0316\u0319\n\23\2\2\u0317\u0319\5\u00ebv\2\u0318\u0316\3\2\2\2\u0318"+
+ "\u0317\3\2\2\2\u0319\u031c\3\2\2\2\u031a\u031b\3\2\2\2\u031a\u0318\3\2"+
+ "\2\2\u031b\u031d\3\2\2\2\u031c\u031a\3\2\2\2\u031d\u031e\7$\2\2\u031e"+
+ "\u031f\7$\2\2\u031f\u0320\7$\2\2\u0320\u0086\3\2\2\2\u0321\u0322\7p\2"+
+ "\2\u0322\u0323\7w\2\2\u0323\u0324\7n\2\2\u0324\u0325\7n\2\2\u0325\u0088"+
+ "\3\2\2\2\u0326\u0327\7*\2\2\u0327\u008a\3\2\2\2\u0328\u0329\7+\2\2\u0329"+
+ "\u008c\3\2\2\2\u032a\u032b\7}\2\2\u032b\u008e\3\2\2\2\u032c\u032d\7\177"+
+ "\2\2\u032d\u0090\3\2\2\2\u032e\u032f\7]\2\2\u032f\u0092\3\2\2\2\u0330"+
+ "\u0331\7_\2\2\u0331\u0094\3\2\2\2\u0332\u0333\7=\2\2\u0333\u0096\3\2\2"+
+ "\2\u0334\u0335\7.\2\2\u0335\u0098\3\2\2\2\u0336\u0337\7\60\2\2\u0337\u009a"+
+ "\3\2\2\2\u0338\u0339\7?\2\2\u0339\u009c\3\2\2\2\u033a\u033b\7@\2\2\u033b"+
+ "\u009e\3\2\2\2\u033c\u033d\7>\2\2\u033d\u00a0\3\2\2\2\u033e\u033f\7#\2"+
+ "\2\u033f\u00a2\3\2\2\2\u0340\u0341\7\u0080\2\2\u0341\u00a4\3\2\2\2\u0342"+
+ "\u0343\7A\2\2\u0343\u00a6\3\2\2\2\u0344\u0345\7<\2\2\u0345\u00a8\3\2\2"+
+ "\2\u0346\u0347\7?\2\2\u0347\u0348\7?\2\2\u0348\u00aa\3\2\2\2\u0349\u034a"+
+ "\7>\2\2\u034a\u034b\7?\2\2\u034b\u00ac\3\2\2\2\u034c\u034d\7@\2\2\u034d"+
+ "\u034e\7?\2\2\u034e\u00ae\3\2\2\2\u034f\u0350\7#\2\2\u0350\u0351\7?\2"+
+ "\2\u0351\u00b0\3\2\2\2\u0352\u0353\7(\2\2\u0353\u0354\7(\2\2\u0354\u00b2"+
+ "\3\2\2\2\u0355\u0356\7~\2\2\u0356\u0357\7~\2\2\u0357\u00b4\3\2\2\2\u0358"+
+ "\u0359\7-\2\2\u0359\u035a\7-\2\2\u035a\u00b6\3\2\2\2\u035b\u035c\7/\2"+
+ "\2\u035c\u035d\7/\2\2\u035d\u00b8\3\2\2\2\u035e\u035f\7-\2\2\u035f\u00ba"+
+ "\3\2\2\2\u0360\u0361\7/\2\2\u0361\u00bc\3\2\2\2\u0362\u0363\7,\2\2\u0363"+
+ "\u00be\3\2\2\2\u0364\u0365\7\61\2\2\u0365\u00c0\3\2\2\2\u0366\u0367\7"+
+ "(\2\2\u0367\u00c2\3\2\2\2\u0368\u0369\7~\2\2\u0369\u00c4\3\2\2\2\u036a"+
+ "\u036b\7`\2\2\u036b\u00c6\3\2\2\2\u036c\u036d\7\'\2\2\u036d\u00c8\3\2"+
+ "\2\2\u036e\u036f\7-\2\2\u036f\u0370\7?\2\2\u0370\u00ca\3\2\2\2\u0371\u0372"+
+ "\7/\2\2\u0372\u0373\7?\2\2\u0373\u00cc\3\2\2\2\u0374\u0375\7,\2\2\u0375"+
+ "\u0376\7?\2\2\u0376\u00ce\3\2\2\2\u0377\u0378\7\61\2\2\u0378\u0379\7?"+
+ "\2\2\u0379\u00d0\3\2\2\2\u037a\u037b\7(\2\2\u037b\u037c\7?\2\2\u037c\u00d2"+
+ "\3\2\2\2\u037d\u037e\7~\2\2\u037e\u037f\7?\2\2\u037f\u00d4\3\2\2\2\u0380"+
+ "\u0381\7`\2\2\u0381\u0382\7?\2\2\u0382\u00d6\3\2\2\2\u0383\u0384\7\'\2"+
+ "\2\u0384\u0385\7?\2\2\u0385\u00d8\3\2\2\2\u0386\u0387\7>\2\2\u0387\u0388"+
+ "\7>\2\2\u0388\u0389\7?\2\2\u0389\u00da\3\2\2\2\u038a\u038b\7@\2\2\u038b"+
+ "\u038c\7@\2\2\u038c\u038d\7?\2\2\u038d\u00dc\3\2\2\2\u038e\u038f\7@\2"+
+ "\2\u038f\u0390\7@\2\2\u0390\u0391\7@\2\2\u0391\u0392\7?\2\2\u0392\u00de"+
+ "\3\2\2\2\u0393\u0394\7/\2\2\u0394\u0395\7@\2\2\u0395\u00e0\3\2\2\2\u0396"+
+ "\u0397\7<\2\2\u0397\u0398\7<\2\2\u0398\u00e2\3\2\2\2\u0399\u039a\7B\2"+
+ "\2\u039a\u00e4\3\2\2\2\u039b\u039c\7\60\2\2\u039c\u039d\7\60\2\2\u039d"+
+ "\u039e\7\60\2\2\u039e\u00e6\3\2\2\2\u039f\u03a3\5\u00f5{\2\u03a0\u03a2"+
+ "\5\u00f3z\2\u03a1\u03a0\3\2\2\2\u03a2\u03a5\3\2\2\2\u03a3\u03a1\3\2\2"+
+ "\2\u03a3\u03a4\3\2\2\2\u03a4\u00e8\3\2\2\2\u03a5\u03a3\3\2\2\2\u03a6\u03a8"+
+ "\t\24\2\2\u03a7\u03a9\t\21\2\2\u03a8\u03a7\3\2\2\2\u03a8\u03a9\3\2\2\2"+
+ "\u03a9\u03aa\3\2\2\2\u03aa\u03ab\5\u00f1y\2\u03ab\u00ea\3\2\2\2\u03ac"+
+ "\u03ad\7^\2\2\u03ad\u03c2\t\25\2\2\u03ae\u03b3\7^\2\2\u03af\u03b1\t\26"+
+ "\2\2\u03b0\u03af\3\2\2\2\u03b0\u03b1\3\2\2\2\u03b1\u03b2\3\2\2\2\u03b2"+
+ "\u03b4\t\n\2\2\u03b3\u03b0\3\2\2\2\u03b3\u03b4\3\2\2\2\u03b4\u03b5\3\2"+
+ "\2\2\u03b5\u03c2\t\n\2\2\u03b6\u03b8\7^\2\2\u03b7\u03b9\7w\2\2\u03b8\u03b7"+
+ "\3\2\2\2\u03b9\u03ba\3\2\2\2\u03ba\u03b8\3\2\2\2\u03ba\u03bb\3\2\2\2\u03bb"+
+ "\u03bc\3\2\2\2\u03bc\u03bd\5\u00efx\2\u03bd\u03be\5\u00efx\2\u03be\u03bf"+
+ "\5\u00efx\2\u03bf\u03c0\5\u00efx\2\u03c0\u03c2\3\2\2\2\u03c1\u03ac\3\2"+
+ "\2\2\u03c1\u03ae\3\2\2\2\u03c1\u03b6\3\2\2\2\u03c2\u00ec\3\2\2\2\u03c3"+
+ "\u03cc\5\u00efx\2\u03c4\u03c7\5\u00efx\2\u03c5\u03c7\7a\2\2\u03c6\u03c4"+
+ "\3\2\2\2\u03c6\u03c5\3\2\2\2\u03c7\u03ca\3\2\2\2\u03c8\u03c6\3\2\2\2\u03c8"+
+ "\u03c9\3\2\2\2\u03c9\u03cb\3\2\2\2\u03ca\u03c8\3\2\2\2\u03cb\u03cd\5\u00ef"+
+ "x\2\u03cc\u03c8\3\2\2\2\u03cc\u03cd\3\2\2\2\u03cd\u00ee\3\2\2\2\u03ce"+
+ "\u03cf\t\b\2\2\u03cf\u00f0\3\2\2\2\u03d0\u03d8\t\27\2\2\u03d1\u03d3\t"+
+ "\30\2\2\u03d2\u03d1\3\2\2\2\u03d3\u03d6\3\2\2\2\u03d4\u03d2\3\2\2\2\u03d4"+
+ "\u03d5\3\2\2\2\u03d5\u03d7\3\2\2\2\u03d6\u03d4\3\2\2\2\u03d7\u03d9\t\27"+
+ "\2\2\u03d8\u03d4\3\2\2\2\u03d8\u03d9\3\2\2\2\u03d9\u00f2\3\2\2\2\u03da"+
+ "\u03dd\5\u00f5{\2\u03db\u03dd\t\27\2\2\u03dc\u03da\3\2\2\2\u03dc\u03db"+
+ "\3\2\2\2\u03dd\u00f4\3\2\2\2\u03de\u03e3\t\31\2\2\u03df\u03e3\n\32\2\2"+
+ "\u03e0\u03e1\t\33\2\2\u03e1\u03e3\t\34\2\2\u03e2\u03de\3\2\2\2\u03e2\u03df"+
+ "\3\2\2\2\u03e2\u03e0\3\2\2\2\u03e3\u00f6\3\2\2\2\66\2\u0101\u010d\u0117"+
+ "\u0125\u012d\u012f\u028e\u0293\u0296\u0298\u029b\u02a3\u02a7\u02aa\u02b0"+
+ "\u02b7\u02bb\u02be\u02c6\u02ca\u02cd\u02d2\u02d6\u02d9\u02dc\u02e1\u02e4"+
+ "\u02e6\u02ec\u02ef\u02f3\u02f7\u02fb\u0306\u030b\u030d\u0318\u031a\u03a3"+
+ "\u03a8\u03b0\u03b3\u03ba\u03c1\u03c6\u03c8\u03cc\u03d4\u03d8\u03dc\u03e2"+
+ "\4\2\3\2\2\4\2";
+ public static final ATN _ATN =
+ new ATNDeserializer().deserialize(_serializedATN.toCharArray());
+ static {
+ _decisionToDFA = new DFA[_ATN.getNumberOfDecisions()];
+ for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) {
+ _decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i);
+ }
+ }
+}
\ No newline at end of file
diff --git a/java/generated/processing/mode/java/preproc/ProcessingLexer.tokens b/java/generated/processing/mode/java/preproc/ProcessingLexer.tokens
new file mode 100644
index 000000000..0b56eed32
--- /dev/null
+++ b/java/generated/processing/mode/java/preproc/ProcessingLexer.tokens
@@ -0,0 +1,215 @@
+T__0=1
+HexColorLiteral=2
+WS=3
+COMMENT=4
+LINE_COMMENT=5
+CHAR_LITERAL=6
+ABSTRACT=7
+ASSERT=8
+BOOLEAN=9
+BREAK=10
+BYTE=11
+CASE=12
+CATCH=13
+CHAR=14
+CLASS=15
+CONST=16
+CONTINUE=17
+DEFAULT=18
+DO=19
+DOUBLE=20
+ELSE=21
+ENUM=22
+EXTENDS=23
+FINAL=24
+FINALLY=25
+FLOAT=26
+FOR=27
+IF=28
+GOTO=29
+IMPLEMENTS=30
+IMPORT=31
+INSTANCEOF=32
+INT=33
+INTERFACE=34
+LONG=35
+NATIVE=36
+NEW=37
+PACKAGE=38
+PRIVATE=39
+PROTECTED=40
+PUBLIC=41
+RETURN=42
+SHORT=43
+STATIC=44
+STRICTFP=45
+SUPER=46
+SWITCH=47
+SYNCHRONIZED=48
+THIS=49
+THROW=50
+THROWS=51
+TRANSIENT=52
+TRY=53
+VAR=54
+VOID=55
+VOLATILE=56
+WHILE=57
+DECIMAL_LITERAL=58
+HEX_LITERAL=59
+OCT_LITERAL=60
+BINARY_LITERAL=61
+FLOAT_LITERAL=62
+HEX_FLOAT_LITERAL=63
+BOOL_LITERAL=64
+STRING_LITERAL=65
+MULTI_STRING_LIT=66
+NULL_LITERAL=67
+LPAREN=68
+RPAREN=69
+LBRACE=70
+RBRACE=71
+LBRACK=72
+RBRACK=73
+SEMI=74
+COMMA=75
+DOT=76
+ASSIGN=77
+GT=78
+LT=79
+BANG=80
+TILDE=81
+QUESTION=82
+COLON=83
+EQUAL=84
+LE=85
+GE=86
+NOTEQUAL=87
+AND=88
+OR=89
+INC=90
+DEC=91
+ADD=92
+SUB=93
+MUL=94
+DIV=95
+BITAND=96
+BITOR=97
+CARET=98
+MOD=99
+ADD_ASSIGN=100
+SUB_ASSIGN=101
+MUL_ASSIGN=102
+DIV_ASSIGN=103
+AND_ASSIGN=104
+OR_ASSIGN=105
+XOR_ASSIGN=106
+MOD_ASSIGN=107
+LSHIFT_ASSIGN=108
+RSHIFT_ASSIGN=109
+URSHIFT_ASSIGN=110
+ARROW=111
+COLONCOLON=112
+AT=113
+ELLIPSIS=114
+IDENTIFIER=115
+'color'=1
+'abstract'=7
+'assert'=8
+'boolean'=9
+'break'=10
+'byte'=11
+'case'=12
+'catch'=13
+'char'=14
+'class'=15
+'const'=16
+'continue'=17
+'default'=18
+'do'=19
+'double'=20
+'else'=21
+'enum'=22
+'extends'=23
+'final'=24
+'finally'=25
+'float'=26
+'for'=27
+'if'=28
+'goto'=29
+'implements'=30
+'import'=31
+'instanceof'=32
+'int'=33
+'interface'=34
+'long'=35
+'native'=36
+'new'=37
+'package'=38
+'private'=39
+'protected'=40
+'public'=41
+'return'=42
+'short'=43
+'static'=44
+'strictfp'=45
+'super'=46
+'switch'=47
+'synchronized'=48
+'this'=49
+'throw'=50
+'throws'=51
+'transient'=52
+'try'=53
+'var'=54
+'void'=55
+'volatile'=56
+'while'=57
+'null'=67
+'('=68
+')'=69
+'{'=70
+'}'=71
+'['=72
+']'=73
+';'=74
+','=75
+'.'=76
+'='=77
+'>'=78
+'<'=79
+'!'=80
+'~'=81
+'?'=82
+':'=83
+'=='=84
+'<='=85
+'>='=86
+'!='=87
+'&&'=88
+'||'=89
+'++'=90
+'--'=91
+'+'=92
+'-'=93
+'*'=94
+'/'=95
+'&'=96
+'|'=97
+'^'=98
+'%'=99
+'+='=100
+'-='=101
+'*='=102
+'/='=103
+'&='=104
+'|='=105
+'^='=106
+'%='=107
+'<<='=108
+'>>='=109
+'>>>='=110
+'->'=111
+'::'=112
+'@'=113
+'...'=114
diff --git a/java/generated/processing/mode/java/preproc/ProcessingListener.java b/java/generated/processing/mode/java/preproc/ProcessingListener.java
new file mode 100644
index 000000000..64547027d
--- /dev/null
+++ b/java/generated/processing/mode/java/preproc/ProcessingListener.java
@@ -0,0 +1,1170 @@
+// Generated from /Users/steftervelde/Source/Processing-Foundation/processing4/java/src/processing/mode/java/preproc/Processing.g4 by ANTLR 4.7.2
+package processing.mode.java.preproc;
+import org.antlr.v4.runtime.tree.ParseTreeListener;
+
+/**
+ * This interface defines a complete listener for a parse tree produced by
+ * {@link ProcessingParser}.
+ */
+public interface ProcessingListener extends ParseTreeListener {
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#processingSketch}.
+ * @param ctx the parse tree
+ */
+ void enterProcessingSketch(ProcessingParser.ProcessingSketchContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#processingSketch}.
+ * @param ctx the parse tree
+ */
+ void exitProcessingSketch(ProcessingParser.ProcessingSketchContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#javaProcessingSketch}.
+ * @param ctx the parse tree
+ */
+ void enterJavaProcessingSketch(ProcessingParser.JavaProcessingSketchContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#javaProcessingSketch}.
+ * @param ctx the parse tree
+ */
+ void exitJavaProcessingSketch(ProcessingParser.JavaProcessingSketchContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#staticProcessingSketch}.
+ * @param ctx the parse tree
+ */
+ void enterStaticProcessingSketch(ProcessingParser.StaticProcessingSketchContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#staticProcessingSketch}.
+ * @param ctx the parse tree
+ */
+ void exitStaticProcessingSketch(ProcessingParser.StaticProcessingSketchContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#activeProcessingSketch}.
+ * @param ctx the parse tree
+ */
+ void enterActiveProcessingSketch(ProcessingParser.ActiveProcessingSketchContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#activeProcessingSketch}.
+ * @param ctx the parse tree
+ */
+ void exitActiveProcessingSketch(ProcessingParser.ActiveProcessingSketchContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#warnMixedModes}.
+ * @param ctx the parse tree
+ */
+ void enterWarnMixedModes(ProcessingParser.WarnMixedModesContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#warnMixedModes}.
+ * @param ctx the parse tree
+ */
+ void exitWarnMixedModes(ProcessingParser.WarnMixedModesContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#variableDeclaratorId}.
+ * @param ctx the parse tree
+ */
+ void enterVariableDeclaratorId(ProcessingParser.VariableDeclaratorIdContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#variableDeclaratorId}.
+ * @param ctx the parse tree
+ */
+ void exitVariableDeclaratorId(ProcessingParser.VariableDeclaratorIdContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#warnTypeAsVariableName}.
+ * @param ctx the parse tree
+ */
+ void enterWarnTypeAsVariableName(ProcessingParser.WarnTypeAsVariableNameContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#warnTypeAsVariableName}.
+ * @param ctx the parse tree
+ */
+ void exitWarnTypeAsVariableName(ProcessingParser.WarnTypeAsVariableNameContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#methodCall}.
+ * @param ctx the parse tree
+ */
+ void enterMethodCall(ProcessingParser.MethodCallContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#methodCall}.
+ * @param ctx the parse tree
+ */
+ void exitMethodCall(ProcessingParser.MethodCallContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#functionWithPrimitiveTypeName}.
+ * @param ctx the parse tree
+ */
+ void enterFunctionWithPrimitiveTypeName(ProcessingParser.FunctionWithPrimitiveTypeNameContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#functionWithPrimitiveTypeName}.
+ * @param ctx the parse tree
+ */
+ void exitFunctionWithPrimitiveTypeName(ProcessingParser.FunctionWithPrimitiveTypeNameContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#primitiveType}.
+ * @param ctx the parse tree
+ */
+ void enterPrimitiveType(ProcessingParser.PrimitiveTypeContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#primitiveType}.
+ * @param ctx the parse tree
+ */
+ void exitPrimitiveType(ProcessingParser.PrimitiveTypeContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#colorPrimitiveType}.
+ * @param ctx the parse tree
+ */
+ void enterColorPrimitiveType(ProcessingParser.ColorPrimitiveTypeContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#colorPrimitiveType}.
+ * @param ctx the parse tree
+ */
+ void exitColorPrimitiveType(ProcessingParser.ColorPrimitiveTypeContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#qualifiedName}.
+ * @param ctx the parse tree
+ */
+ void enterQualifiedName(ProcessingParser.QualifiedNameContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#qualifiedName}.
+ * @param ctx the parse tree
+ */
+ void exitQualifiedName(ProcessingParser.QualifiedNameContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#literal}.
+ * @param ctx the parse tree
+ */
+ void enterLiteral(ProcessingParser.LiteralContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#literal}.
+ * @param ctx the parse tree
+ */
+ void exitLiteral(ProcessingParser.LiteralContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#hexColorLiteral}.
+ * @param ctx the parse tree
+ */
+ void enterHexColorLiteral(ProcessingParser.HexColorLiteralContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#hexColorLiteral}.
+ * @param ctx the parse tree
+ */
+ void exitHexColorLiteral(ProcessingParser.HexColorLiteralContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#compilationUnit}.
+ * @param ctx the parse tree
+ */
+ void enterCompilationUnit(ProcessingParser.CompilationUnitContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#compilationUnit}.
+ * @param ctx the parse tree
+ */
+ void exitCompilationUnit(ProcessingParser.CompilationUnitContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#packageDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterPackageDeclaration(ProcessingParser.PackageDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#packageDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitPackageDeclaration(ProcessingParser.PackageDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#importDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterImportDeclaration(ProcessingParser.ImportDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#importDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitImportDeclaration(ProcessingParser.ImportDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#typeDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterTypeDeclaration(ProcessingParser.TypeDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#typeDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitTypeDeclaration(ProcessingParser.TypeDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#modifier}.
+ * @param ctx the parse tree
+ */
+ void enterModifier(ProcessingParser.ModifierContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#modifier}.
+ * @param ctx the parse tree
+ */
+ void exitModifier(ProcessingParser.ModifierContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#classOrInterfaceModifier}.
+ * @param ctx the parse tree
+ */
+ void enterClassOrInterfaceModifier(ProcessingParser.ClassOrInterfaceModifierContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#classOrInterfaceModifier}.
+ * @param ctx the parse tree
+ */
+ void exitClassOrInterfaceModifier(ProcessingParser.ClassOrInterfaceModifierContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#variableModifier}.
+ * @param ctx the parse tree
+ */
+ void enterVariableModifier(ProcessingParser.VariableModifierContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#variableModifier}.
+ * @param ctx the parse tree
+ */
+ void exitVariableModifier(ProcessingParser.VariableModifierContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#classDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterClassDeclaration(ProcessingParser.ClassDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#classDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitClassDeclaration(ProcessingParser.ClassDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#typeParameters}.
+ * @param ctx the parse tree
+ */
+ void enterTypeParameters(ProcessingParser.TypeParametersContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#typeParameters}.
+ * @param ctx the parse tree
+ */
+ void exitTypeParameters(ProcessingParser.TypeParametersContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#typeParameter}.
+ * @param ctx the parse tree
+ */
+ void enterTypeParameter(ProcessingParser.TypeParameterContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#typeParameter}.
+ * @param ctx the parse tree
+ */
+ void exitTypeParameter(ProcessingParser.TypeParameterContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#typeBound}.
+ * @param ctx the parse tree
+ */
+ void enterTypeBound(ProcessingParser.TypeBoundContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#typeBound}.
+ * @param ctx the parse tree
+ */
+ void exitTypeBound(ProcessingParser.TypeBoundContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#enumDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterEnumDeclaration(ProcessingParser.EnumDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#enumDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitEnumDeclaration(ProcessingParser.EnumDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#enumConstants}.
+ * @param ctx the parse tree
+ */
+ void enterEnumConstants(ProcessingParser.EnumConstantsContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#enumConstants}.
+ * @param ctx the parse tree
+ */
+ void exitEnumConstants(ProcessingParser.EnumConstantsContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#enumConstant}.
+ * @param ctx the parse tree
+ */
+ void enterEnumConstant(ProcessingParser.EnumConstantContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#enumConstant}.
+ * @param ctx the parse tree
+ */
+ void exitEnumConstant(ProcessingParser.EnumConstantContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#enumBodyDeclarations}.
+ * @param ctx the parse tree
+ */
+ void enterEnumBodyDeclarations(ProcessingParser.EnumBodyDeclarationsContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#enumBodyDeclarations}.
+ * @param ctx the parse tree
+ */
+ void exitEnumBodyDeclarations(ProcessingParser.EnumBodyDeclarationsContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#interfaceDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterInterfaceDeclaration(ProcessingParser.InterfaceDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#interfaceDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitInterfaceDeclaration(ProcessingParser.InterfaceDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#classBody}.
+ * @param ctx the parse tree
+ */
+ void enterClassBody(ProcessingParser.ClassBodyContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#classBody}.
+ * @param ctx the parse tree
+ */
+ void exitClassBody(ProcessingParser.ClassBodyContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#interfaceBody}.
+ * @param ctx the parse tree
+ */
+ void enterInterfaceBody(ProcessingParser.InterfaceBodyContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#interfaceBody}.
+ * @param ctx the parse tree
+ */
+ void exitInterfaceBody(ProcessingParser.InterfaceBodyContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#classBodyDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterClassBodyDeclaration(ProcessingParser.ClassBodyDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#classBodyDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitClassBodyDeclaration(ProcessingParser.ClassBodyDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#memberDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterMemberDeclaration(ProcessingParser.MemberDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#memberDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitMemberDeclaration(ProcessingParser.MemberDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#methodDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterMethodDeclaration(ProcessingParser.MethodDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#methodDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitMethodDeclaration(ProcessingParser.MethodDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#methodBody}.
+ * @param ctx the parse tree
+ */
+ void enterMethodBody(ProcessingParser.MethodBodyContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#methodBody}.
+ * @param ctx the parse tree
+ */
+ void exitMethodBody(ProcessingParser.MethodBodyContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#typeTypeOrVoid}.
+ * @param ctx the parse tree
+ */
+ void enterTypeTypeOrVoid(ProcessingParser.TypeTypeOrVoidContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#typeTypeOrVoid}.
+ * @param ctx the parse tree
+ */
+ void exitTypeTypeOrVoid(ProcessingParser.TypeTypeOrVoidContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#genericMethodDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterGenericMethodDeclaration(ProcessingParser.GenericMethodDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#genericMethodDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitGenericMethodDeclaration(ProcessingParser.GenericMethodDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#genericConstructorDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterGenericConstructorDeclaration(ProcessingParser.GenericConstructorDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#genericConstructorDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitGenericConstructorDeclaration(ProcessingParser.GenericConstructorDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#constructorDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterConstructorDeclaration(ProcessingParser.ConstructorDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#constructorDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitConstructorDeclaration(ProcessingParser.ConstructorDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#fieldDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterFieldDeclaration(ProcessingParser.FieldDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#fieldDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitFieldDeclaration(ProcessingParser.FieldDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#interfaceBodyDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterInterfaceBodyDeclaration(ProcessingParser.InterfaceBodyDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#interfaceBodyDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitInterfaceBodyDeclaration(ProcessingParser.InterfaceBodyDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#interfaceMemberDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterInterfaceMemberDeclaration(ProcessingParser.InterfaceMemberDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#interfaceMemberDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitInterfaceMemberDeclaration(ProcessingParser.InterfaceMemberDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#constDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterConstDeclaration(ProcessingParser.ConstDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#constDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitConstDeclaration(ProcessingParser.ConstDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#constantDeclarator}.
+ * @param ctx the parse tree
+ */
+ void enterConstantDeclarator(ProcessingParser.ConstantDeclaratorContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#constantDeclarator}.
+ * @param ctx the parse tree
+ */
+ void exitConstantDeclarator(ProcessingParser.ConstantDeclaratorContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#interfaceMethodDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterInterfaceMethodDeclaration(ProcessingParser.InterfaceMethodDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#interfaceMethodDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitInterfaceMethodDeclaration(ProcessingParser.InterfaceMethodDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#interfaceMethodModifier}.
+ * @param ctx the parse tree
+ */
+ void enterInterfaceMethodModifier(ProcessingParser.InterfaceMethodModifierContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#interfaceMethodModifier}.
+ * @param ctx the parse tree
+ */
+ void exitInterfaceMethodModifier(ProcessingParser.InterfaceMethodModifierContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#genericInterfaceMethodDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterGenericInterfaceMethodDeclaration(ProcessingParser.GenericInterfaceMethodDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#genericInterfaceMethodDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitGenericInterfaceMethodDeclaration(ProcessingParser.GenericInterfaceMethodDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#variableDeclarators}.
+ * @param ctx the parse tree
+ */
+ void enterVariableDeclarators(ProcessingParser.VariableDeclaratorsContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#variableDeclarators}.
+ * @param ctx the parse tree
+ */
+ void exitVariableDeclarators(ProcessingParser.VariableDeclaratorsContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#variableDeclarator}.
+ * @param ctx the parse tree
+ */
+ void enterVariableDeclarator(ProcessingParser.VariableDeclaratorContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#variableDeclarator}.
+ * @param ctx the parse tree
+ */
+ void exitVariableDeclarator(ProcessingParser.VariableDeclaratorContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#variableInitializer}.
+ * @param ctx the parse tree
+ */
+ void enterVariableInitializer(ProcessingParser.VariableInitializerContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#variableInitializer}.
+ * @param ctx the parse tree
+ */
+ void exitVariableInitializer(ProcessingParser.VariableInitializerContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#arrayInitializer}.
+ * @param ctx the parse tree
+ */
+ void enterArrayInitializer(ProcessingParser.ArrayInitializerContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#arrayInitializer}.
+ * @param ctx the parse tree
+ */
+ void exitArrayInitializer(ProcessingParser.ArrayInitializerContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#classOrInterfaceType}.
+ * @param ctx the parse tree
+ */
+ void enterClassOrInterfaceType(ProcessingParser.ClassOrInterfaceTypeContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#classOrInterfaceType}.
+ * @param ctx the parse tree
+ */
+ void exitClassOrInterfaceType(ProcessingParser.ClassOrInterfaceTypeContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#typeArgument}.
+ * @param ctx the parse tree
+ */
+ void enterTypeArgument(ProcessingParser.TypeArgumentContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#typeArgument}.
+ * @param ctx the parse tree
+ */
+ void exitTypeArgument(ProcessingParser.TypeArgumentContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#qualifiedNameList}.
+ * @param ctx the parse tree
+ */
+ void enterQualifiedNameList(ProcessingParser.QualifiedNameListContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#qualifiedNameList}.
+ * @param ctx the parse tree
+ */
+ void exitQualifiedNameList(ProcessingParser.QualifiedNameListContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#formalParameters}.
+ * @param ctx the parse tree
+ */
+ void enterFormalParameters(ProcessingParser.FormalParametersContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#formalParameters}.
+ * @param ctx the parse tree
+ */
+ void exitFormalParameters(ProcessingParser.FormalParametersContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#formalParameterList}.
+ * @param ctx the parse tree
+ */
+ void enterFormalParameterList(ProcessingParser.FormalParameterListContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#formalParameterList}.
+ * @param ctx the parse tree
+ */
+ void exitFormalParameterList(ProcessingParser.FormalParameterListContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#formalParameter}.
+ * @param ctx the parse tree
+ */
+ void enterFormalParameter(ProcessingParser.FormalParameterContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#formalParameter}.
+ * @param ctx the parse tree
+ */
+ void exitFormalParameter(ProcessingParser.FormalParameterContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#lastFormalParameter}.
+ * @param ctx the parse tree
+ */
+ void enterLastFormalParameter(ProcessingParser.LastFormalParameterContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#lastFormalParameter}.
+ * @param ctx the parse tree
+ */
+ void exitLastFormalParameter(ProcessingParser.LastFormalParameterContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#baseStringLiteral}.
+ * @param ctx the parse tree
+ */
+ void enterBaseStringLiteral(ProcessingParser.BaseStringLiteralContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#baseStringLiteral}.
+ * @param ctx the parse tree
+ */
+ void exitBaseStringLiteral(ProcessingParser.BaseStringLiteralContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#multilineStringLiteral}.
+ * @param ctx the parse tree
+ */
+ void enterMultilineStringLiteral(ProcessingParser.MultilineStringLiteralContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#multilineStringLiteral}.
+ * @param ctx the parse tree
+ */
+ void exitMultilineStringLiteral(ProcessingParser.MultilineStringLiteralContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#stringLiteral}.
+ * @param ctx the parse tree
+ */
+ void enterStringLiteral(ProcessingParser.StringLiteralContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#stringLiteral}.
+ * @param ctx the parse tree
+ */
+ void exitStringLiteral(ProcessingParser.StringLiteralContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#integerLiteral}.
+ * @param ctx the parse tree
+ */
+ void enterIntegerLiteral(ProcessingParser.IntegerLiteralContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#integerLiteral}.
+ * @param ctx the parse tree
+ */
+ void exitIntegerLiteral(ProcessingParser.IntegerLiteralContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#floatLiteral}.
+ * @param ctx the parse tree
+ */
+ void enterFloatLiteral(ProcessingParser.FloatLiteralContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#floatLiteral}.
+ * @param ctx the parse tree
+ */
+ void exitFloatLiteral(ProcessingParser.FloatLiteralContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#annotation}.
+ * @param ctx the parse tree
+ */
+ void enterAnnotation(ProcessingParser.AnnotationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#annotation}.
+ * @param ctx the parse tree
+ */
+ void exitAnnotation(ProcessingParser.AnnotationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#elementValuePairs}.
+ * @param ctx the parse tree
+ */
+ void enterElementValuePairs(ProcessingParser.ElementValuePairsContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#elementValuePairs}.
+ * @param ctx the parse tree
+ */
+ void exitElementValuePairs(ProcessingParser.ElementValuePairsContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#elementValuePair}.
+ * @param ctx the parse tree
+ */
+ void enterElementValuePair(ProcessingParser.ElementValuePairContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#elementValuePair}.
+ * @param ctx the parse tree
+ */
+ void exitElementValuePair(ProcessingParser.ElementValuePairContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#elementValue}.
+ * @param ctx the parse tree
+ */
+ void enterElementValue(ProcessingParser.ElementValueContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#elementValue}.
+ * @param ctx the parse tree
+ */
+ void exitElementValue(ProcessingParser.ElementValueContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#elementValueArrayInitializer}.
+ * @param ctx the parse tree
+ */
+ void enterElementValueArrayInitializer(ProcessingParser.ElementValueArrayInitializerContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#elementValueArrayInitializer}.
+ * @param ctx the parse tree
+ */
+ void exitElementValueArrayInitializer(ProcessingParser.ElementValueArrayInitializerContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#annotationTypeDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterAnnotationTypeDeclaration(ProcessingParser.AnnotationTypeDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#annotationTypeDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitAnnotationTypeDeclaration(ProcessingParser.AnnotationTypeDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#annotationTypeBody}.
+ * @param ctx the parse tree
+ */
+ void enterAnnotationTypeBody(ProcessingParser.AnnotationTypeBodyContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#annotationTypeBody}.
+ * @param ctx the parse tree
+ */
+ void exitAnnotationTypeBody(ProcessingParser.AnnotationTypeBodyContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#annotationTypeElementDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterAnnotationTypeElementDeclaration(ProcessingParser.AnnotationTypeElementDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#annotationTypeElementDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitAnnotationTypeElementDeclaration(ProcessingParser.AnnotationTypeElementDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#annotationTypeElementRest}.
+ * @param ctx the parse tree
+ */
+ void enterAnnotationTypeElementRest(ProcessingParser.AnnotationTypeElementRestContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#annotationTypeElementRest}.
+ * @param ctx the parse tree
+ */
+ void exitAnnotationTypeElementRest(ProcessingParser.AnnotationTypeElementRestContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#annotationMethodOrConstantRest}.
+ * @param ctx the parse tree
+ */
+ void enterAnnotationMethodOrConstantRest(ProcessingParser.AnnotationMethodOrConstantRestContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#annotationMethodOrConstantRest}.
+ * @param ctx the parse tree
+ */
+ void exitAnnotationMethodOrConstantRest(ProcessingParser.AnnotationMethodOrConstantRestContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#annotationMethodRest}.
+ * @param ctx the parse tree
+ */
+ void enterAnnotationMethodRest(ProcessingParser.AnnotationMethodRestContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#annotationMethodRest}.
+ * @param ctx the parse tree
+ */
+ void exitAnnotationMethodRest(ProcessingParser.AnnotationMethodRestContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#annotationConstantRest}.
+ * @param ctx the parse tree
+ */
+ void enterAnnotationConstantRest(ProcessingParser.AnnotationConstantRestContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#annotationConstantRest}.
+ * @param ctx the parse tree
+ */
+ void exitAnnotationConstantRest(ProcessingParser.AnnotationConstantRestContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#defaultValue}.
+ * @param ctx the parse tree
+ */
+ void enterDefaultValue(ProcessingParser.DefaultValueContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#defaultValue}.
+ * @param ctx the parse tree
+ */
+ void exitDefaultValue(ProcessingParser.DefaultValueContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#block}.
+ * @param ctx the parse tree
+ */
+ void enterBlock(ProcessingParser.BlockContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#block}.
+ * @param ctx the parse tree
+ */
+ void exitBlock(ProcessingParser.BlockContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#blockStatement}.
+ * @param ctx the parse tree
+ */
+ void enterBlockStatement(ProcessingParser.BlockStatementContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#blockStatement}.
+ * @param ctx the parse tree
+ */
+ void exitBlockStatement(ProcessingParser.BlockStatementContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#localVariableDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterLocalVariableDeclaration(ProcessingParser.LocalVariableDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#localVariableDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitLocalVariableDeclaration(ProcessingParser.LocalVariableDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#localTypeDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterLocalTypeDeclaration(ProcessingParser.LocalTypeDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#localTypeDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitLocalTypeDeclaration(ProcessingParser.LocalTypeDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#statement}.
+ * @param ctx the parse tree
+ */
+ void enterStatement(ProcessingParser.StatementContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#statement}.
+ * @param ctx the parse tree
+ */
+ void exitStatement(ProcessingParser.StatementContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#catchClause}.
+ * @param ctx the parse tree
+ */
+ void enterCatchClause(ProcessingParser.CatchClauseContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#catchClause}.
+ * @param ctx the parse tree
+ */
+ void exitCatchClause(ProcessingParser.CatchClauseContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#catchType}.
+ * @param ctx the parse tree
+ */
+ void enterCatchType(ProcessingParser.CatchTypeContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#catchType}.
+ * @param ctx the parse tree
+ */
+ void exitCatchType(ProcessingParser.CatchTypeContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#finallyBlock}.
+ * @param ctx the parse tree
+ */
+ void enterFinallyBlock(ProcessingParser.FinallyBlockContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#finallyBlock}.
+ * @param ctx the parse tree
+ */
+ void exitFinallyBlock(ProcessingParser.FinallyBlockContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#resourceSpecification}.
+ * @param ctx the parse tree
+ */
+ void enterResourceSpecification(ProcessingParser.ResourceSpecificationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#resourceSpecification}.
+ * @param ctx the parse tree
+ */
+ void exitResourceSpecification(ProcessingParser.ResourceSpecificationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#resources}.
+ * @param ctx the parse tree
+ */
+ void enterResources(ProcessingParser.ResourcesContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#resources}.
+ * @param ctx the parse tree
+ */
+ void exitResources(ProcessingParser.ResourcesContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#resource}.
+ * @param ctx the parse tree
+ */
+ void enterResource(ProcessingParser.ResourceContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#resource}.
+ * @param ctx the parse tree
+ */
+ void exitResource(ProcessingParser.ResourceContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#switchBlockStatementGroup}.
+ * @param ctx the parse tree
+ */
+ void enterSwitchBlockStatementGroup(ProcessingParser.SwitchBlockStatementGroupContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#switchBlockStatementGroup}.
+ * @param ctx the parse tree
+ */
+ void exitSwitchBlockStatementGroup(ProcessingParser.SwitchBlockStatementGroupContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#switchLabel}.
+ * @param ctx the parse tree
+ */
+ void enterSwitchLabel(ProcessingParser.SwitchLabelContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#switchLabel}.
+ * @param ctx the parse tree
+ */
+ void exitSwitchLabel(ProcessingParser.SwitchLabelContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#forControl}.
+ * @param ctx the parse tree
+ */
+ void enterForControl(ProcessingParser.ForControlContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#forControl}.
+ * @param ctx the parse tree
+ */
+ void exitForControl(ProcessingParser.ForControlContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#forInit}.
+ * @param ctx the parse tree
+ */
+ void enterForInit(ProcessingParser.ForInitContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#forInit}.
+ * @param ctx the parse tree
+ */
+ void exitForInit(ProcessingParser.ForInitContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#enhancedForControl}.
+ * @param ctx the parse tree
+ */
+ void enterEnhancedForControl(ProcessingParser.EnhancedForControlContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#enhancedForControl}.
+ * @param ctx the parse tree
+ */
+ void exitEnhancedForControl(ProcessingParser.EnhancedForControlContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#parExpression}.
+ * @param ctx the parse tree
+ */
+ void enterParExpression(ProcessingParser.ParExpressionContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#parExpression}.
+ * @param ctx the parse tree
+ */
+ void exitParExpression(ProcessingParser.ParExpressionContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#expressionList}.
+ * @param ctx the parse tree
+ */
+ void enterExpressionList(ProcessingParser.ExpressionListContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#expressionList}.
+ * @param ctx the parse tree
+ */
+ void exitExpressionList(ProcessingParser.ExpressionListContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#expression}.
+ * @param ctx the parse tree
+ */
+ void enterExpression(ProcessingParser.ExpressionContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#expression}.
+ * @param ctx the parse tree
+ */
+ void exitExpression(ProcessingParser.ExpressionContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#lambdaExpression}.
+ * @param ctx the parse tree
+ */
+ void enterLambdaExpression(ProcessingParser.LambdaExpressionContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#lambdaExpression}.
+ * @param ctx the parse tree
+ */
+ void exitLambdaExpression(ProcessingParser.LambdaExpressionContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#lambdaParameters}.
+ * @param ctx the parse tree
+ */
+ void enterLambdaParameters(ProcessingParser.LambdaParametersContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#lambdaParameters}.
+ * @param ctx the parse tree
+ */
+ void exitLambdaParameters(ProcessingParser.LambdaParametersContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#lambdaBody}.
+ * @param ctx the parse tree
+ */
+ void enterLambdaBody(ProcessingParser.LambdaBodyContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#lambdaBody}.
+ * @param ctx the parse tree
+ */
+ void exitLambdaBody(ProcessingParser.LambdaBodyContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#primary}.
+ * @param ctx the parse tree
+ */
+ void enterPrimary(ProcessingParser.PrimaryContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#primary}.
+ * @param ctx the parse tree
+ */
+ void exitPrimary(ProcessingParser.PrimaryContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#classType}.
+ * @param ctx the parse tree
+ */
+ void enterClassType(ProcessingParser.ClassTypeContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#classType}.
+ * @param ctx the parse tree
+ */
+ void exitClassType(ProcessingParser.ClassTypeContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#creator}.
+ * @param ctx the parse tree
+ */
+ void enterCreator(ProcessingParser.CreatorContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#creator}.
+ * @param ctx the parse tree
+ */
+ void exitCreator(ProcessingParser.CreatorContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#createdName}.
+ * @param ctx the parse tree
+ */
+ void enterCreatedName(ProcessingParser.CreatedNameContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#createdName}.
+ * @param ctx the parse tree
+ */
+ void exitCreatedName(ProcessingParser.CreatedNameContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#innerCreator}.
+ * @param ctx the parse tree
+ */
+ void enterInnerCreator(ProcessingParser.InnerCreatorContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#innerCreator}.
+ * @param ctx the parse tree
+ */
+ void exitInnerCreator(ProcessingParser.InnerCreatorContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#arrayCreatorRest}.
+ * @param ctx the parse tree
+ */
+ void enterArrayCreatorRest(ProcessingParser.ArrayCreatorRestContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#arrayCreatorRest}.
+ * @param ctx the parse tree
+ */
+ void exitArrayCreatorRest(ProcessingParser.ArrayCreatorRestContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#classCreatorRest}.
+ * @param ctx the parse tree
+ */
+ void enterClassCreatorRest(ProcessingParser.ClassCreatorRestContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#classCreatorRest}.
+ * @param ctx the parse tree
+ */
+ void exitClassCreatorRest(ProcessingParser.ClassCreatorRestContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#explicitGenericInvocation}.
+ * @param ctx the parse tree
+ */
+ void enterExplicitGenericInvocation(ProcessingParser.ExplicitGenericInvocationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#explicitGenericInvocation}.
+ * @param ctx the parse tree
+ */
+ void exitExplicitGenericInvocation(ProcessingParser.ExplicitGenericInvocationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#typeArgumentsOrDiamond}.
+ * @param ctx the parse tree
+ */
+ void enterTypeArgumentsOrDiamond(ProcessingParser.TypeArgumentsOrDiamondContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#typeArgumentsOrDiamond}.
+ * @param ctx the parse tree
+ */
+ void exitTypeArgumentsOrDiamond(ProcessingParser.TypeArgumentsOrDiamondContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#nonWildcardTypeArgumentsOrDiamond}.
+ * @param ctx the parse tree
+ */
+ void enterNonWildcardTypeArgumentsOrDiamond(ProcessingParser.NonWildcardTypeArgumentsOrDiamondContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#nonWildcardTypeArgumentsOrDiamond}.
+ * @param ctx the parse tree
+ */
+ void exitNonWildcardTypeArgumentsOrDiamond(ProcessingParser.NonWildcardTypeArgumentsOrDiamondContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#nonWildcardTypeArguments}.
+ * @param ctx the parse tree
+ */
+ void enterNonWildcardTypeArguments(ProcessingParser.NonWildcardTypeArgumentsContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#nonWildcardTypeArguments}.
+ * @param ctx the parse tree
+ */
+ void exitNonWildcardTypeArguments(ProcessingParser.NonWildcardTypeArgumentsContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#typeList}.
+ * @param ctx the parse tree
+ */
+ void enterTypeList(ProcessingParser.TypeListContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#typeList}.
+ * @param ctx the parse tree
+ */
+ void exitTypeList(ProcessingParser.TypeListContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#typeType}.
+ * @param ctx the parse tree
+ */
+ void enterTypeType(ProcessingParser.TypeTypeContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#typeType}.
+ * @param ctx the parse tree
+ */
+ void exitTypeType(ProcessingParser.TypeTypeContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#typeArguments}.
+ * @param ctx the parse tree
+ */
+ void enterTypeArguments(ProcessingParser.TypeArgumentsContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#typeArguments}.
+ * @param ctx the parse tree
+ */
+ void exitTypeArguments(ProcessingParser.TypeArgumentsContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#superSuffix}.
+ * @param ctx the parse tree
+ */
+ void enterSuperSuffix(ProcessingParser.SuperSuffixContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#superSuffix}.
+ * @param ctx the parse tree
+ */
+ void exitSuperSuffix(ProcessingParser.SuperSuffixContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#explicitGenericInvocationSuffix}.
+ * @param ctx the parse tree
+ */
+ void enterExplicitGenericInvocationSuffix(ProcessingParser.ExplicitGenericInvocationSuffixContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#explicitGenericInvocationSuffix}.
+ * @param ctx the parse tree
+ */
+ void exitExplicitGenericInvocationSuffix(ProcessingParser.ExplicitGenericInvocationSuffixContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ProcessingParser#arguments}.
+ * @param ctx the parse tree
+ */
+ void enterArguments(ProcessingParser.ArgumentsContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ProcessingParser#arguments}.
+ * @param ctx the parse tree
+ */
+ void exitArguments(ProcessingParser.ArgumentsContext ctx);
+}
\ No newline at end of file
diff --git a/java/generated/processing/mode/java/preproc/ProcessingParser.java b/java/generated/processing/mode/java/preproc/ProcessingParser.java
new file mode 100644
index 000000000..d463a4324
--- /dev/null
+++ b/java/generated/processing/mode/java/preproc/ProcessingParser.java
@@ -0,0 +1,10591 @@
+// Generated from /Users/steftervelde/Source/Processing-Foundation/processing4/java/src/processing/mode/java/preproc/Processing.g4 by ANTLR 4.7.2
+package processing.mode.java.preproc;
+import org.antlr.v4.runtime.atn.*;
+import org.antlr.v4.runtime.dfa.DFA;
+import org.antlr.v4.runtime.*;
+import org.antlr.v4.runtime.misc.*;
+import org.antlr.v4.runtime.tree.*;
+import java.util.List;
+import java.util.Iterator;
+import java.util.ArrayList;
+
+@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"})
+public class ProcessingParser extends Parser {
+ static { RuntimeMetaData.checkVersion("4.7.2", RuntimeMetaData.VERSION); }
+
+ protected static final DFA[] _decisionToDFA;
+ protected static final PredictionContextCache _sharedContextCache =
+ new PredictionContextCache();
+ public static final int
+ T__0=1, HexColorLiteral=2, WS=3, COMMENT=4, LINE_COMMENT=5, CHAR_LITERAL=6,
+ ABSTRACT=7, ASSERT=8, BOOLEAN=9, BREAK=10, BYTE=11, CASE=12, CATCH=13,
+ CHAR=14, CLASS=15, CONST=16, CONTINUE=17, DEFAULT=18, DO=19, DOUBLE=20,
+ ELSE=21, ENUM=22, EXTENDS=23, FINAL=24, FINALLY=25, FLOAT=26, FOR=27,
+ IF=28, GOTO=29, IMPLEMENTS=30, IMPORT=31, INSTANCEOF=32, INT=33, INTERFACE=34,
+ LONG=35, NATIVE=36, NEW=37, PACKAGE=38, PRIVATE=39, PROTECTED=40, PUBLIC=41,
+ RETURN=42, SHORT=43, STATIC=44, STRICTFP=45, SUPER=46, SWITCH=47, SYNCHRONIZED=48,
+ THIS=49, THROW=50, THROWS=51, TRANSIENT=52, TRY=53, VAR=54, VOID=55, VOLATILE=56,
+ WHILE=57, DECIMAL_LITERAL=58, HEX_LITERAL=59, OCT_LITERAL=60, BINARY_LITERAL=61,
+ FLOAT_LITERAL=62, HEX_FLOAT_LITERAL=63, BOOL_LITERAL=64, STRING_LITERAL=65,
+ MULTI_STRING_LIT=66, NULL_LITERAL=67, LPAREN=68, RPAREN=69, LBRACE=70,
+ RBRACE=71, LBRACK=72, RBRACK=73, SEMI=74, COMMA=75, DOT=76, ASSIGN=77,
+ GT=78, LT=79, BANG=80, TILDE=81, QUESTION=82, COLON=83, EQUAL=84, LE=85,
+ GE=86, NOTEQUAL=87, AND=88, OR=89, INC=90, DEC=91, ADD=92, SUB=93, MUL=94,
+ DIV=95, BITAND=96, BITOR=97, CARET=98, MOD=99, ADD_ASSIGN=100, SUB_ASSIGN=101,
+ MUL_ASSIGN=102, DIV_ASSIGN=103, AND_ASSIGN=104, OR_ASSIGN=105, XOR_ASSIGN=106,
+ MOD_ASSIGN=107, LSHIFT_ASSIGN=108, RSHIFT_ASSIGN=109, URSHIFT_ASSIGN=110,
+ ARROW=111, COLONCOLON=112, AT=113, ELLIPSIS=114, IDENTIFIER=115;
+ public static final int
+ RULE_processingSketch = 0, RULE_javaProcessingSketch = 1, RULE_staticProcessingSketch = 2,
+ RULE_activeProcessingSketch = 3, RULE_warnMixedModes = 4, RULE_variableDeclaratorId = 5,
+ RULE_warnTypeAsVariableName = 6, RULE_methodCall = 7, RULE_functionWithPrimitiveTypeName = 8,
+ RULE_primitiveType = 9, RULE_colorPrimitiveType = 10, RULE_qualifiedName = 11,
+ RULE_literal = 12, RULE_hexColorLiteral = 13, RULE_compilationUnit = 14,
+ RULE_packageDeclaration = 15, RULE_importDeclaration = 16, RULE_typeDeclaration = 17,
+ RULE_modifier = 18, RULE_classOrInterfaceModifier = 19, RULE_variableModifier = 20,
+ RULE_classDeclaration = 21, RULE_typeParameters = 22, RULE_typeParameter = 23,
+ RULE_typeBound = 24, RULE_enumDeclaration = 25, RULE_enumConstants = 26,
+ RULE_enumConstant = 27, RULE_enumBodyDeclarations = 28, RULE_interfaceDeclaration = 29,
+ RULE_classBody = 30, RULE_interfaceBody = 31, RULE_classBodyDeclaration = 32,
+ RULE_memberDeclaration = 33, RULE_methodDeclaration = 34, RULE_methodBody = 35,
+ RULE_typeTypeOrVoid = 36, RULE_genericMethodDeclaration = 37, RULE_genericConstructorDeclaration = 38,
+ RULE_constructorDeclaration = 39, RULE_fieldDeclaration = 40, RULE_interfaceBodyDeclaration = 41,
+ RULE_interfaceMemberDeclaration = 42, RULE_constDeclaration = 43, RULE_constantDeclarator = 44,
+ RULE_interfaceMethodDeclaration = 45, RULE_interfaceMethodModifier = 46,
+ RULE_genericInterfaceMethodDeclaration = 47, RULE_variableDeclarators = 48,
+ RULE_variableDeclarator = 49, RULE_variableInitializer = 50, RULE_arrayInitializer = 51,
+ RULE_classOrInterfaceType = 52, RULE_typeArgument = 53, RULE_qualifiedNameList = 54,
+ RULE_formalParameters = 55, RULE_formalParameterList = 56, RULE_formalParameter = 57,
+ RULE_lastFormalParameter = 58, RULE_baseStringLiteral = 59, RULE_multilineStringLiteral = 60,
+ RULE_stringLiteral = 61, RULE_integerLiteral = 62, RULE_floatLiteral = 63,
+ RULE_annotation = 64, RULE_elementValuePairs = 65, RULE_elementValuePair = 66,
+ RULE_elementValue = 67, RULE_elementValueArrayInitializer = 68, RULE_annotationTypeDeclaration = 69,
+ RULE_annotationTypeBody = 70, RULE_annotationTypeElementDeclaration = 71,
+ RULE_annotationTypeElementRest = 72, RULE_annotationMethodOrConstantRest = 73,
+ RULE_annotationMethodRest = 74, RULE_annotationConstantRest = 75, RULE_defaultValue = 76,
+ RULE_block = 77, RULE_blockStatement = 78, RULE_localVariableDeclaration = 79,
+ RULE_localTypeDeclaration = 80, RULE_statement = 81, RULE_catchClause = 82,
+ RULE_catchType = 83, RULE_finallyBlock = 84, RULE_resourceSpecification = 85,
+ RULE_resources = 86, RULE_resource = 87, RULE_switchBlockStatementGroup = 88,
+ RULE_switchLabel = 89, RULE_forControl = 90, RULE_forInit = 91, RULE_enhancedForControl = 92,
+ RULE_parExpression = 93, RULE_expressionList = 94, RULE_expression = 95,
+ RULE_lambdaExpression = 96, RULE_lambdaParameters = 97, RULE_lambdaBody = 98,
+ RULE_primary = 99, RULE_classType = 100, RULE_creator = 101, RULE_createdName = 102,
+ RULE_innerCreator = 103, RULE_arrayCreatorRest = 104, RULE_classCreatorRest = 105,
+ RULE_explicitGenericInvocation = 106, RULE_typeArgumentsOrDiamond = 107,
+ RULE_nonWildcardTypeArgumentsOrDiamond = 108, RULE_nonWildcardTypeArguments = 109,
+ RULE_typeList = 110, RULE_typeType = 111, RULE_typeArguments = 112, RULE_superSuffix = 113,
+ RULE_explicitGenericInvocationSuffix = 114, RULE_arguments = 115;
+ private static String[] makeRuleNames() {
+ return new String[] {
+ "processingSketch", "javaProcessingSketch", "staticProcessingSketch",
+ "activeProcessingSketch", "warnMixedModes", "variableDeclaratorId", "warnTypeAsVariableName",
+ "methodCall", "functionWithPrimitiveTypeName", "primitiveType", "colorPrimitiveType",
+ "qualifiedName", "literal", "hexColorLiteral", "compilationUnit", "packageDeclaration",
+ "importDeclaration", "typeDeclaration", "modifier", "classOrInterfaceModifier",
+ "variableModifier", "classDeclaration", "typeParameters", "typeParameter",
+ "typeBound", "enumDeclaration", "enumConstants", "enumConstant", "enumBodyDeclarations",
+ "interfaceDeclaration", "classBody", "interfaceBody", "classBodyDeclaration",
+ "memberDeclaration", "methodDeclaration", "methodBody", "typeTypeOrVoid",
+ "genericMethodDeclaration", "genericConstructorDeclaration", "constructorDeclaration",
+ "fieldDeclaration", "interfaceBodyDeclaration", "interfaceMemberDeclaration",
+ "constDeclaration", "constantDeclarator", "interfaceMethodDeclaration",
+ "interfaceMethodModifier", "genericInterfaceMethodDeclaration", "variableDeclarators",
+ "variableDeclarator", "variableInitializer", "arrayInitializer", "classOrInterfaceType",
+ "typeArgument", "qualifiedNameList", "formalParameters", "formalParameterList",
+ "formalParameter", "lastFormalParameter", "baseStringLiteral", "multilineStringLiteral",
+ "stringLiteral", "integerLiteral", "floatLiteral", "annotation", "elementValuePairs",
+ "elementValuePair", "elementValue", "elementValueArrayInitializer", "annotationTypeDeclaration",
+ "annotationTypeBody", "annotationTypeElementDeclaration", "annotationTypeElementRest",
+ "annotationMethodOrConstantRest", "annotationMethodRest", "annotationConstantRest",
+ "defaultValue", "block", "blockStatement", "localVariableDeclaration",
+ "localTypeDeclaration", "statement", "catchClause", "catchType", "finallyBlock",
+ "resourceSpecification", "resources", "resource", "switchBlockStatementGroup",
+ "switchLabel", "forControl", "forInit", "enhancedForControl", "parExpression",
+ "expressionList", "expression", "lambdaExpression", "lambdaParameters",
+ "lambdaBody", "primary", "classType", "creator", "createdName", "innerCreator",
+ "arrayCreatorRest", "classCreatorRest", "explicitGenericInvocation",
+ "typeArgumentsOrDiamond", "nonWildcardTypeArgumentsOrDiamond", "nonWildcardTypeArguments",
+ "typeList", "typeType", "typeArguments", "superSuffix", "explicitGenericInvocationSuffix",
+ "arguments"
+ };
+ }
+ public static final String[] ruleNames = makeRuleNames();
+
+ private static String[] makeLiteralNames() {
+ return new String[] {
+ null, "'color'", null, null, null, null, null, "'abstract'", "'assert'",
+ "'boolean'", "'break'", "'byte'", "'case'", "'catch'", "'char'", "'class'",
+ "'const'", "'continue'", "'default'", "'do'", "'double'", "'else'", "'enum'",
+ "'extends'", "'final'", "'finally'", "'float'", "'for'", "'if'", "'goto'",
+ "'implements'", "'import'", "'instanceof'", "'int'", "'interface'", "'long'",
+ "'native'", "'new'", "'package'", "'private'", "'protected'", "'public'",
+ "'return'", "'short'", "'static'", "'strictfp'", "'super'", "'switch'",
+ "'synchronized'", "'this'", "'throw'", "'throws'", "'transient'", "'try'",
+ "'var'", "'void'", "'volatile'", "'while'", null, null, null, null, null,
+ null, null, null, null, "'null'", "'('", "')'", "'{'", "'}'", "'['",
+ "']'", "';'", "','", "'.'", "'='", "'>'", "'<'", "'!'", "'~'", "'?'",
+ "':'", "'=='", "'<='", "'>='", "'!='", "'&&'", "'||'", "'++'", "'--'",
+ "'+'", "'-'", "'*'", "'/'", "'&'", "'|'", "'^'", "'%'", "'+='", "'-='",
+ "'*='", "'/='", "'&='", "'|='", "'^='", "'%='", "'<<='", "'>>='", "'>>>='",
+ "'->'", "'::'", "'@'", "'...'"
+ };
+ }
+ private static final String[] _LITERAL_NAMES = makeLiteralNames();
+ private static String[] makeSymbolicNames() {
+ return new String[] {
+ null, null, "HexColorLiteral", "WS", "COMMENT", "LINE_COMMENT", "CHAR_LITERAL",
+ "ABSTRACT", "ASSERT", "BOOLEAN", "BREAK", "BYTE", "CASE", "CATCH", "CHAR",
+ "CLASS", "CONST", "CONTINUE", "DEFAULT", "DO", "DOUBLE", "ELSE", "ENUM",
+ "EXTENDS", "FINAL", "FINALLY", "FLOAT", "FOR", "IF", "GOTO", "IMPLEMENTS",
+ "IMPORT", "INSTANCEOF", "INT", "INTERFACE", "LONG", "NATIVE", "NEW",
+ "PACKAGE", "PRIVATE", "PROTECTED", "PUBLIC", "RETURN", "SHORT", "STATIC",
+ "STRICTFP", "SUPER", "SWITCH", "SYNCHRONIZED", "THIS", "THROW", "THROWS",
+ "TRANSIENT", "TRY", "VAR", "VOID", "VOLATILE", "WHILE", "DECIMAL_LITERAL",
+ "HEX_LITERAL", "OCT_LITERAL", "BINARY_LITERAL", "FLOAT_LITERAL", "HEX_FLOAT_LITERAL",
+ "BOOL_LITERAL", "STRING_LITERAL", "MULTI_STRING_LIT", "NULL_LITERAL",
+ "LPAREN", "RPAREN", "LBRACE", "RBRACE", "LBRACK", "RBRACK", "SEMI", "COMMA",
+ "DOT", "ASSIGN", "GT", "LT", "BANG", "TILDE", "QUESTION", "COLON", "EQUAL",
+ "LE", "GE", "NOTEQUAL", "AND", "OR", "INC", "DEC", "ADD", "SUB", "MUL",
+ "DIV", "BITAND", "BITOR", "CARET", "MOD", "ADD_ASSIGN", "SUB_ASSIGN",
+ "MUL_ASSIGN", "DIV_ASSIGN", "AND_ASSIGN", "OR_ASSIGN", "XOR_ASSIGN",
+ "MOD_ASSIGN", "LSHIFT_ASSIGN", "RSHIFT_ASSIGN", "URSHIFT_ASSIGN", "ARROW",
+ "COLONCOLON", "AT", "ELLIPSIS", "IDENTIFIER"
+ };
+ }
+ private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames();
+ public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES);
+
+ /**
+ * @deprecated Use {@link #VOCABULARY} instead.
+ */
+ @Deprecated
+ public static final String[] tokenNames;
+ static {
+ tokenNames = new String[_SYMBOLIC_NAMES.length];
+ for (int i = 0; i < tokenNames.length; i++) {
+ tokenNames[i] = VOCABULARY.getLiteralName(i);
+ if (tokenNames[i] == null) {
+ tokenNames[i] = VOCABULARY.getSymbolicName(i);
+ }
+
+ if (tokenNames[i] == null) {
+ tokenNames[i] = "";
+ }
+ }
+ }
+
+ @Override
+ @Deprecated
+ public String[] getTokenNames() {
+ return tokenNames;
+ }
+
+ @Override
+
+ public Vocabulary getVocabulary() {
+ return VOCABULARY;
+ }
+
+ @Override
+ public String getGrammarFileName() { return "Processing.g4"; }
+
+ @Override
+ public String[] getRuleNames() { return ruleNames; }
+
+ @Override
+ public String getSerializedATN() { return _serializedATN; }
+
+ @Override
+ public ATN getATN() { return _ATN; }
+
+ public ProcessingParser(TokenStream input) {
+ super(input);
+ _interp = new ParserATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache);
+ }
+
+ public static class ProcessingSketchContext extends ParserRuleContext {
+ public StaticProcessingSketchContext staticProcessingSketch() {
+ return getRuleContext(StaticProcessingSketchContext.class,0);
+ }
+ public JavaProcessingSketchContext javaProcessingSketch() {
+ return getRuleContext(JavaProcessingSketchContext.class,0);
+ }
+ public ActiveProcessingSketchContext activeProcessingSketch() {
+ return getRuleContext(ActiveProcessingSketchContext.class,0);
+ }
+ public ProcessingSketchContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_processingSketch; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterProcessingSketch(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitProcessingSketch(this);
+ }
+ }
+
+ public final ProcessingSketchContext processingSketch() throws RecognitionException {
+ ProcessingSketchContext _localctx = new ProcessingSketchContext(_ctx, getState());
+ enterRule(_localctx, 0, RULE_processingSketch);
+ try {
+ setState(235);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,0,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(232);
+ staticProcessingSketch();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(233);
+ javaProcessingSketch();
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(234);
+ activeProcessingSketch();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class JavaProcessingSketchContext extends ParserRuleContext {
+ public TerminalNode EOF() { return getToken(ProcessingParser.EOF, 0); }
+ public PackageDeclarationContext packageDeclaration() {
+ return getRuleContext(PackageDeclarationContext.class,0);
+ }
+ public List importDeclaration() {
+ return getRuleContexts(ImportDeclarationContext.class);
+ }
+ public ImportDeclarationContext importDeclaration(int i) {
+ return getRuleContext(ImportDeclarationContext.class,i);
+ }
+ public List typeDeclaration() {
+ return getRuleContexts(TypeDeclarationContext.class);
+ }
+ public TypeDeclarationContext typeDeclaration(int i) {
+ return getRuleContext(TypeDeclarationContext.class,i);
+ }
+ public JavaProcessingSketchContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_javaProcessingSketch; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterJavaProcessingSketch(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitJavaProcessingSketch(this);
+ }
+ }
+
+ public final JavaProcessingSketchContext javaProcessingSketch() throws RecognitionException {
+ JavaProcessingSketchContext _localctx = new JavaProcessingSketchContext(_ctx, getState());
+ enterRule(_localctx, 2, RULE_javaProcessingSketch);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(238);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,1,_ctx) ) {
+ case 1:
+ {
+ setState(237);
+ packageDeclaration();
+ }
+ break;
+ }
+ setState(243);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==IMPORT) {
+ {
+ {
+ setState(240);
+ importDeclaration();
+ }
+ }
+ setState(245);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(247);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ do {
+ {
+ {
+ setState(246);
+ typeDeclaration();
+ }
+ }
+ setState(249);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ } while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABSTRACT) | (1L << CLASS) | (1L << ENUM) | (1L << FINAL) | (1L << INTERFACE) | (1L << PRIVATE) | (1L << PROTECTED) | (1L << PUBLIC) | (1L << STATIC) | (1L << STRICTFP))) != 0) || _la==SEMI || _la==AT );
+ setState(251);
+ match(EOF);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class StaticProcessingSketchContext extends ParserRuleContext {
+ public TerminalNode EOF() { return getToken(ProcessingParser.EOF, 0); }
+ public List importDeclaration() {
+ return getRuleContexts(ImportDeclarationContext.class);
+ }
+ public ImportDeclarationContext importDeclaration(int i) {
+ return getRuleContext(ImportDeclarationContext.class,i);
+ }
+ public List blockStatement() {
+ return getRuleContexts(BlockStatementContext.class);
+ }
+ public BlockStatementContext blockStatement(int i) {
+ return getRuleContext(BlockStatementContext.class,i);
+ }
+ public List typeDeclaration() {
+ return getRuleContexts(TypeDeclarationContext.class);
+ }
+ public TypeDeclarationContext typeDeclaration(int i) {
+ return getRuleContext(TypeDeclarationContext.class,i);
+ }
+ public StaticProcessingSketchContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_staticProcessingSketch; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterStaticProcessingSketch(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitStaticProcessingSketch(this);
+ }
+ }
+
+ public final StaticProcessingSketchContext staticProcessingSketch() throws RecognitionException {
+ StaticProcessingSketchContext _localctx = new StaticProcessingSketchContext(_ctx, getState());
+ enterRule(_localctx, 4, RULE_staticProcessingSketch);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(258);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__0) | (1L << HexColorLiteral) | (1L << CHAR_LITERAL) | (1L << ABSTRACT) | (1L << ASSERT) | (1L << BOOLEAN) | (1L << BREAK) | (1L << BYTE) | (1L << CHAR) | (1L << CLASS) | (1L << CONTINUE) | (1L << DO) | (1L << DOUBLE) | (1L << ENUM) | (1L << FINAL) | (1L << FLOAT) | (1L << FOR) | (1L << IF) | (1L << IMPORT) | (1L << INT) | (1L << INTERFACE) | (1L << LONG) | (1L << NEW) | (1L << PRIVATE) | (1L << PROTECTED) | (1L << PUBLIC) | (1L << RETURN) | (1L << SHORT) | (1L << STATIC) | (1L << STRICTFP) | (1L << SUPER) | (1L << SWITCH) | (1L << SYNCHRONIZED) | (1L << THIS) | (1L << THROW) | (1L << TRY) | (1L << VAR) | (1L << VOID) | (1L << WHILE) | (1L << DECIMAL_LITERAL) | (1L << HEX_LITERAL) | (1L << OCT_LITERAL) | (1L << BINARY_LITERAL) | (1L << FLOAT_LITERAL) | (1L << HEX_FLOAT_LITERAL))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (BOOL_LITERAL - 64)) | (1L << (STRING_LITERAL - 64)) | (1L << (MULTI_STRING_LIT - 64)) | (1L << (NULL_LITERAL - 64)) | (1L << (LPAREN - 64)) | (1L << (LBRACE - 64)) | (1L << (SEMI - 64)) | (1L << (LT - 64)) | (1L << (BANG - 64)) | (1L << (TILDE - 64)) | (1L << (INC - 64)) | (1L << (DEC - 64)) | (1L << (ADD - 64)) | (1L << (SUB - 64)) | (1L << (AT - 64)) | (1L << (IDENTIFIER - 64)))) != 0)) {
+ {
+ setState(256);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,4,_ctx) ) {
+ case 1:
+ {
+ setState(253);
+ importDeclaration();
+ }
+ break;
+ case 2:
+ {
+ setState(254);
+ blockStatement();
+ }
+ break;
+ case 3:
+ {
+ setState(255);
+ typeDeclaration();
+ }
+ break;
+ }
+ }
+ setState(260);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(261);
+ match(EOF);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class ActiveProcessingSketchContext extends ParserRuleContext {
+ public TerminalNode EOF() { return getToken(ProcessingParser.EOF, 0); }
+ public List importDeclaration() {
+ return getRuleContexts(ImportDeclarationContext.class);
+ }
+ public ImportDeclarationContext importDeclaration(int i) {
+ return getRuleContext(ImportDeclarationContext.class,i);
+ }
+ public List classBodyDeclaration() {
+ return getRuleContexts(ClassBodyDeclarationContext.class);
+ }
+ public ClassBodyDeclarationContext classBodyDeclaration(int i) {
+ return getRuleContext(ClassBodyDeclarationContext.class,i);
+ }
+ public ActiveProcessingSketchContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_activeProcessingSketch; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterActiveProcessingSketch(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitActiveProcessingSketch(this);
+ }
+ }
+
+ public final ActiveProcessingSketchContext activeProcessingSketch() throws RecognitionException {
+ ActiveProcessingSketchContext _localctx = new ActiveProcessingSketchContext(_ctx, getState());
+ enterRule(_localctx, 6, RULE_activeProcessingSketch);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(267);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__0) | (1L << ABSTRACT) | (1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << CLASS) | (1L << DOUBLE) | (1L << ENUM) | (1L << FINAL) | (1L << FLOAT) | (1L << IMPORT) | (1L << INT) | (1L << INTERFACE) | (1L << LONG) | (1L << NATIVE) | (1L << PRIVATE) | (1L << PROTECTED) | (1L << PUBLIC) | (1L << SHORT) | (1L << STATIC) | (1L << STRICTFP) | (1L << SYNCHRONIZED) | (1L << TRANSIENT) | (1L << VAR) | (1L << VOID) | (1L << VOLATILE))) != 0) || ((((_la - 70)) & ~0x3f) == 0 && ((1L << (_la - 70)) & ((1L << (LBRACE - 70)) | (1L << (SEMI - 70)) | (1L << (LT - 70)) | (1L << (AT - 70)) | (1L << (IDENTIFIER - 70)))) != 0)) {
+ {
+ setState(265);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,6,_ctx) ) {
+ case 1:
+ {
+ setState(263);
+ importDeclaration();
+ }
+ break;
+ case 2:
+ {
+ setState(264);
+ classBodyDeclaration();
+ }
+ break;
+ }
+ }
+ setState(269);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(270);
+ match(EOF);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class WarnMixedModesContext extends ParserRuleContext {
+ public List blockStatement() {
+ return getRuleContexts(BlockStatementContext.class);
+ }
+ public BlockStatementContext blockStatement(int i) {
+ return getRuleContext(BlockStatementContext.class,i);
+ }
+ public List classBodyDeclaration() {
+ return getRuleContexts(ClassBodyDeclarationContext.class);
+ }
+ public ClassBodyDeclarationContext classBodyDeclaration(int i) {
+ return getRuleContext(ClassBodyDeclarationContext.class,i);
+ }
+ public List importDeclaration() {
+ return getRuleContexts(ImportDeclarationContext.class);
+ }
+ public ImportDeclarationContext importDeclaration(int i) {
+ return getRuleContext(ImportDeclarationContext.class,i);
+ }
+ public WarnMixedModesContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_warnMixedModes; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterWarnMixedModes(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitWarnMixedModes(this);
+ }
+ }
+
+ public final WarnMixedModesContext warnMixedModes() throws RecognitionException {
+ WarnMixedModesContext _localctx = new WarnMixedModesContext(_ctx, getState());
+ enterRule(_localctx, 8, RULE_warnMixedModes);
+ int _la;
+ try {
+ int _alt;
+ setState(308);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,16,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(277);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,9,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ setState(275);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,8,_ctx) ) {
+ case 1:
+ {
+ setState(272);
+ importDeclaration();
+ }
+ break;
+ case 2:
+ {
+ setState(273);
+ classBodyDeclaration();
+ }
+ break;
+ case 3:
+ {
+ setState(274);
+ blockStatement();
+ }
+ break;
+ }
+ }
+ }
+ setState(279);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,9,_ctx);
+ }
+ setState(280);
+ blockStatement();
+ setState(281);
+ classBodyDeclaration();
+ setState(287);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__0) | (1L << HexColorLiteral) | (1L << CHAR_LITERAL) | (1L << ABSTRACT) | (1L << ASSERT) | (1L << BOOLEAN) | (1L << BREAK) | (1L << BYTE) | (1L << CHAR) | (1L << CLASS) | (1L << CONTINUE) | (1L << DO) | (1L << DOUBLE) | (1L << ENUM) | (1L << FINAL) | (1L << FLOAT) | (1L << FOR) | (1L << IF) | (1L << IMPORT) | (1L << INT) | (1L << INTERFACE) | (1L << LONG) | (1L << NATIVE) | (1L << NEW) | (1L << PRIVATE) | (1L << PROTECTED) | (1L << PUBLIC) | (1L << RETURN) | (1L << SHORT) | (1L << STATIC) | (1L << STRICTFP) | (1L << SUPER) | (1L << SWITCH) | (1L << SYNCHRONIZED) | (1L << THIS) | (1L << THROW) | (1L << TRANSIENT) | (1L << TRY) | (1L << VAR) | (1L << VOID) | (1L << VOLATILE) | (1L << WHILE) | (1L << DECIMAL_LITERAL) | (1L << HEX_LITERAL) | (1L << OCT_LITERAL) | (1L << BINARY_LITERAL) | (1L << FLOAT_LITERAL) | (1L << HEX_FLOAT_LITERAL))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (BOOL_LITERAL - 64)) | (1L << (STRING_LITERAL - 64)) | (1L << (MULTI_STRING_LIT - 64)) | (1L << (NULL_LITERAL - 64)) | (1L << (LPAREN - 64)) | (1L << (LBRACE - 64)) | (1L << (SEMI - 64)) | (1L << (LT - 64)) | (1L << (BANG - 64)) | (1L << (TILDE - 64)) | (1L << (INC - 64)) | (1L << (DEC - 64)) | (1L << (ADD - 64)) | (1L << (SUB - 64)) | (1L << (AT - 64)) | (1L << (IDENTIFIER - 64)))) != 0)) {
+ {
+ setState(285);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,10,_ctx) ) {
+ case 1:
+ {
+ setState(282);
+ importDeclaration();
+ }
+ break;
+ case 2:
+ {
+ setState(283);
+ classBodyDeclaration();
+ }
+ break;
+ case 3:
+ {
+ setState(284);
+ blockStatement();
+ }
+ break;
+ }
+ }
+ setState(289);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(295);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,13,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ setState(293);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,12,_ctx) ) {
+ case 1:
+ {
+ setState(290);
+ importDeclaration();
+ }
+ break;
+ case 2:
+ {
+ setState(291);
+ classBodyDeclaration();
+ }
+ break;
+ case 3:
+ {
+ setState(292);
+ blockStatement();
+ }
+ break;
+ }
+ }
+ }
+ setState(297);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,13,_ctx);
+ }
+ setState(298);
+ classBodyDeclaration();
+ setState(299);
+ blockStatement();
+ setState(305);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__0) | (1L << HexColorLiteral) | (1L << CHAR_LITERAL) | (1L << ABSTRACT) | (1L << ASSERT) | (1L << BOOLEAN) | (1L << BREAK) | (1L << BYTE) | (1L << CHAR) | (1L << CLASS) | (1L << CONTINUE) | (1L << DO) | (1L << DOUBLE) | (1L << ENUM) | (1L << FINAL) | (1L << FLOAT) | (1L << FOR) | (1L << IF) | (1L << IMPORT) | (1L << INT) | (1L << INTERFACE) | (1L << LONG) | (1L << NATIVE) | (1L << NEW) | (1L << PRIVATE) | (1L << PROTECTED) | (1L << PUBLIC) | (1L << RETURN) | (1L << SHORT) | (1L << STATIC) | (1L << STRICTFP) | (1L << SUPER) | (1L << SWITCH) | (1L << SYNCHRONIZED) | (1L << THIS) | (1L << THROW) | (1L << TRANSIENT) | (1L << TRY) | (1L << VAR) | (1L << VOID) | (1L << VOLATILE) | (1L << WHILE) | (1L << DECIMAL_LITERAL) | (1L << HEX_LITERAL) | (1L << OCT_LITERAL) | (1L << BINARY_LITERAL) | (1L << FLOAT_LITERAL) | (1L << HEX_FLOAT_LITERAL))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (BOOL_LITERAL - 64)) | (1L << (STRING_LITERAL - 64)) | (1L << (MULTI_STRING_LIT - 64)) | (1L << (NULL_LITERAL - 64)) | (1L << (LPAREN - 64)) | (1L << (LBRACE - 64)) | (1L << (SEMI - 64)) | (1L << (LT - 64)) | (1L << (BANG - 64)) | (1L << (TILDE - 64)) | (1L << (INC - 64)) | (1L << (DEC - 64)) | (1L << (ADD - 64)) | (1L << (SUB - 64)) | (1L << (AT - 64)) | (1L << (IDENTIFIER - 64)))) != 0)) {
+ {
+ setState(303);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,14,_ctx) ) {
+ case 1:
+ {
+ setState(300);
+ importDeclaration();
+ }
+ break;
+ case 2:
+ {
+ setState(301);
+ classBodyDeclaration();
+ }
+ break;
+ case 3:
+ {
+ setState(302);
+ blockStatement();
+ }
+ break;
+ }
+ }
+ setState(307);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class VariableDeclaratorIdContext extends ParserRuleContext {
+ public WarnTypeAsVariableNameContext warnTypeAsVariableName() {
+ return getRuleContext(WarnTypeAsVariableNameContext.class,0);
+ }
+ public TerminalNode IDENTIFIER() { return getToken(ProcessingParser.IDENTIFIER, 0); }
+ public List LBRACK() { return getTokens(ProcessingParser.LBRACK); }
+ public TerminalNode LBRACK(int i) {
+ return getToken(ProcessingParser.LBRACK, i);
+ }
+ public List RBRACK() { return getTokens(ProcessingParser.RBRACK); }
+ public TerminalNode RBRACK(int i) {
+ return getToken(ProcessingParser.RBRACK, i);
+ }
+ public VariableDeclaratorIdContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_variableDeclaratorId; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterVariableDeclaratorId(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitVariableDeclaratorId(this);
+ }
+ }
+
+ public final VariableDeclaratorIdContext variableDeclaratorId() throws RecognitionException {
+ VariableDeclaratorIdContext _localctx = new VariableDeclaratorIdContext(_ctx, getState());
+ enterRule(_localctx, 10, RULE_variableDeclaratorId);
+ int _la;
+ try {
+ setState(319);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case T__0:
+ case BOOLEAN:
+ case BYTE:
+ case CHAR:
+ case DOUBLE:
+ case FLOAT:
+ case INT:
+ case LONG:
+ case SHORT:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(310);
+ warnTypeAsVariableName();
+ }
+ break;
+ case IDENTIFIER:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(311);
+ match(IDENTIFIER);
+ setState(316);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==LBRACK) {
+ {
+ {
+ setState(312);
+ match(LBRACK);
+ setState(313);
+ match(RBRACK);
+ }
+ }
+ setState(318);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class WarnTypeAsVariableNameContext extends ParserRuleContext {
+ public PrimitiveTypeContext primitiveType;
+ public PrimitiveTypeContext primitiveType() {
+ return getRuleContext(PrimitiveTypeContext.class,0);
+ }
+ public List LBRACK() { return getTokens(ProcessingParser.LBRACK); }
+ public TerminalNode LBRACK(int i) {
+ return getToken(ProcessingParser.LBRACK, i);
+ }
+ public List RBRACK() { return getTokens(ProcessingParser.RBRACK); }
+ public TerminalNode RBRACK(int i) {
+ return getToken(ProcessingParser.RBRACK, i);
+ }
+ public WarnTypeAsVariableNameContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_warnTypeAsVariableName; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterWarnTypeAsVariableName(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitWarnTypeAsVariableName(this);
+ }
+ }
+
+ public final WarnTypeAsVariableNameContext warnTypeAsVariableName() throws RecognitionException {
+ WarnTypeAsVariableNameContext _localctx = new WarnTypeAsVariableNameContext(_ctx, getState());
+ enterRule(_localctx, 12, RULE_warnTypeAsVariableName);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(321);
+ ((WarnTypeAsVariableNameContext)_localctx).primitiveType = primitiveType();
+ setState(326);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==LBRACK) {
+ {
+ {
+ setState(322);
+ match(LBRACK);
+ setState(323);
+ match(RBRACK);
+ }
+ }
+ setState(328);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+
+ notifyErrorListeners("Type names are not allowed as variable names: "+(((WarnTypeAsVariableNameContext)_localctx).primitiveType!=null?_input.getText(((WarnTypeAsVariableNameContext)_localctx).primitiveType.start,((WarnTypeAsVariableNameContext)_localctx).primitiveType.stop):null));
+
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class MethodCallContext extends ParserRuleContext {
+ public FunctionWithPrimitiveTypeNameContext functionWithPrimitiveTypeName() {
+ return getRuleContext(FunctionWithPrimitiveTypeNameContext.class,0);
+ }
+ public TerminalNode IDENTIFIER() { return getToken(ProcessingParser.IDENTIFIER, 0); }
+ public TerminalNode LPAREN() { return getToken(ProcessingParser.LPAREN, 0); }
+ public TerminalNode RPAREN() { return getToken(ProcessingParser.RPAREN, 0); }
+ public ExpressionListContext expressionList() {
+ return getRuleContext(ExpressionListContext.class,0);
+ }
+ public TerminalNode THIS() { return getToken(ProcessingParser.THIS, 0); }
+ public TerminalNode SUPER() { return getToken(ProcessingParser.SUPER, 0); }
+ public MethodCallContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_methodCall; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterMethodCall(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitMethodCall(this);
+ }
+ }
+
+ public final MethodCallContext methodCall() throws RecognitionException {
+ MethodCallContext _localctx = new MethodCallContext(_ctx, getState());
+ enterRule(_localctx, 14, RULE_methodCall);
+ int _la;
+ try {
+ setState(350);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case T__0:
+ case BOOLEAN:
+ case BYTE:
+ case CHAR:
+ case FLOAT:
+ case INT:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(331);
+ functionWithPrimitiveTypeName();
+ }
+ break;
+ case IDENTIFIER:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(332);
+ match(IDENTIFIER);
+ setState(333);
+ match(LPAREN);
+ setState(335);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__0) | (1L << HexColorLiteral) | (1L << CHAR_LITERAL) | (1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VAR) | (1L << VOID) | (1L << DECIMAL_LITERAL) | (1L << HEX_LITERAL) | (1L << OCT_LITERAL) | (1L << BINARY_LITERAL) | (1L << FLOAT_LITERAL) | (1L << HEX_FLOAT_LITERAL))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (BOOL_LITERAL - 64)) | (1L << (STRING_LITERAL - 64)) | (1L << (MULTI_STRING_LIT - 64)) | (1L << (NULL_LITERAL - 64)) | (1L << (LPAREN - 64)) | (1L << (LT - 64)) | (1L << (BANG - 64)) | (1L << (TILDE - 64)) | (1L << (INC - 64)) | (1L << (DEC - 64)) | (1L << (ADD - 64)) | (1L << (SUB - 64)) | (1L << (AT - 64)) | (1L << (IDENTIFIER - 64)))) != 0)) {
+ {
+ setState(334);
+ expressionList();
+ }
+ }
+
+ setState(337);
+ match(RPAREN);
+ }
+ break;
+ case THIS:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(338);
+ match(THIS);
+ setState(339);
+ match(LPAREN);
+ setState(341);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__0) | (1L << HexColorLiteral) | (1L << CHAR_LITERAL) | (1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VAR) | (1L << VOID) | (1L << DECIMAL_LITERAL) | (1L << HEX_LITERAL) | (1L << OCT_LITERAL) | (1L << BINARY_LITERAL) | (1L << FLOAT_LITERAL) | (1L << HEX_FLOAT_LITERAL))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (BOOL_LITERAL - 64)) | (1L << (STRING_LITERAL - 64)) | (1L << (MULTI_STRING_LIT - 64)) | (1L << (NULL_LITERAL - 64)) | (1L << (LPAREN - 64)) | (1L << (LT - 64)) | (1L << (BANG - 64)) | (1L << (TILDE - 64)) | (1L << (INC - 64)) | (1L << (DEC - 64)) | (1L << (ADD - 64)) | (1L << (SUB - 64)) | (1L << (AT - 64)) | (1L << (IDENTIFIER - 64)))) != 0)) {
+ {
+ setState(340);
+ expressionList();
+ }
+ }
+
+ setState(343);
+ match(RPAREN);
+ }
+ break;
+ case SUPER:
+ enterOuterAlt(_localctx, 4);
+ {
+ setState(344);
+ match(SUPER);
+ setState(345);
+ match(LPAREN);
+ setState(347);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__0) | (1L << HexColorLiteral) | (1L << CHAR_LITERAL) | (1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VAR) | (1L << VOID) | (1L << DECIMAL_LITERAL) | (1L << HEX_LITERAL) | (1L << OCT_LITERAL) | (1L << BINARY_LITERAL) | (1L << FLOAT_LITERAL) | (1L << HEX_FLOAT_LITERAL))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (BOOL_LITERAL - 64)) | (1L << (STRING_LITERAL - 64)) | (1L << (MULTI_STRING_LIT - 64)) | (1L << (NULL_LITERAL - 64)) | (1L << (LPAREN - 64)) | (1L << (LT - 64)) | (1L << (BANG - 64)) | (1L << (TILDE - 64)) | (1L << (INC - 64)) | (1L << (DEC - 64)) | (1L << (ADD - 64)) | (1L << (SUB - 64)) | (1L << (AT - 64)) | (1L << (IDENTIFIER - 64)))) != 0)) {
+ {
+ setState(346);
+ expressionList();
+ }
+ }
+
+ setState(349);
+ match(RPAREN);
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class FunctionWithPrimitiveTypeNameContext extends ParserRuleContext {
+ public TerminalNode LPAREN() { return getToken(ProcessingParser.LPAREN, 0); }
+ public TerminalNode RPAREN() { return getToken(ProcessingParser.RPAREN, 0); }
+ public TerminalNode BOOLEAN() { return getToken(ProcessingParser.BOOLEAN, 0); }
+ public TerminalNode BYTE() { return getToken(ProcessingParser.BYTE, 0); }
+ public TerminalNode CHAR() { return getToken(ProcessingParser.CHAR, 0); }
+ public TerminalNode FLOAT() { return getToken(ProcessingParser.FLOAT, 0); }
+ public TerminalNode INT() { return getToken(ProcessingParser.INT, 0); }
+ public ExpressionListContext expressionList() {
+ return getRuleContext(ExpressionListContext.class,0);
+ }
+ public FunctionWithPrimitiveTypeNameContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_functionWithPrimitiveTypeName; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterFunctionWithPrimitiveTypeName(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitFunctionWithPrimitiveTypeName(this);
+ }
+ }
+
+ public final FunctionWithPrimitiveTypeNameContext functionWithPrimitiveTypeName() throws RecognitionException {
+ FunctionWithPrimitiveTypeNameContext _localctx = new FunctionWithPrimitiveTypeNameContext(_ctx, getState());
+ enterRule(_localctx, 16, RULE_functionWithPrimitiveTypeName);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(352);
+ _la = _input.LA(1);
+ if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__0) | (1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << FLOAT) | (1L << INT))) != 0)) ) {
+ _errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ setState(353);
+ match(LPAREN);
+ setState(355);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__0) | (1L << HexColorLiteral) | (1L << CHAR_LITERAL) | (1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VAR) | (1L << VOID) | (1L << DECIMAL_LITERAL) | (1L << HEX_LITERAL) | (1L << OCT_LITERAL) | (1L << BINARY_LITERAL) | (1L << FLOAT_LITERAL) | (1L << HEX_FLOAT_LITERAL))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (BOOL_LITERAL - 64)) | (1L << (STRING_LITERAL - 64)) | (1L << (MULTI_STRING_LIT - 64)) | (1L << (NULL_LITERAL - 64)) | (1L << (LPAREN - 64)) | (1L << (LT - 64)) | (1L << (BANG - 64)) | (1L << (TILDE - 64)) | (1L << (INC - 64)) | (1L << (DEC - 64)) | (1L << (ADD - 64)) | (1L << (SUB - 64)) | (1L << (AT - 64)) | (1L << (IDENTIFIER - 64)))) != 0)) {
+ {
+ setState(354);
+ expressionList();
+ }
+ }
+
+ setState(357);
+ match(RPAREN);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class PrimitiveTypeContext extends ParserRuleContext {
+ public TerminalNode BOOLEAN() { return getToken(ProcessingParser.BOOLEAN, 0); }
+ public TerminalNode CHAR() { return getToken(ProcessingParser.CHAR, 0); }
+ public TerminalNode BYTE() { return getToken(ProcessingParser.BYTE, 0); }
+ public TerminalNode SHORT() { return getToken(ProcessingParser.SHORT, 0); }
+ public TerminalNode INT() { return getToken(ProcessingParser.INT, 0); }
+ public TerminalNode LONG() { return getToken(ProcessingParser.LONG, 0); }
+ public TerminalNode FLOAT() { return getToken(ProcessingParser.FLOAT, 0); }
+ public TerminalNode DOUBLE() { return getToken(ProcessingParser.DOUBLE, 0); }
+ public ColorPrimitiveTypeContext colorPrimitiveType() {
+ return getRuleContext(ColorPrimitiveTypeContext.class,0);
+ }
+ public PrimitiveTypeContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_primitiveType; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterPrimitiveType(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitPrimitiveType(this);
+ }
+ }
+
+ public final PrimitiveTypeContext primitiveType() throws RecognitionException {
+ PrimitiveTypeContext _localctx = new PrimitiveTypeContext(_ctx, getState());
+ enterRule(_localctx, 18, RULE_primitiveType);
+ try {
+ setState(368);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case BOOLEAN:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(359);
+ match(BOOLEAN);
+ }
+ break;
+ case CHAR:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(360);
+ match(CHAR);
+ }
+ break;
+ case BYTE:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(361);
+ match(BYTE);
+ }
+ break;
+ case SHORT:
+ enterOuterAlt(_localctx, 4);
+ {
+ setState(362);
+ match(SHORT);
+ }
+ break;
+ case INT:
+ enterOuterAlt(_localctx, 5);
+ {
+ setState(363);
+ match(INT);
+ }
+ break;
+ case LONG:
+ enterOuterAlt(_localctx, 6);
+ {
+ setState(364);
+ match(LONG);
+ }
+ break;
+ case FLOAT:
+ enterOuterAlt(_localctx, 7);
+ {
+ setState(365);
+ match(FLOAT);
+ }
+ break;
+ case DOUBLE:
+ enterOuterAlt(_localctx, 8);
+ {
+ setState(366);
+ match(DOUBLE);
+ }
+ break;
+ case T__0:
+ enterOuterAlt(_localctx, 9);
+ {
+ setState(367);
+ colorPrimitiveType();
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class ColorPrimitiveTypeContext extends ParserRuleContext {
+ public ColorPrimitiveTypeContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_colorPrimitiveType; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterColorPrimitiveType(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitColorPrimitiveType(this);
+ }
+ }
+
+ public final ColorPrimitiveTypeContext colorPrimitiveType() throws RecognitionException {
+ ColorPrimitiveTypeContext _localctx = new ColorPrimitiveTypeContext(_ctx, getState());
+ enterRule(_localctx, 20, RULE_colorPrimitiveType);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(370);
+ match(T__0);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class QualifiedNameContext extends ParserRuleContext {
+ public List IDENTIFIER() { return getTokens(ProcessingParser.IDENTIFIER); }
+ public TerminalNode IDENTIFIER(int i) {
+ return getToken(ProcessingParser.IDENTIFIER, i);
+ }
+ public List colorPrimitiveType() {
+ return getRuleContexts(ColorPrimitiveTypeContext.class);
+ }
+ public ColorPrimitiveTypeContext colorPrimitiveType(int i) {
+ return getRuleContext(ColorPrimitiveTypeContext.class,i);
+ }
+ public List DOT() { return getTokens(ProcessingParser.DOT); }
+ public TerminalNode DOT(int i) {
+ return getToken(ProcessingParser.DOT, i);
+ }
+ public QualifiedNameContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_qualifiedName; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterQualifiedName(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitQualifiedName(this);
+ }
+ }
+
+ public final QualifiedNameContext qualifiedName() throws RecognitionException {
+ QualifiedNameContext _localctx = new QualifiedNameContext(_ctx, getState());
+ enterRule(_localctx, 22, RULE_qualifiedName);
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(374);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case IDENTIFIER:
+ {
+ setState(372);
+ match(IDENTIFIER);
+ }
+ break;
+ case T__0:
+ {
+ setState(373);
+ colorPrimitiveType();
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ setState(383);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,28,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(376);
+ match(DOT);
+ setState(379);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case IDENTIFIER:
+ {
+ setState(377);
+ match(IDENTIFIER);
+ }
+ break;
+ case T__0:
+ {
+ setState(378);
+ colorPrimitiveType();
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ }
+ }
+ setState(385);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,28,_ctx);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class LiteralContext extends ParserRuleContext {
+ public IntegerLiteralContext integerLiteral() {
+ return getRuleContext(IntegerLiteralContext.class,0);
+ }
+ public FloatLiteralContext floatLiteral() {
+ return getRuleContext(FloatLiteralContext.class,0);
+ }
+ public TerminalNode CHAR_LITERAL() { return getToken(ProcessingParser.CHAR_LITERAL, 0); }
+ public StringLiteralContext stringLiteral() {
+ return getRuleContext(StringLiteralContext.class,0);
+ }
+ public TerminalNode BOOL_LITERAL() { return getToken(ProcessingParser.BOOL_LITERAL, 0); }
+ public TerminalNode NULL_LITERAL() { return getToken(ProcessingParser.NULL_LITERAL, 0); }
+ public HexColorLiteralContext hexColorLiteral() {
+ return getRuleContext(HexColorLiteralContext.class,0);
+ }
+ public LiteralContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_literal; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterLiteral(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitLiteral(this);
+ }
+ }
+
+ public final LiteralContext literal() throws RecognitionException {
+ LiteralContext _localctx = new LiteralContext(_ctx, getState());
+ enterRule(_localctx, 24, RULE_literal);
+ try {
+ setState(393);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case DECIMAL_LITERAL:
+ case HEX_LITERAL:
+ case OCT_LITERAL:
+ case BINARY_LITERAL:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(386);
+ integerLiteral();
+ }
+ break;
+ case FLOAT_LITERAL:
+ case HEX_FLOAT_LITERAL:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(387);
+ floatLiteral();
+ }
+ break;
+ case CHAR_LITERAL:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(388);
+ match(CHAR_LITERAL);
+ }
+ break;
+ case STRING_LITERAL:
+ case MULTI_STRING_LIT:
+ enterOuterAlt(_localctx, 4);
+ {
+ setState(389);
+ stringLiteral();
+ }
+ break;
+ case BOOL_LITERAL:
+ enterOuterAlt(_localctx, 5);
+ {
+ setState(390);
+ match(BOOL_LITERAL);
+ }
+ break;
+ case NULL_LITERAL:
+ enterOuterAlt(_localctx, 6);
+ {
+ setState(391);
+ match(NULL_LITERAL);
+ }
+ break;
+ case HexColorLiteral:
+ enterOuterAlt(_localctx, 7);
+ {
+ setState(392);
+ hexColorLiteral();
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class HexColorLiteralContext extends ParserRuleContext {
+ public TerminalNode HexColorLiteral() { return getToken(ProcessingParser.HexColorLiteral, 0); }
+ public HexColorLiteralContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_hexColorLiteral; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterHexColorLiteral(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitHexColorLiteral(this);
+ }
+ }
+
+ public final HexColorLiteralContext hexColorLiteral() throws RecognitionException {
+ HexColorLiteralContext _localctx = new HexColorLiteralContext(_ctx, getState());
+ enterRule(_localctx, 26, RULE_hexColorLiteral);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(395);
+ match(HexColorLiteral);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class CompilationUnitContext extends ParserRuleContext {
+ public TerminalNode EOF() { return getToken(ProcessingParser.EOF, 0); }
+ public PackageDeclarationContext packageDeclaration() {
+ return getRuleContext(PackageDeclarationContext.class,0);
+ }
+ public List importDeclaration() {
+ return getRuleContexts(ImportDeclarationContext.class);
+ }
+ public ImportDeclarationContext importDeclaration(int i) {
+ return getRuleContext(ImportDeclarationContext.class,i);
+ }
+ public List typeDeclaration() {
+ return getRuleContexts(TypeDeclarationContext.class);
+ }
+ public TypeDeclarationContext typeDeclaration(int i) {
+ return getRuleContext(TypeDeclarationContext.class,i);
+ }
+ public CompilationUnitContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_compilationUnit; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterCompilationUnit(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitCompilationUnit(this);
+ }
+ }
+
+ public final CompilationUnitContext compilationUnit() throws RecognitionException {
+ CompilationUnitContext _localctx = new CompilationUnitContext(_ctx, getState());
+ enterRule(_localctx, 28, RULE_compilationUnit);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(398);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,30,_ctx) ) {
+ case 1:
+ {
+ setState(397);
+ packageDeclaration();
+ }
+ break;
+ }
+ setState(403);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==IMPORT) {
+ {
+ {
+ setState(400);
+ importDeclaration();
+ }
+ }
+ setState(405);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(409);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABSTRACT) | (1L << CLASS) | (1L << ENUM) | (1L << FINAL) | (1L << INTERFACE) | (1L << PRIVATE) | (1L << PROTECTED) | (1L << PUBLIC) | (1L << STATIC) | (1L << STRICTFP))) != 0) || _la==SEMI || _la==AT) {
+ {
+ {
+ setState(406);
+ typeDeclaration();
+ }
+ }
+ setState(411);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(412);
+ match(EOF);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class PackageDeclarationContext extends ParserRuleContext {
+ public TerminalNode PACKAGE() { return getToken(ProcessingParser.PACKAGE, 0); }
+ public QualifiedNameContext qualifiedName() {
+ return getRuleContext(QualifiedNameContext.class,0);
+ }
+ public TerminalNode SEMI() { return getToken(ProcessingParser.SEMI, 0); }
+ public List annotation() {
+ return getRuleContexts(AnnotationContext.class);
+ }
+ public AnnotationContext annotation(int i) {
+ return getRuleContext(AnnotationContext.class,i);
+ }
+ public PackageDeclarationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_packageDeclaration; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterPackageDeclaration(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitPackageDeclaration(this);
+ }
+ }
+
+ public final PackageDeclarationContext packageDeclaration() throws RecognitionException {
+ PackageDeclarationContext _localctx = new PackageDeclarationContext(_ctx, getState());
+ enterRule(_localctx, 30, RULE_packageDeclaration);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(417);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==AT) {
+ {
+ {
+ setState(414);
+ annotation();
+ }
+ }
+ setState(419);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(420);
+ match(PACKAGE);
+ setState(421);
+ qualifiedName();
+ setState(422);
+ match(SEMI);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class ImportDeclarationContext extends ParserRuleContext {
+ public TerminalNode IMPORT() { return getToken(ProcessingParser.IMPORT, 0); }
+ public QualifiedNameContext qualifiedName() {
+ return getRuleContext(QualifiedNameContext.class,0);
+ }
+ public TerminalNode SEMI() { return getToken(ProcessingParser.SEMI, 0); }
+ public TerminalNode STATIC() { return getToken(ProcessingParser.STATIC, 0); }
+ public TerminalNode DOT() { return getToken(ProcessingParser.DOT, 0); }
+ public TerminalNode MUL() { return getToken(ProcessingParser.MUL, 0); }
+ public ImportDeclarationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_importDeclaration; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterImportDeclaration(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitImportDeclaration(this);
+ }
+ }
+
+ public final ImportDeclarationContext importDeclaration() throws RecognitionException {
+ ImportDeclarationContext _localctx = new ImportDeclarationContext(_ctx, getState());
+ enterRule(_localctx, 32, RULE_importDeclaration);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(424);
+ match(IMPORT);
+ setState(426);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==STATIC) {
+ {
+ setState(425);
+ match(STATIC);
+ }
+ }
+
+ setState(428);
+ qualifiedName();
+ setState(431);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==DOT) {
+ {
+ setState(429);
+ match(DOT);
+ setState(430);
+ match(MUL);
+ }
+ }
+
+ setState(433);
+ match(SEMI);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class TypeDeclarationContext extends ParserRuleContext {
+ public ClassDeclarationContext classDeclaration() {
+ return getRuleContext(ClassDeclarationContext.class,0);
+ }
+ public EnumDeclarationContext enumDeclaration() {
+ return getRuleContext(EnumDeclarationContext.class,0);
+ }
+ public InterfaceDeclarationContext interfaceDeclaration() {
+ return getRuleContext(InterfaceDeclarationContext.class,0);
+ }
+ public AnnotationTypeDeclarationContext annotationTypeDeclaration() {
+ return getRuleContext(AnnotationTypeDeclarationContext.class,0);
+ }
+ public List classOrInterfaceModifier() {
+ return getRuleContexts(ClassOrInterfaceModifierContext.class);
+ }
+ public ClassOrInterfaceModifierContext classOrInterfaceModifier(int i) {
+ return getRuleContext(ClassOrInterfaceModifierContext.class,i);
+ }
+ public TerminalNode SEMI() { return getToken(ProcessingParser.SEMI, 0); }
+ public TypeDeclarationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_typeDeclaration; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterTypeDeclaration(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitTypeDeclaration(this);
+ }
+ }
+
+ public final TypeDeclarationContext typeDeclaration() throws RecognitionException {
+ TypeDeclarationContext _localctx = new TypeDeclarationContext(_ctx, getState());
+ enterRule(_localctx, 34, RULE_typeDeclaration);
+ try {
+ int _alt;
+ setState(448);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case ABSTRACT:
+ case CLASS:
+ case ENUM:
+ case FINAL:
+ case INTERFACE:
+ case PRIVATE:
+ case PROTECTED:
+ case PUBLIC:
+ case STATIC:
+ case STRICTFP:
+ case AT:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(438);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,36,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(435);
+ classOrInterfaceModifier();
+ }
+ }
+ }
+ setState(440);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,36,_ctx);
+ }
+ setState(445);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case CLASS:
+ {
+ setState(441);
+ classDeclaration();
+ }
+ break;
+ case ENUM:
+ {
+ setState(442);
+ enumDeclaration();
+ }
+ break;
+ case INTERFACE:
+ {
+ setState(443);
+ interfaceDeclaration();
+ }
+ break;
+ case AT:
+ {
+ setState(444);
+ annotationTypeDeclaration();
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ break;
+ case SEMI:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(447);
+ match(SEMI);
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class ModifierContext extends ParserRuleContext {
+ public ClassOrInterfaceModifierContext classOrInterfaceModifier() {
+ return getRuleContext(ClassOrInterfaceModifierContext.class,0);
+ }
+ public TerminalNode NATIVE() { return getToken(ProcessingParser.NATIVE, 0); }
+ public TerminalNode SYNCHRONIZED() { return getToken(ProcessingParser.SYNCHRONIZED, 0); }
+ public TerminalNode TRANSIENT() { return getToken(ProcessingParser.TRANSIENT, 0); }
+ public TerminalNode VOLATILE() { return getToken(ProcessingParser.VOLATILE, 0); }
+ public ModifierContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_modifier; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterModifier(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitModifier(this);
+ }
+ }
+
+ public final ModifierContext modifier() throws RecognitionException {
+ ModifierContext _localctx = new ModifierContext(_ctx, getState());
+ enterRule(_localctx, 36, RULE_modifier);
+ try {
+ setState(455);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case ABSTRACT:
+ case FINAL:
+ case PRIVATE:
+ case PROTECTED:
+ case PUBLIC:
+ case STATIC:
+ case STRICTFP:
+ case AT:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(450);
+ classOrInterfaceModifier();
+ }
+ break;
+ case NATIVE:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(451);
+ match(NATIVE);
+ }
+ break;
+ case SYNCHRONIZED:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(452);
+ match(SYNCHRONIZED);
+ }
+ break;
+ case TRANSIENT:
+ enterOuterAlt(_localctx, 4);
+ {
+ setState(453);
+ match(TRANSIENT);
+ }
+ break;
+ case VOLATILE:
+ enterOuterAlt(_localctx, 5);
+ {
+ setState(454);
+ match(VOLATILE);
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class ClassOrInterfaceModifierContext extends ParserRuleContext {
+ public AnnotationContext annotation() {
+ return getRuleContext(AnnotationContext.class,0);
+ }
+ public TerminalNode PUBLIC() { return getToken(ProcessingParser.PUBLIC, 0); }
+ public TerminalNode PROTECTED() { return getToken(ProcessingParser.PROTECTED, 0); }
+ public TerminalNode PRIVATE() { return getToken(ProcessingParser.PRIVATE, 0); }
+ public TerminalNode STATIC() { return getToken(ProcessingParser.STATIC, 0); }
+ public TerminalNode ABSTRACT() { return getToken(ProcessingParser.ABSTRACT, 0); }
+ public TerminalNode FINAL() { return getToken(ProcessingParser.FINAL, 0); }
+ public TerminalNode STRICTFP() { return getToken(ProcessingParser.STRICTFP, 0); }
+ public ClassOrInterfaceModifierContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_classOrInterfaceModifier; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterClassOrInterfaceModifier(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitClassOrInterfaceModifier(this);
+ }
+ }
+
+ public final ClassOrInterfaceModifierContext classOrInterfaceModifier() throws RecognitionException {
+ ClassOrInterfaceModifierContext _localctx = new ClassOrInterfaceModifierContext(_ctx, getState());
+ enterRule(_localctx, 38, RULE_classOrInterfaceModifier);
+ try {
+ setState(465);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case AT:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(457);
+ annotation();
+ }
+ break;
+ case PUBLIC:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(458);
+ match(PUBLIC);
+ }
+ break;
+ case PROTECTED:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(459);
+ match(PROTECTED);
+ }
+ break;
+ case PRIVATE:
+ enterOuterAlt(_localctx, 4);
+ {
+ setState(460);
+ match(PRIVATE);
+ }
+ break;
+ case STATIC:
+ enterOuterAlt(_localctx, 5);
+ {
+ setState(461);
+ match(STATIC);
+ }
+ break;
+ case ABSTRACT:
+ enterOuterAlt(_localctx, 6);
+ {
+ setState(462);
+ match(ABSTRACT);
+ }
+ break;
+ case FINAL:
+ enterOuterAlt(_localctx, 7);
+ {
+ setState(463);
+ match(FINAL);
+ }
+ break;
+ case STRICTFP:
+ enterOuterAlt(_localctx, 8);
+ {
+ setState(464);
+ match(STRICTFP);
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class VariableModifierContext extends ParserRuleContext {
+ public TerminalNode FINAL() { return getToken(ProcessingParser.FINAL, 0); }
+ public AnnotationContext annotation() {
+ return getRuleContext(AnnotationContext.class,0);
+ }
+ public VariableModifierContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_variableModifier; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterVariableModifier(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitVariableModifier(this);
+ }
+ }
+
+ public final VariableModifierContext variableModifier() throws RecognitionException {
+ VariableModifierContext _localctx = new VariableModifierContext(_ctx, getState());
+ enterRule(_localctx, 40, RULE_variableModifier);
+ try {
+ setState(469);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case FINAL:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(467);
+ match(FINAL);
+ }
+ break;
+ case AT:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(468);
+ annotation();
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class ClassDeclarationContext extends ParserRuleContext {
+ public TerminalNode CLASS() { return getToken(ProcessingParser.CLASS, 0); }
+ public TerminalNode IDENTIFIER() { return getToken(ProcessingParser.IDENTIFIER, 0); }
+ public ClassBodyContext classBody() {
+ return getRuleContext(ClassBodyContext.class,0);
+ }
+ public TypeParametersContext typeParameters() {
+ return getRuleContext(TypeParametersContext.class,0);
+ }
+ public TerminalNode EXTENDS() { return getToken(ProcessingParser.EXTENDS, 0); }
+ public TypeTypeContext typeType() {
+ return getRuleContext(TypeTypeContext.class,0);
+ }
+ public TerminalNode IMPLEMENTS() { return getToken(ProcessingParser.IMPLEMENTS, 0); }
+ public TypeListContext typeList() {
+ return getRuleContext(TypeListContext.class,0);
+ }
+ public ClassDeclarationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_classDeclaration; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterClassDeclaration(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitClassDeclaration(this);
+ }
+ }
+
+ public final ClassDeclarationContext classDeclaration() throws RecognitionException {
+ ClassDeclarationContext _localctx = new ClassDeclarationContext(_ctx, getState());
+ enterRule(_localctx, 42, RULE_classDeclaration);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(471);
+ match(CLASS);
+ setState(472);
+ match(IDENTIFIER);
+ setState(474);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==LT) {
+ {
+ setState(473);
+ typeParameters();
+ }
+ }
+
+ setState(478);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==EXTENDS) {
+ {
+ setState(476);
+ match(EXTENDS);
+ setState(477);
+ typeType();
+ }
+ }
+
+ setState(482);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==IMPLEMENTS) {
+ {
+ setState(480);
+ match(IMPLEMENTS);
+ setState(481);
+ typeList();
+ }
+ }
+
+ setState(484);
+ classBody();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class TypeParametersContext extends ParserRuleContext {
+ public TerminalNode LT() { return getToken(ProcessingParser.LT, 0); }
+ public List typeParameter() {
+ return getRuleContexts(TypeParameterContext.class);
+ }
+ public TypeParameterContext typeParameter(int i) {
+ return getRuleContext(TypeParameterContext.class,i);
+ }
+ public TerminalNode GT() { return getToken(ProcessingParser.GT, 0); }
+ public List COMMA() { return getTokens(ProcessingParser.COMMA); }
+ public TerminalNode COMMA(int i) {
+ return getToken(ProcessingParser.COMMA, i);
+ }
+ public TypeParametersContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_typeParameters; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterTypeParameters(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitTypeParameters(this);
+ }
+ }
+
+ public final TypeParametersContext typeParameters() throws RecognitionException {
+ TypeParametersContext _localctx = new TypeParametersContext(_ctx, getState());
+ enterRule(_localctx, 44, RULE_typeParameters);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(486);
+ match(LT);
+ setState(487);
+ typeParameter();
+ setState(492);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==COMMA) {
+ {
+ {
+ setState(488);
+ match(COMMA);
+ setState(489);
+ typeParameter();
+ }
+ }
+ setState(494);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(495);
+ match(GT);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class TypeParameterContext extends ParserRuleContext {
+ public TerminalNode IDENTIFIER() { return getToken(ProcessingParser.IDENTIFIER, 0); }
+ public List annotation() {
+ return getRuleContexts(AnnotationContext.class);
+ }
+ public AnnotationContext annotation(int i) {
+ return getRuleContext(AnnotationContext.class,i);
+ }
+ public TerminalNode EXTENDS() { return getToken(ProcessingParser.EXTENDS, 0); }
+ public TypeBoundContext typeBound() {
+ return getRuleContext(TypeBoundContext.class,0);
+ }
+ public TypeParameterContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_typeParameter; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterTypeParameter(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitTypeParameter(this);
+ }
+ }
+
+ public final TypeParameterContext typeParameter() throws RecognitionException {
+ TypeParameterContext _localctx = new TypeParameterContext(_ctx, getState());
+ enterRule(_localctx, 46, RULE_typeParameter);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(500);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==AT) {
+ {
+ {
+ setState(497);
+ annotation();
+ }
+ }
+ setState(502);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(503);
+ match(IDENTIFIER);
+ setState(506);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==EXTENDS) {
+ {
+ setState(504);
+ match(EXTENDS);
+ setState(505);
+ typeBound();
+ }
+ }
+
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class TypeBoundContext extends ParserRuleContext {
+ public List typeType() {
+ return getRuleContexts(TypeTypeContext.class);
+ }
+ public TypeTypeContext typeType(int i) {
+ return getRuleContext(TypeTypeContext.class,i);
+ }
+ public List BITAND() { return getTokens(ProcessingParser.BITAND); }
+ public TerminalNode BITAND(int i) {
+ return getToken(ProcessingParser.BITAND, i);
+ }
+ public TypeBoundContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_typeBound; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterTypeBound(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitTypeBound(this);
+ }
+ }
+
+ public final TypeBoundContext typeBound() throws RecognitionException {
+ TypeBoundContext _localctx = new TypeBoundContext(_ctx, getState());
+ enterRule(_localctx, 48, RULE_typeBound);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(508);
+ typeType();
+ setState(513);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==BITAND) {
+ {
+ {
+ setState(509);
+ match(BITAND);
+ setState(510);
+ typeType();
+ }
+ }
+ setState(515);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class EnumDeclarationContext extends ParserRuleContext {
+ public TerminalNode ENUM() { return getToken(ProcessingParser.ENUM, 0); }
+ public TerminalNode IDENTIFIER() { return getToken(ProcessingParser.IDENTIFIER, 0); }
+ public TerminalNode LBRACE() { return getToken(ProcessingParser.LBRACE, 0); }
+ public TerminalNode RBRACE() { return getToken(ProcessingParser.RBRACE, 0); }
+ public TerminalNode IMPLEMENTS() { return getToken(ProcessingParser.IMPLEMENTS, 0); }
+ public TypeListContext typeList() {
+ return getRuleContext(TypeListContext.class,0);
+ }
+ public EnumConstantsContext enumConstants() {
+ return getRuleContext(EnumConstantsContext.class,0);
+ }
+ public TerminalNode COMMA() { return getToken(ProcessingParser.COMMA, 0); }
+ public EnumBodyDeclarationsContext enumBodyDeclarations() {
+ return getRuleContext(EnumBodyDeclarationsContext.class,0);
+ }
+ public EnumDeclarationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_enumDeclaration; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterEnumDeclaration(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitEnumDeclaration(this);
+ }
+ }
+
+ public final EnumDeclarationContext enumDeclaration() throws RecognitionException {
+ EnumDeclarationContext _localctx = new EnumDeclarationContext(_ctx, getState());
+ enterRule(_localctx, 50, RULE_enumDeclaration);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(516);
+ match(ENUM);
+ setState(517);
+ match(IDENTIFIER);
+ setState(520);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==IMPLEMENTS) {
+ {
+ setState(518);
+ match(IMPLEMENTS);
+ setState(519);
+ typeList();
+ }
+ }
+
+ setState(522);
+ match(LBRACE);
+ setState(524);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==AT || _la==IDENTIFIER) {
+ {
+ setState(523);
+ enumConstants();
+ }
+ }
+
+ setState(527);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==COMMA) {
+ {
+ setState(526);
+ match(COMMA);
+ }
+ }
+
+ setState(530);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==SEMI) {
+ {
+ setState(529);
+ enumBodyDeclarations();
+ }
+ }
+
+ setState(532);
+ match(RBRACE);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class EnumConstantsContext extends ParserRuleContext {
+ public List enumConstant() {
+ return getRuleContexts(EnumConstantContext.class);
+ }
+ public EnumConstantContext enumConstant(int i) {
+ return getRuleContext(EnumConstantContext.class,i);
+ }
+ public List COMMA() { return getTokens(ProcessingParser.COMMA); }
+ public TerminalNode COMMA(int i) {
+ return getToken(ProcessingParser.COMMA, i);
+ }
+ public EnumConstantsContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_enumConstants; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterEnumConstants(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitEnumConstants(this);
+ }
+ }
+
+ public final EnumConstantsContext enumConstants() throws RecognitionException {
+ EnumConstantsContext _localctx = new EnumConstantsContext(_ctx, getState());
+ enterRule(_localctx, 52, RULE_enumConstants);
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(534);
+ enumConstant();
+ setState(539);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,53,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(535);
+ match(COMMA);
+ setState(536);
+ enumConstant();
+ }
+ }
+ }
+ setState(541);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,53,_ctx);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class EnumConstantContext extends ParserRuleContext {
+ public TerminalNode IDENTIFIER() { return getToken(ProcessingParser.IDENTIFIER, 0); }
+ public List annotation() {
+ return getRuleContexts(AnnotationContext.class);
+ }
+ public AnnotationContext annotation(int i) {
+ return getRuleContext(AnnotationContext.class,i);
+ }
+ public ArgumentsContext arguments() {
+ return getRuleContext(ArgumentsContext.class,0);
+ }
+ public ClassBodyContext classBody() {
+ return getRuleContext(ClassBodyContext.class,0);
+ }
+ public EnumConstantContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_enumConstant; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterEnumConstant(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitEnumConstant(this);
+ }
+ }
+
+ public final EnumConstantContext enumConstant() throws RecognitionException {
+ EnumConstantContext _localctx = new EnumConstantContext(_ctx, getState());
+ enterRule(_localctx, 54, RULE_enumConstant);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(545);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==AT) {
+ {
+ {
+ setState(542);
+ annotation();
+ }
+ }
+ setState(547);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(548);
+ match(IDENTIFIER);
+ setState(550);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==LPAREN) {
+ {
+ setState(549);
+ arguments();
+ }
+ }
+
+ setState(553);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==LBRACE) {
+ {
+ setState(552);
+ classBody();
+ }
+ }
+
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class EnumBodyDeclarationsContext extends ParserRuleContext {
+ public TerminalNode SEMI() { return getToken(ProcessingParser.SEMI, 0); }
+ public List classBodyDeclaration() {
+ return getRuleContexts(ClassBodyDeclarationContext.class);
+ }
+ public ClassBodyDeclarationContext classBodyDeclaration(int i) {
+ return getRuleContext(ClassBodyDeclarationContext.class,i);
+ }
+ public EnumBodyDeclarationsContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_enumBodyDeclarations; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterEnumBodyDeclarations(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitEnumBodyDeclarations(this);
+ }
+ }
+
+ public final EnumBodyDeclarationsContext enumBodyDeclarations() throws RecognitionException {
+ EnumBodyDeclarationsContext _localctx = new EnumBodyDeclarationsContext(_ctx, getState());
+ enterRule(_localctx, 56, RULE_enumBodyDeclarations);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(555);
+ match(SEMI);
+ setState(559);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__0) | (1L << ABSTRACT) | (1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << CLASS) | (1L << DOUBLE) | (1L << ENUM) | (1L << FINAL) | (1L << FLOAT) | (1L << IMPORT) | (1L << INT) | (1L << INTERFACE) | (1L << LONG) | (1L << NATIVE) | (1L << PRIVATE) | (1L << PROTECTED) | (1L << PUBLIC) | (1L << SHORT) | (1L << STATIC) | (1L << STRICTFP) | (1L << SYNCHRONIZED) | (1L << TRANSIENT) | (1L << VAR) | (1L << VOID) | (1L << VOLATILE))) != 0) || ((((_la - 70)) & ~0x3f) == 0 && ((1L << (_la - 70)) & ((1L << (LBRACE - 70)) | (1L << (SEMI - 70)) | (1L << (LT - 70)) | (1L << (AT - 70)) | (1L << (IDENTIFIER - 70)))) != 0)) {
+ {
+ {
+ setState(556);
+ classBodyDeclaration();
+ }
+ }
+ setState(561);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class InterfaceDeclarationContext extends ParserRuleContext {
+ public TerminalNode INTERFACE() { return getToken(ProcessingParser.INTERFACE, 0); }
+ public TerminalNode IDENTIFIER() { return getToken(ProcessingParser.IDENTIFIER, 0); }
+ public InterfaceBodyContext interfaceBody() {
+ return getRuleContext(InterfaceBodyContext.class,0);
+ }
+ public TypeParametersContext typeParameters() {
+ return getRuleContext(TypeParametersContext.class,0);
+ }
+ public TerminalNode EXTENDS() { return getToken(ProcessingParser.EXTENDS, 0); }
+ public TypeListContext typeList() {
+ return getRuleContext(TypeListContext.class,0);
+ }
+ public InterfaceDeclarationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_interfaceDeclaration; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterInterfaceDeclaration(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitInterfaceDeclaration(this);
+ }
+ }
+
+ public final InterfaceDeclarationContext interfaceDeclaration() throws RecognitionException {
+ InterfaceDeclarationContext _localctx = new InterfaceDeclarationContext(_ctx, getState());
+ enterRule(_localctx, 58, RULE_interfaceDeclaration);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(562);
+ match(INTERFACE);
+ setState(563);
+ match(IDENTIFIER);
+ setState(565);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==LT) {
+ {
+ setState(564);
+ typeParameters();
+ }
+ }
+
+ setState(569);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==EXTENDS) {
+ {
+ setState(567);
+ match(EXTENDS);
+ setState(568);
+ typeList();
+ }
+ }
+
+ setState(571);
+ interfaceBody();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class ClassBodyContext extends ParserRuleContext {
+ public TerminalNode LBRACE() { return getToken(ProcessingParser.LBRACE, 0); }
+ public TerminalNode RBRACE() { return getToken(ProcessingParser.RBRACE, 0); }
+ public List classBodyDeclaration() {
+ return getRuleContexts(ClassBodyDeclarationContext.class);
+ }
+ public ClassBodyDeclarationContext classBodyDeclaration(int i) {
+ return getRuleContext(ClassBodyDeclarationContext.class,i);
+ }
+ public ClassBodyContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_classBody; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterClassBody(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitClassBody(this);
+ }
+ }
+
+ public final ClassBodyContext classBody() throws RecognitionException {
+ ClassBodyContext _localctx = new ClassBodyContext(_ctx, getState());
+ enterRule(_localctx, 60, RULE_classBody);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(573);
+ match(LBRACE);
+ setState(577);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__0) | (1L << ABSTRACT) | (1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << CLASS) | (1L << DOUBLE) | (1L << ENUM) | (1L << FINAL) | (1L << FLOAT) | (1L << IMPORT) | (1L << INT) | (1L << INTERFACE) | (1L << LONG) | (1L << NATIVE) | (1L << PRIVATE) | (1L << PROTECTED) | (1L << PUBLIC) | (1L << SHORT) | (1L << STATIC) | (1L << STRICTFP) | (1L << SYNCHRONIZED) | (1L << TRANSIENT) | (1L << VAR) | (1L << VOID) | (1L << VOLATILE))) != 0) || ((((_la - 70)) & ~0x3f) == 0 && ((1L << (_la - 70)) & ((1L << (LBRACE - 70)) | (1L << (SEMI - 70)) | (1L << (LT - 70)) | (1L << (AT - 70)) | (1L << (IDENTIFIER - 70)))) != 0)) {
+ {
+ {
+ setState(574);
+ classBodyDeclaration();
+ }
+ }
+ setState(579);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(580);
+ match(RBRACE);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class InterfaceBodyContext extends ParserRuleContext {
+ public TerminalNode LBRACE() { return getToken(ProcessingParser.LBRACE, 0); }
+ public TerminalNode RBRACE() { return getToken(ProcessingParser.RBRACE, 0); }
+ public List interfaceBodyDeclaration() {
+ return getRuleContexts(InterfaceBodyDeclarationContext.class);
+ }
+ public InterfaceBodyDeclarationContext interfaceBodyDeclaration(int i) {
+ return getRuleContext(InterfaceBodyDeclarationContext.class,i);
+ }
+ public InterfaceBodyContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_interfaceBody; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterInterfaceBody(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitInterfaceBody(this);
+ }
+ }
+
+ public final InterfaceBodyContext interfaceBody() throws RecognitionException {
+ InterfaceBodyContext _localctx = new InterfaceBodyContext(_ctx, getState());
+ enterRule(_localctx, 62, RULE_interfaceBody);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(582);
+ match(LBRACE);
+ setState(586);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__0) | (1L << ABSTRACT) | (1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << CLASS) | (1L << DEFAULT) | (1L << DOUBLE) | (1L << ENUM) | (1L << FINAL) | (1L << FLOAT) | (1L << INT) | (1L << INTERFACE) | (1L << LONG) | (1L << NATIVE) | (1L << PRIVATE) | (1L << PROTECTED) | (1L << PUBLIC) | (1L << SHORT) | (1L << STATIC) | (1L << STRICTFP) | (1L << SYNCHRONIZED) | (1L << TRANSIENT) | (1L << VAR) | (1L << VOID) | (1L << VOLATILE))) != 0) || ((((_la - 74)) & ~0x3f) == 0 && ((1L << (_la - 74)) & ((1L << (SEMI - 74)) | (1L << (LT - 74)) | (1L << (AT - 74)) | (1L << (IDENTIFIER - 74)))) != 0)) {
+ {
+ {
+ setState(583);
+ interfaceBodyDeclaration();
+ }
+ }
+ setState(588);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(589);
+ match(RBRACE);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class ClassBodyDeclarationContext extends ParserRuleContext {
+ public TerminalNode SEMI() { return getToken(ProcessingParser.SEMI, 0); }
+ public ImportDeclarationContext importDeclaration() {
+ return getRuleContext(ImportDeclarationContext.class,0);
+ }
+ public BlockContext block() {
+ return getRuleContext(BlockContext.class,0);
+ }
+ public TerminalNode STATIC() { return getToken(ProcessingParser.STATIC, 0); }
+ public MemberDeclarationContext memberDeclaration() {
+ return getRuleContext(MemberDeclarationContext.class,0);
+ }
+ public List modifier() {
+ return getRuleContexts(ModifierContext.class);
+ }
+ public ModifierContext modifier(int i) {
+ return getRuleContext(ModifierContext.class,i);
+ }
+ public ClassBodyDeclarationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_classBodyDeclaration; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterClassBodyDeclaration(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitClassBodyDeclaration(this);
+ }
+ }
+
+ public final ClassBodyDeclarationContext classBodyDeclaration() throws RecognitionException {
+ ClassBodyDeclarationContext _localctx = new ClassBodyDeclarationContext(_ctx, getState());
+ enterRule(_localctx, 64, RULE_classBodyDeclaration);
+ int _la;
+ try {
+ int _alt;
+ setState(604);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,64,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(591);
+ match(SEMI);
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(592);
+ importDeclaration();
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(594);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==STATIC) {
+ {
+ setState(593);
+ match(STATIC);
+ }
+ }
+
+ setState(596);
+ block();
+ }
+ break;
+ case 4:
+ enterOuterAlt(_localctx, 4);
+ {
+ setState(600);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,63,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(597);
+ modifier();
+ }
+ }
+ }
+ setState(602);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,63,_ctx);
+ }
+ setState(603);
+ memberDeclaration();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class MemberDeclarationContext extends ParserRuleContext {
+ public MethodDeclarationContext methodDeclaration() {
+ return getRuleContext(MethodDeclarationContext.class,0);
+ }
+ public GenericMethodDeclarationContext genericMethodDeclaration() {
+ return getRuleContext(GenericMethodDeclarationContext.class,0);
+ }
+ public FieldDeclarationContext fieldDeclaration() {
+ return getRuleContext(FieldDeclarationContext.class,0);
+ }
+ public ConstructorDeclarationContext constructorDeclaration() {
+ return getRuleContext(ConstructorDeclarationContext.class,0);
+ }
+ public GenericConstructorDeclarationContext genericConstructorDeclaration() {
+ return getRuleContext(GenericConstructorDeclarationContext.class,0);
+ }
+ public InterfaceDeclarationContext interfaceDeclaration() {
+ return getRuleContext(InterfaceDeclarationContext.class,0);
+ }
+ public AnnotationTypeDeclarationContext annotationTypeDeclaration() {
+ return getRuleContext(AnnotationTypeDeclarationContext.class,0);
+ }
+ public ClassDeclarationContext classDeclaration() {
+ return getRuleContext(ClassDeclarationContext.class,0);
+ }
+ public EnumDeclarationContext enumDeclaration() {
+ return getRuleContext(EnumDeclarationContext.class,0);
+ }
+ public MemberDeclarationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_memberDeclaration; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterMemberDeclaration(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitMemberDeclaration(this);
+ }
+ }
+
+ public final MemberDeclarationContext memberDeclaration() throws RecognitionException {
+ MemberDeclarationContext _localctx = new MemberDeclarationContext(_ctx, getState());
+ enterRule(_localctx, 66, RULE_memberDeclaration);
+ try {
+ setState(615);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,65,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(606);
+ methodDeclaration();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(607);
+ genericMethodDeclaration();
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(608);
+ fieldDeclaration();
+ }
+ break;
+ case 4:
+ enterOuterAlt(_localctx, 4);
+ {
+ setState(609);
+ constructorDeclaration();
+ }
+ break;
+ case 5:
+ enterOuterAlt(_localctx, 5);
+ {
+ setState(610);
+ genericConstructorDeclaration();
+ }
+ break;
+ case 6:
+ enterOuterAlt(_localctx, 6);
+ {
+ setState(611);
+ interfaceDeclaration();
+ }
+ break;
+ case 7:
+ enterOuterAlt(_localctx, 7);
+ {
+ setState(612);
+ annotationTypeDeclaration();
+ }
+ break;
+ case 8:
+ enterOuterAlt(_localctx, 8);
+ {
+ setState(613);
+ classDeclaration();
+ }
+ break;
+ case 9:
+ enterOuterAlt(_localctx, 9);
+ {
+ setState(614);
+ enumDeclaration();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class MethodDeclarationContext extends ParserRuleContext {
+ public TypeTypeOrVoidContext typeTypeOrVoid() {
+ return getRuleContext(TypeTypeOrVoidContext.class,0);
+ }
+ public TerminalNode IDENTIFIER() { return getToken(ProcessingParser.IDENTIFIER, 0); }
+ public FormalParametersContext formalParameters() {
+ return getRuleContext(FormalParametersContext.class,0);
+ }
+ public MethodBodyContext methodBody() {
+ return getRuleContext(MethodBodyContext.class,0);
+ }
+ public List LBRACK() { return getTokens(ProcessingParser.LBRACK); }
+ public TerminalNode LBRACK(int i) {
+ return getToken(ProcessingParser.LBRACK, i);
+ }
+ public List RBRACK() { return getTokens(ProcessingParser.RBRACK); }
+ public TerminalNode RBRACK(int i) {
+ return getToken(ProcessingParser.RBRACK, i);
+ }
+ public TerminalNode THROWS() { return getToken(ProcessingParser.THROWS, 0); }
+ public QualifiedNameListContext qualifiedNameList() {
+ return getRuleContext(QualifiedNameListContext.class,0);
+ }
+ public MethodDeclarationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_methodDeclaration; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterMethodDeclaration(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitMethodDeclaration(this);
+ }
+ }
+
+ public final MethodDeclarationContext methodDeclaration() throws RecognitionException {
+ MethodDeclarationContext _localctx = new MethodDeclarationContext(_ctx, getState());
+ enterRule(_localctx, 68, RULE_methodDeclaration);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(617);
+ typeTypeOrVoid();
+ setState(618);
+ match(IDENTIFIER);
+ setState(619);
+ formalParameters();
+ setState(624);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==LBRACK) {
+ {
+ {
+ setState(620);
+ match(LBRACK);
+ setState(621);
+ match(RBRACK);
+ }
+ }
+ setState(626);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(629);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==THROWS) {
+ {
+ setState(627);
+ match(THROWS);
+ setState(628);
+ qualifiedNameList();
+ }
+ }
+
+ setState(631);
+ methodBody();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class MethodBodyContext extends ParserRuleContext {
+ public BlockContext block() {
+ return getRuleContext(BlockContext.class,0);
+ }
+ public TerminalNode SEMI() { return getToken(ProcessingParser.SEMI, 0); }
+ public MethodBodyContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_methodBody; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterMethodBody(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitMethodBody(this);
+ }
+ }
+
+ public final MethodBodyContext methodBody() throws RecognitionException {
+ MethodBodyContext _localctx = new MethodBodyContext(_ctx, getState());
+ enterRule(_localctx, 70, RULE_methodBody);
+ try {
+ setState(635);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case LBRACE:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(633);
+ block();
+ }
+ break;
+ case SEMI:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(634);
+ match(SEMI);
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class TypeTypeOrVoidContext extends ParserRuleContext {
+ public TypeTypeContext typeType() {
+ return getRuleContext(TypeTypeContext.class,0);
+ }
+ public TerminalNode VOID() { return getToken(ProcessingParser.VOID, 0); }
+ public TypeTypeOrVoidContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_typeTypeOrVoid; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterTypeTypeOrVoid(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitTypeTypeOrVoid(this);
+ }
+ }
+
+ public final TypeTypeOrVoidContext typeTypeOrVoid() throws RecognitionException {
+ TypeTypeOrVoidContext _localctx = new TypeTypeOrVoidContext(_ctx, getState());
+ enterRule(_localctx, 72, RULE_typeTypeOrVoid);
+ try {
+ setState(639);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case T__0:
+ case BOOLEAN:
+ case BYTE:
+ case CHAR:
+ case DOUBLE:
+ case FLOAT:
+ case INT:
+ case LONG:
+ case SHORT:
+ case VAR:
+ case AT:
+ case IDENTIFIER:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(637);
+ typeType();
+ }
+ break;
+ case VOID:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(638);
+ match(VOID);
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class GenericMethodDeclarationContext extends ParserRuleContext {
+ public TypeParametersContext typeParameters() {
+ return getRuleContext(TypeParametersContext.class,0);
+ }
+ public MethodDeclarationContext methodDeclaration() {
+ return getRuleContext(MethodDeclarationContext.class,0);
+ }
+ public GenericMethodDeclarationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_genericMethodDeclaration; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterGenericMethodDeclaration(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitGenericMethodDeclaration(this);
+ }
+ }
+
+ public final GenericMethodDeclarationContext genericMethodDeclaration() throws RecognitionException {
+ GenericMethodDeclarationContext _localctx = new GenericMethodDeclarationContext(_ctx, getState());
+ enterRule(_localctx, 74, RULE_genericMethodDeclaration);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(641);
+ typeParameters();
+ setState(642);
+ methodDeclaration();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class GenericConstructorDeclarationContext extends ParserRuleContext {
+ public TypeParametersContext typeParameters() {
+ return getRuleContext(TypeParametersContext.class,0);
+ }
+ public ConstructorDeclarationContext constructorDeclaration() {
+ return getRuleContext(ConstructorDeclarationContext.class,0);
+ }
+ public GenericConstructorDeclarationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_genericConstructorDeclaration; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterGenericConstructorDeclaration(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitGenericConstructorDeclaration(this);
+ }
+ }
+
+ public final GenericConstructorDeclarationContext genericConstructorDeclaration() throws RecognitionException {
+ GenericConstructorDeclarationContext _localctx = new GenericConstructorDeclarationContext(_ctx, getState());
+ enterRule(_localctx, 76, RULE_genericConstructorDeclaration);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(644);
+ typeParameters();
+ setState(645);
+ constructorDeclaration();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class ConstructorDeclarationContext extends ParserRuleContext {
+ public BlockContext constructorBody;
+ public TerminalNode IDENTIFIER() { return getToken(ProcessingParser.IDENTIFIER, 0); }
+ public FormalParametersContext formalParameters() {
+ return getRuleContext(FormalParametersContext.class,0);
+ }
+ public BlockContext block() {
+ return getRuleContext(BlockContext.class,0);
+ }
+ public TerminalNode THROWS() { return getToken(ProcessingParser.THROWS, 0); }
+ public QualifiedNameListContext qualifiedNameList() {
+ return getRuleContext(QualifiedNameListContext.class,0);
+ }
+ public ConstructorDeclarationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_constructorDeclaration; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterConstructorDeclaration(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitConstructorDeclaration(this);
+ }
+ }
+
+ public final ConstructorDeclarationContext constructorDeclaration() throws RecognitionException {
+ ConstructorDeclarationContext _localctx = new ConstructorDeclarationContext(_ctx, getState());
+ enterRule(_localctx, 78, RULE_constructorDeclaration);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(647);
+ match(IDENTIFIER);
+ setState(648);
+ formalParameters();
+ setState(651);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==THROWS) {
+ {
+ setState(649);
+ match(THROWS);
+ setState(650);
+ qualifiedNameList();
+ }
+ }
+
+ setState(653);
+ ((ConstructorDeclarationContext)_localctx).constructorBody = block();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class FieldDeclarationContext extends ParserRuleContext {
+ public TypeTypeContext typeType() {
+ return getRuleContext(TypeTypeContext.class,0);
+ }
+ public VariableDeclaratorsContext variableDeclarators() {
+ return getRuleContext(VariableDeclaratorsContext.class,0);
+ }
+ public TerminalNode SEMI() { return getToken(ProcessingParser.SEMI, 0); }
+ public FieldDeclarationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_fieldDeclaration; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterFieldDeclaration(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitFieldDeclaration(this);
+ }
+ }
+
+ public final FieldDeclarationContext fieldDeclaration() throws RecognitionException {
+ FieldDeclarationContext _localctx = new FieldDeclarationContext(_ctx, getState());
+ enterRule(_localctx, 80, RULE_fieldDeclaration);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(655);
+ typeType();
+ setState(656);
+ variableDeclarators();
+ setState(657);
+ match(SEMI);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class InterfaceBodyDeclarationContext extends ParserRuleContext {
+ public InterfaceMemberDeclarationContext interfaceMemberDeclaration() {
+ return getRuleContext(InterfaceMemberDeclarationContext.class,0);
+ }
+ public List modifier() {
+ return getRuleContexts(ModifierContext.class);
+ }
+ public ModifierContext modifier(int i) {
+ return getRuleContext(ModifierContext.class,i);
+ }
+ public TerminalNode SEMI() { return getToken(ProcessingParser.SEMI, 0); }
+ public InterfaceBodyDeclarationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_interfaceBodyDeclaration; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterInterfaceBodyDeclaration(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitInterfaceBodyDeclaration(this);
+ }
+ }
+
+ public final InterfaceBodyDeclarationContext interfaceBodyDeclaration() throws RecognitionException {
+ InterfaceBodyDeclarationContext _localctx = new InterfaceBodyDeclarationContext(_ctx, getState());
+ enterRule(_localctx, 82, RULE_interfaceBodyDeclaration);
+ try {
+ int _alt;
+ setState(667);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case T__0:
+ case ABSTRACT:
+ case BOOLEAN:
+ case BYTE:
+ case CHAR:
+ case CLASS:
+ case DEFAULT:
+ case DOUBLE:
+ case ENUM:
+ case FINAL:
+ case FLOAT:
+ case INT:
+ case INTERFACE:
+ case LONG:
+ case NATIVE:
+ case PRIVATE:
+ case PROTECTED:
+ case PUBLIC:
+ case SHORT:
+ case STATIC:
+ case STRICTFP:
+ case SYNCHRONIZED:
+ case TRANSIENT:
+ case VAR:
+ case VOID:
+ case VOLATILE:
+ case LT:
+ case AT:
+ case IDENTIFIER:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(662);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,71,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(659);
+ modifier();
+ }
+ }
+ }
+ setState(664);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,71,_ctx);
+ }
+ setState(665);
+ interfaceMemberDeclaration();
+ }
+ break;
+ case SEMI:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(666);
+ match(SEMI);
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class InterfaceMemberDeclarationContext extends ParserRuleContext {
+ public ConstDeclarationContext constDeclaration() {
+ return getRuleContext(ConstDeclarationContext.class,0);
+ }
+ public InterfaceMethodDeclarationContext interfaceMethodDeclaration() {
+ return getRuleContext(InterfaceMethodDeclarationContext.class,0);
+ }
+ public GenericInterfaceMethodDeclarationContext genericInterfaceMethodDeclaration() {
+ return getRuleContext(GenericInterfaceMethodDeclarationContext.class,0);
+ }
+ public InterfaceDeclarationContext interfaceDeclaration() {
+ return getRuleContext(InterfaceDeclarationContext.class,0);
+ }
+ public AnnotationTypeDeclarationContext annotationTypeDeclaration() {
+ return getRuleContext(AnnotationTypeDeclarationContext.class,0);
+ }
+ public ClassDeclarationContext classDeclaration() {
+ return getRuleContext(ClassDeclarationContext.class,0);
+ }
+ public EnumDeclarationContext enumDeclaration() {
+ return getRuleContext(EnumDeclarationContext.class,0);
+ }
+ public InterfaceMemberDeclarationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_interfaceMemberDeclaration; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterInterfaceMemberDeclaration(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitInterfaceMemberDeclaration(this);
+ }
+ }
+
+ public final InterfaceMemberDeclarationContext interfaceMemberDeclaration() throws RecognitionException {
+ InterfaceMemberDeclarationContext _localctx = new InterfaceMemberDeclarationContext(_ctx, getState());
+ enterRule(_localctx, 84, RULE_interfaceMemberDeclaration);
+ try {
+ setState(676);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,73,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(669);
+ constDeclaration();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(670);
+ interfaceMethodDeclaration();
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(671);
+ genericInterfaceMethodDeclaration();
+ }
+ break;
+ case 4:
+ enterOuterAlt(_localctx, 4);
+ {
+ setState(672);
+ interfaceDeclaration();
+ }
+ break;
+ case 5:
+ enterOuterAlt(_localctx, 5);
+ {
+ setState(673);
+ annotationTypeDeclaration();
+ }
+ break;
+ case 6:
+ enterOuterAlt(_localctx, 6);
+ {
+ setState(674);
+ classDeclaration();
+ }
+ break;
+ case 7:
+ enterOuterAlt(_localctx, 7);
+ {
+ setState(675);
+ enumDeclaration();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class ConstDeclarationContext extends ParserRuleContext {
+ public TypeTypeContext typeType() {
+ return getRuleContext(TypeTypeContext.class,0);
+ }
+ public List constantDeclarator() {
+ return getRuleContexts(ConstantDeclaratorContext.class);
+ }
+ public ConstantDeclaratorContext constantDeclarator(int i) {
+ return getRuleContext(ConstantDeclaratorContext.class,i);
+ }
+ public TerminalNode SEMI() { return getToken(ProcessingParser.SEMI, 0); }
+ public List COMMA() { return getTokens(ProcessingParser.COMMA); }
+ public TerminalNode COMMA(int i) {
+ return getToken(ProcessingParser.COMMA, i);
+ }
+ public ConstDeclarationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_constDeclaration; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterConstDeclaration(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitConstDeclaration(this);
+ }
+ }
+
+ public final ConstDeclarationContext constDeclaration() throws RecognitionException {
+ ConstDeclarationContext _localctx = new ConstDeclarationContext(_ctx, getState());
+ enterRule(_localctx, 86, RULE_constDeclaration);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(678);
+ typeType();
+ setState(679);
+ constantDeclarator();
+ setState(684);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==COMMA) {
+ {
+ {
+ setState(680);
+ match(COMMA);
+ setState(681);
+ constantDeclarator();
+ }
+ }
+ setState(686);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(687);
+ match(SEMI);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class ConstantDeclaratorContext extends ParserRuleContext {
+ public TerminalNode IDENTIFIER() { return getToken(ProcessingParser.IDENTIFIER, 0); }
+ public TerminalNode ASSIGN() { return getToken(ProcessingParser.ASSIGN, 0); }
+ public VariableInitializerContext variableInitializer() {
+ return getRuleContext(VariableInitializerContext.class,0);
+ }
+ public List LBRACK() { return getTokens(ProcessingParser.LBRACK); }
+ public TerminalNode LBRACK(int i) {
+ return getToken(ProcessingParser.LBRACK, i);
+ }
+ public List RBRACK() { return getTokens(ProcessingParser.RBRACK); }
+ public TerminalNode RBRACK(int i) {
+ return getToken(ProcessingParser.RBRACK, i);
+ }
+ public ConstantDeclaratorContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_constantDeclarator; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterConstantDeclarator(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitConstantDeclarator(this);
+ }
+ }
+
+ public final ConstantDeclaratorContext constantDeclarator() throws RecognitionException {
+ ConstantDeclaratorContext _localctx = new ConstantDeclaratorContext(_ctx, getState());
+ enterRule(_localctx, 88, RULE_constantDeclarator);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(689);
+ match(IDENTIFIER);
+ setState(694);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==LBRACK) {
+ {
+ {
+ setState(690);
+ match(LBRACK);
+ setState(691);
+ match(RBRACK);
+ }
+ }
+ setState(696);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(697);
+ match(ASSIGN);
+ setState(698);
+ variableInitializer();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class InterfaceMethodDeclarationContext extends ParserRuleContext {
+ public TerminalNode IDENTIFIER() { return getToken(ProcessingParser.IDENTIFIER, 0); }
+ public FormalParametersContext formalParameters() {
+ return getRuleContext(FormalParametersContext.class,0);
+ }
+ public MethodBodyContext methodBody() {
+ return getRuleContext(MethodBodyContext.class,0);
+ }
+ public TypeTypeOrVoidContext typeTypeOrVoid() {
+ return getRuleContext(TypeTypeOrVoidContext.class,0);
+ }
+ public TypeParametersContext typeParameters() {
+ return getRuleContext(TypeParametersContext.class,0);
+ }
+ public List interfaceMethodModifier() {
+ return getRuleContexts(InterfaceMethodModifierContext.class);
+ }
+ public InterfaceMethodModifierContext interfaceMethodModifier(int i) {
+ return getRuleContext(InterfaceMethodModifierContext.class,i);
+ }
+ public List LBRACK() { return getTokens(ProcessingParser.LBRACK); }
+ public TerminalNode LBRACK(int i) {
+ return getToken(ProcessingParser.LBRACK, i);
+ }
+ public List RBRACK() { return getTokens(ProcessingParser.RBRACK); }
+ public TerminalNode RBRACK(int i) {
+ return getToken(ProcessingParser.RBRACK, i);
+ }
+ public TerminalNode THROWS() { return getToken(ProcessingParser.THROWS, 0); }
+ public QualifiedNameListContext qualifiedNameList() {
+ return getRuleContext(QualifiedNameListContext.class,0);
+ }
+ public List annotation() {
+ return getRuleContexts(AnnotationContext.class);
+ }
+ public AnnotationContext annotation(int i) {
+ return getRuleContext(AnnotationContext.class,i);
+ }
+ public InterfaceMethodDeclarationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_interfaceMethodDeclaration; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterInterfaceMethodDeclaration(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitInterfaceMethodDeclaration(this);
+ }
+ }
+
+ public final InterfaceMethodDeclarationContext interfaceMethodDeclaration() throws RecognitionException {
+ InterfaceMethodDeclarationContext _localctx = new InterfaceMethodDeclarationContext(_ctx, getState());
+ enterRule(_localctx, 90, RULE_interfaceMethodDeclaration);
+ int _la;
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(703);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,76,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(700);
+ interfaceMethodModifier();
+ }
+ }
+ }
+ setState(705);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,76,_ctx);
+ }
+ setState(716);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case T__0:
+ case BOOLEAN:
+ case BYTE:
+ case CHAR:
+ case DOUBLE:
+ case FLOAT:
+ case INT:
+ case LONG:
+ case SHORT:
+ case VAR:
+ case VOID:
+ case AT:
+ case IDENTIFIER:
+ {
+ setState(706);
+ typeTypeOrVoid();
+ }
+ break;
+ case LT:
+ {
+ setState(707);
+ typeParameters();
+ setState(711);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,77,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(708);
+ annotation();
+ }
+ }
+ }
+ setState(713);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,77,_ctx);
+ }
+ setState(714);
+ typeTypeOrVoid();
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ setState(718);
+ match(IDENTIFIER);
+ setState(719);
+ formalParameters();
+ setState(724);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==LBRACK) {
+ {
+ {
+ setState(720);
+ match(LBRACK);
+ setState(721);
+ match(RBRACK);
+ }
+ }
+ setState(726);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(729);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==THROWS) {
+ {
+ setState(727);
+ match(THROWS);
+ setState(728);
+ qualifiedNameList();
+ }
+ }
+
+ setState(731);
+ methodBody();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class InterfaceMethodModifierContext extends ParserRuleContext {
+ public AnnotationContext annotation() {
+ return getRuleContext(AnnotationContext.class,0);
+ }
+ public TerminalNode PUBLIC() { return getToken(ProcessingParser.PUBLIC, 0); }
+ public TerminalNode ABSTRACT() { return getToken(ProcessingParser.ABSTRACT, 0); }
+ public TerminalNode DEFAULT() { return getToken(ProcessingParser.DEFAULT, 0); }
+ public TerminalNode STATIC() { return getToken(ProcessingParser.STATIC, 0); }
+ public TerminalNode STRICTFP() { return getToken(ProcessingParser.STRICTFP, 0); }
+ public InterfaceMethodModifierContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_interfaceMethodModifier; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterInterfaceMethodModifier(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitInterfaceMethodModifier(this);
+ }
+ }
+
+ public final InterfaceMethodModifierContext interfaceMethodModifier() throws RecognitionException {
+ InterfaceMethodModifierContext _localctx = new InterfaceMethodModifierContext(_ctx, getState());
+ enterRule(_localctx, 92, RULE_interfaceMethodModifier);
+ try {
+ setState(739);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case AT:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(733);
+ annotation();
+ }
+ break;
+ case PUBLIC:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(734);
+ match(PUBLIC);
+ }
+ break;
+ case ABSTRACT:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(735);
+ match(ABSTRACT);
+ }
+ break;
+ case DEFAULT:
+ enterOuterAlt(_localctx, 4);
+ {
+ setState(736);
+ match(DEFAULT);
+ }
+ break;
+ case STATIC:
+ enterOuterAlt(_localctx, 5);
+ {
+ setState(737);
+ match(STATIC);
+ }
+ break;
+ case STRICTFP:
+ enterOuterAlt(_localctx, 6);
+ {
+ setState(738);
+ match(STRICTFP);
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class GenericInterfaceMethodDeclarationContext extends ParserRuleContext {
+ public TypeParametersContext typeParameters() {
+ return getRuleContext(TypeParametersContext.class,0);
+ }
+ public InterfaceMethodDeclarationContext interfaceMethodDeclaration() {
+ return getRuleContext(InterfaceMethodDeclarationContext.class,0);
+ }
+ public GenericInterfaceMethodDeclarationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_genericInterfaceMethodDeclaration; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterGenericInterfaceMethodDeclaration(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitGenericInterfaceMethodDeclaration(this);
+ }
+ }
+
+ public final GenericInterfaceMethodDeclarationContext genericInterfaceMethodDeclaration() throws RecognitionException {
+ GenericInterfaceMethodDeclarationContext _localctx = new GenericInterfaceMethodDeclarationContext(_ctx, getState());
+ enterRule(_localctx, 94, RULE_genericInterfaceMethodDeclaration);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(741);
+ typeParameters();
+ setState(742);
+ interfaceMethodDeclaration();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class VariableDeclaratorsContext extends ParserRuleContext {
+ public List variableDeclarator() {
+ return getRuleContexts(VariableDeclaratorContext.class);
+ }
+ public VariableDeclaratorContext variableDeclarator(int i) {
+ return getRuleContext(VariableDeclaratorContext.class,i);
+ }
+ public List COMMA() { return getTokens(ProcessingParser.COMMA); }
+ public TerminalNode COMMA(int i) {
+ return getToken(ProcessingParser.COMMA, i);
+ }
+ public VariableDeclaratorsContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_variableDeclarators; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterVariableDeclarators(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitVariableDeclarators(this);
+ }
+ }
+
+ public final VariableDeclaratorsContext variableDeclarators() throws RecognitionException {
+ VariableDeclaratorsContext _localctx = new VariableDeclaratorsContext(_ctx, getState());
+ enterRule(_localctx, 96, RULE_variableDeclarators);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(744);
+ variableDeclarator();
+ setState(749);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==COMMA) {
+ {
+ {
+ setState(745);
+ match(COMMA);
+ setState(746);
+ variableDeclarator();
+ }
+ }
+ setState(751);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class VariableDeclaratorContext extends ParserRuleContext {
+ public VariableDeclaratorIdContext variableDeclaratorId() {
+ return getRuleContext(VariableDeclaratorIdContext.class,0);
+ }
+ public TerminalNode ASSIGN() { return getToken(ProcessingParser.ASSIGN, 0); }
+ public VariableInitializerContext variableInitializer() {
+ return getRuleContext(VariableInitializerContext.class,0);
+ }
+ public VariableDeclaratorContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_variableDeclarator; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterVariableDeclarator(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitVariableDeclarator(this);
+ }
+ }
+
+ public final VariableDeclaratorContext variableDeclarator() throws RecognitionException {
+ VariableDeclaratorContext _localctx = new VariableDeclaratorContext(_ctx, getState());
+ enterRule(_localctx, 98, RULE_variableDeclarator);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(752);
+ variableDeclaratorId();
+ setState(755);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==ASSIGN) {
+ {
+ setState(753);
+ match(ASSIGN);
+ setState(754);
+ variableInitializer();
+ }
+ }
+
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class VariableInitializerContext extends ParserRuleContext {
+ public ArrayInitializerContext arrayInitializer() {
+ return getRuleContext(ArrayInitializerContext.class,0);
+ }
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public VariableInitializerContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_variableInitializer; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterVariableInitializer(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitVariableInitializer(this);
+ }
+ }
+
+ public final VariableInitializerContext variableInitializer() throws RecognitionException {
+ VariableInitializerContext _localctx = new VariableInitializerContext(_ctx, getState());
+ enterRule(_localctx, 100, RULE_variableInitializer);
+ try {
+ setState(759);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case LBRACE:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(757);
+ arrayInitializer();
+ }
+ break;
+ case T__0:
+ case HexColorLiteral:
+ case CHAR_LITERAL:
+ case BOOLEAN:
+ case BYTE:
+ case CHAR:
+ case DOUBLE:
+ case FLOAT:
+ case INT:
+ case LONG:
+ case NEW:
+ case SHORT:
+ case SUPER:
+ case THIS:
+ case VAR:
+ case VOID:
+ case DECIMAL_LITERAL:
+ case HEX_LITERAL:
+ case OCT_LITERAL:
+ case BINARY_LITERAL:
+ case FLOAT_LITERAL:
+ case HEX_FLOAT_LITERAL:
+ case BOOL_LITERAL:
+ case STRING_LITERAL:
+ case MULTI_STRING_LIT:
+ case NULL_LITERAL:
+ case LPAREN:
+ case LT:
+ case BANG:
+ case TILDE:
+ case INC:
+ case DEC:
+ case ADD:
+ case SUB:
+ case AT:
+ case IDENTIFIER:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(758);
+ expression(0);
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class ArrayInitializerContext extends ParserRuleContext {
+ public TerminalNode LBRACE() { return getToken(ProcessingParser.LBRACE, 0); }
+ public TerminalNode RBRACE() { return getToken(ProcessingParser.RBRACE, 0); }
+ public List variableInitializer() {
+ return getRuleContexts(VariableInitializerContext.class);
+ }
+ public VariableInitializerContext variableInitializer(int i) {
+ return getRuleContext(VariableInitializerContext.class,i);
+ }
+ public List COMMA() { return getTokens(ProcessingParser.COMMA); }
+ public TerminalNode COMMA(int i) {
+ return getToken(ProcessingParser.COMMA, i);
+ }
+ public ArrayInitializerContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_arrayInitializer; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterArrayInitializer(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitArrayInitializer(this);
+ }
+ }
+
+ public final ArrayInitializerContext arrayInitializer() throws RecognitionException {
+ ArrayInitializerContext _localctx = new ArrayInitializerContext(_ctx, getState());
+ enterRule(_localctx, 102, RULE_arrayInitializer);
+ int _la;
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(761);
+ match(LBRACE);
+ setState(773);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__0) | (1L << HexColorLiteral) | (1L << CHAR_LITERAL) | (1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VAR) | (1L << VOID) | (1L << DECIMAL_LITERAL) | (1L << HEX_LITERAL) | (1L << OCT_LITERAL) | (1L << BINARY_LITERAL) | (1L << FLOAT_LITERAL) | (1L << HEX_FLOAT_LITERAL))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (BOOL_LITERAL - 64)) | (1L << (STRING_LITERAL - 64)) | (1L << (MULTI_STRING_LIT - 64)) | (1L << (NULL_LITERAL - 64)) | (1L << (LPAREN - 64)) | (1L << (LBRACE - 64)) | (1L << (LT - 64)) | (1L << (BANG - 64)) | (1L << (TILDE - 64)) | (1L << (INC - 64)) | (1L << (DEC - 64)) | (1L << (ADD - 64)) | (1L << (SUB - 64)) | (1L << (AT - 64)) | (1L << (IDENTIFIER - 64)))) != 0)) {
+ {
+ setState(762);
+ variableInitializer();
+ setState(767);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,85,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(763);
+ match(COMMA);
+ setState(764);
+ variableInitializer();
+ }
+ }
+ }
+ setState(769);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,85,_ctx);
+ }
+ setState(771);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==COMMA) {
+ {
+ setState(770);
+ match(COMMA);
+ }
+ }
+
+ }
+ }
+
+ setState(775);
+ match(RBRACE);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class ClassOrInterfaceTypeContext extends ParserRuleContext {
+ public List IDENTIFIER() { return getTokens(ProcessingParser.IDENTIFIER); }
+ public TerminalNode IDENTIFIER(int i) {
+ return getToken(ProcessingParser.IDENTIFIER, i);
+ }
+ public List typeArguments() {
+ return getRuleContexts(TypeArgumentsContext.class);
+ }
+ public TypeArgumentsContext typeArguments(int i) {
+ return getRuleContext(TypeArgumentsContext.class,i);
+ }
+ public List DOT() { return getTokens(ProcessingParser.DOT); }
+ public TerminalNode DOT(int i) {
+ return getToken(ProcessingParser.DOT, i);
+ }
+ public ClassOrInterfaceTypeContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_classOrInterfaceType; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterClassOrInterfaceType(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitClassOrInterfaceType(this);
+ }
+ }
+
+ public final ClassOrInterfaceTypeContext classOrInterfaceType() throws RecognitionException {
+ ClassOrInterfaceTypeContext _localctx = new ClassOrInterfaceTypeContext(_ctx, getState());
+ enterRule(_localctx, 104, RULE_classOrInterfaceType);
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(777);
+ match(IDENTIFIER);
+ setState(779);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,88,_ctx) ) {
+ case 1:
+ {
+ setState(778);
+ typeArguments();
+ }
+ break;
+ }
+ setState(788);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,90,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(781);
+ match(DOT);
+ setState(782);
+ match(IDENTIFIER);
+ setState(784);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,89,_ctx) ) {
+ case 1:
+ {
+ setState(783);
+ typeArguments();
+ }
+ break;
+ }
+ }
+ }
+ }
+ setState(790);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,90,_ctx);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class TypeArgumentContext extends ParserRuleContext {
+ public TypeTypeContext typeType() {
+ return getRuleContext(TypeTypeContext.class,0);
+ }
+ public TerminalNode QUESTION() { return getToken(ProcessingParser.QUESTION, 0); }
+ public TerminalNode EXTENDS() { return getToken(ProcessingParser.EXTENDS, 0); }
+ public TerminalNode SUPER() { return getToken(ProcessingParser.SUPER, 0); }
+ public TypeArgumentContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_typeArgument; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterTypeArgument(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitTypeArgument(this);
+ }
+ }
+
+ public final TypeArgumentContext typeArgument() throws RecognitionException {
+ TypeArgumentContext _localctx = new TypeArgumentContext(_ctx, getState());
+ enterRule(_localctx, 106, RULE_typeArgument);
+ int _la;
+ try {
+ setState(797);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case T__0:
+ case BOOLEAN:
+ case BYTE:
+ case CHAR:
+ case DOUBLE:
+ case FLOAT:
+ case INT:
+ case LONG:
+ case SHORT:
+ case VAR:
+ case AT:
+ case IDENTIFIER:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(791);
+ typeType();
+ }
+ break;
+ case QUESTION:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(792);
+ match(QUESTION);
+ setState(795);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==EXTENDS || _la==SUPER) {
+ {
+ setState(793);
+ _la = _input.LA(1);
+ if ( !(_la==EXTENDS || _la==SUPER) ) {
+ _errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ setState(794);
+ typeType();
+ }
+ }
+
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class QualifiedNameListContext extends ParserRuleContext {
+ public List qualifiedName() {
+ return getRuleContexts(QualifiedNameContext.class);
+ }
+ public QualifiedNameContext qualifiedName(int i) {
+ return getRuleContext(QualifiedNameContext.class,i);
+ }
+ public List COMMA() { return getTokens(ProcessingParser.COMMA); }
+ public TerminalNode COMMA(int i) {
+ return getToken(ProcessingParser.COMMA, i);
+ }
+ public QualifiedNameListContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_qualifiedNameList; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterQualifiedNameList(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitQualifiedNameList(this);
+ }
+ }
+
+ public final QualifiedNameListContext qualifiedNameList() throws RecognitionException {
+ QualifiedNameListContext _localctx = new QualifiedNameListContext(_ctx, getState());
+ enterRule(_localctx, 108, RULE_qualifiedNameList);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(799);
+ qualifiedName();
+ setState(804);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==COMMA) {
+ {
+ {
+ setState(800);
+ match(COMMA);
+ setState(801);
+ qualifiedName();
+ }
+ }
+ setState(806);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class FormalParametersContext extends ParserRuleContext {
+ public TerminalNode LPAREN() { return getToken(ProcessingParser.LPAREN, 0); }
+ public TerminalNode RPAREN() { return getToken(ProcessingParser.RPAREN, 0); }
+ public FormalParameterListContext formalParameterList() {
+ return getRuleContext(FormalParameterListContext.class,0);
+ }
+ public FormalParametersContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_formalParameters; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterFormalParameters(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitFormalParameters(this);
+ }
+ }
+
+ public final FormalParametersContext formalParameters() throws RecognitionException {
+ FormalParametersContext _localctx = new FormalParametersContext(_ctx, getState());
+ enterRule(_localctx, 110, RULE_formalParameters);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(807);
+ match(LPAREN);
+ setState(809);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__0) | (1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FINAL) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << SHORT) | (1L << VAR))) != 0) || _la==AT || _la==IDENTIFIER) {
+ {
+ setState(808);
+ formalParameterList();
+ }
+ }
+
+ setState(811);
+ match(RPAREN);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class FormalParameterListContext extends ParserRuleContext {
+ public List formalParameter() {
+ return getRuleContexts(FormalParameterContext.class);
+ }
+ public FormalParameterContext formalParameter(int i) {
+ return getRuleContext(FormalParameterContext.class,i);
+ }
+ public List COMMA() { return getTokens(ProcessingParser.COMMA); }
+ public TerminalNode COMMA(int i) {
+ return getToken(ProcessingParser.COMMA, i);
+ }
+ public LastFormalParameterContext lastFormalParameter() {
+ return getRuleContext(LastFormalParameterContext.class,0);
+ }
+ public FormalParameterListContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_formalParameterList; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterFormalParameterList(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitFormalParameterList(this);
+ }
+ }
+
+ public final FormalParameterListContext formalParameterList() throws RecognitionException {
+ FormalParameterListContext _localctx = new FormalParameterListContext(_ctx, getState());
+ enterRule(_localctx, 112, RULE_formalParameterList);
+ int _la;
+ try {
+ int _alt;
+ setState(826);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,97,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(813);
+ formalParameter();
+ setState(818);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,95,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(814);
+ match(COMMA);
+ setState(815);
+ formalParameter();
+ }
+ }
+ }
+ setState(820);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,95,_ctx);
+ }
+ setState(823);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==COMMA) {
+ {
+ setState(821);
+ match(COMMA);
+ setState(822);
+ lastFormalParameter();
+ }
+ }
+
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(825);
+ lastFormalParameter();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class FormalParameterContext extends ParserRuleContext {
+ public TypeTypeContext typeType() {
+ return getRuleContext(TypeTypeContext.class,0);
+ }
+ public VariableDeclaratorIdContext variableDeclaratorId() {
+ return getRuleContext(VariableDeclaratorIdContext.class,0);
+ }
+ public List variableModifier() {
+ return getRuleContexts(VariableModifierContext.class);
+ }
+ public VariableModifierContext variableModifier(int i) {
+ return getRuleContext(VariableModifierContext.class,i);
+ }
+ public FormalParameterContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_formalParameter; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterFormalParameter(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitFormalParameter(this);
+ }
+ }
+
+ public final FormalParameterContext formalParameter() throws RecognitionException {
+ FormalParameterContext _localctx = new FormalParameterContext(_ctx, getState());
+ enterRule(_localctx, 114, RULE_formalParameter);
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(831);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,98,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(828);
+ variableModifier();
+ }
+ }
+ }
+ setState(833);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,98,_ctx);
+ }
+ setState(834);
+ typeType();
+ setState(835);
+ variableDeclaratorId();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class LastFormalParameterContext extends ParserRuleContext {
+ public TypeTypeContext typeType() {
+ return getRuleContext(TypeTypeContext.class,0);
+ }
+ public TerminalNode ELLIPSIS() { return getToken(ProcessingParser.ELLIPSIS, 0); }
+ public VariableDeclaratorIdContext variableDeclaratorId() {
+ return getRuleContext(VariableDeclaratorIdContext.class,0);
+ }
+ public List variableModifier() {
+ return getRuleContexts(VariableModifierContext.class);
+ }
+ public VariableModifierContext variableModifier(int i) {
+ return getRuleContext(VariableModifierContext.class,i);
+ }
+ public LastFormalParameterContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_lastFormalParameter; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterLastFormalParameter(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitLastFormalParameter(this);
+ }
+ }
+
+ public final LastFormalParameterContext lastFormalParameter() throws RecognitionException {
+ LastFormalParameterContext _localctx = new LastFormalParameterContext(_ctx, getState());
+ enterRule(_localctx, 116, RULE_lastFormalParameter);
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(840);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,99,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(837);
+ variableModifier();
+ }
+ }
+ }
+ setState(842);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,99,_ctx);
+ }
+ setState(843);
+ typeType();
+ setState(844);
+ match(ELLIPSIS);
+ setState(845);
+ variableDeclaratorId();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class BaseStringLiteralContext extends ParserRuleContext {
+ public TerminalNode STRING_LITERAL() { return getToken(ProcessingParser.STRING_LITERAL, 0); }
+ public BaseStringLiteralContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_baseStringLiteral; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterBaseStringLiteral(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitBaseStringLiteral(this);
+ }
+ }
+
+ public final BaseStringLiteralContext baseStringLiteral() throws RecognitionException {
+ BaseStringLiteralContext _localctx = new BaseStringLiteralContext(_ctx, getState());
+ enterRule(_localctx, 118, RULE_baseStringLiteral);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(847);
+ match(STRING_LITERAL);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class MultilineStringLiteralContext extends ParserRuleContext {
+ public TerminalNode MULTI_STRING_LIT() { return getToken(ProcessingParser.MULTI_STRING_LIT, 0); }
+ public MultilineStringLiteralContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_multilineStringLiteral; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterMultilineStringLiteral(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitMultilineStringLiteral(this);
+ }
+ }
+
+ public final MultilineStringLiteralContext multilineStringLiteral() throws RecognitionException {
+ MultilineStringLiteralContext _localctx = new MultilineStringLiteralContext(_ctx, getState());
+ enterRule(_localctx, 120, RULE_multilineStringLiteral);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(849);
+ match(MULTI_STRING_LIT);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class StringLiteralContext extends ParserRuleContext {
+ public BaseStringLiteralContext baseStringLiteral() {
+ return getRuleContext(BaseStringLiteralContext.class,0);
+ }
+ public MultilineStringLiteralContext multilineStringLiteral() {
+ return getRuleContext(MultilineStringLiteralContext.class,0);
+ }
+ public StringLiteralContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_stringLiteral; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterStringLiteral(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitStringLiteral(this);
+ }
+ }
+
+ public final StringLiteralContext stringLiteral() throws RecognitionException {
+ StringLiteralContext _localctx = new StringLiteralContext(_ctx, getState());
+ enterRule(_localctx, 122, RULE_stringLiteral);
+ try {
+ setState(853);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case STRING_LITERAL:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(851);
+ baseStringLiteral();
+ }
+ break;
+ case MULTI_STRING_LIT:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(852);
+ multilineStringLiteral();
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class IntegerLiteralContext extends ParserRuleContext {
+ public TerminalNode DECIMAL_LITERAL() { return getToken(ProcessingParser.DECIMAL_LITERAL, 0); }
+ public TerminalNode HEX_LITERAL() { return getToken(ProcessingParser.HEX_LITERAL, 0); }
+ public TerminalNode OCT_LITERAL() { return getToken(ProcessingParser.OCT_LITERAL, 0); }
+ public TerminalNode BINARY_LITERAL() { return getToken(ProcessingParser.BINARY_LITERAL, 0); }
+ public IntegerLiteralContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_integerLiteral; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterIntegerLiteral(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitIntegerLiteral(this);
+ }
+ }
+
+ public final IntegerLiteralContext integerLiteral() throws RecognitionException {
+ IntegerLiteralContext _localctx = new IntegerLiteralContext(_ctx, getState());
+ enterRule(_localctx, 124, RULE_integerLiteral);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(855);
+ _la = _input.LA(1);
+ if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << DECIMAL_LITERAL) | (1L << HEX_LITERAL) | (1L << OCT_LITERAL) | (1L << BINARY_LITERAL))) != 0)) ) {
+ _errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class FloatLiteralContext extends ParserRuleContext {
+ public TerminalNode FLOAT_LITERAL() { return getToken(ProcessingParser.FLOAT_LITERAL, 0); }
+ public TerminalNode HEX_FLOAT_LITERAL() { return getToken(ProcessingParser.HEX_FLOAT_LITERAL, 0); }
+ public FloatLiteralContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_floatLiteral; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterFloatLiteral(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitFloatLiteral(this);
+ }
+ }
+
+ public final FloatLiteralContext floatLiteral() throws RecognitionException {
+ FloatLiteralContext _localctx = new FloatLiteralContext(_ctx, getState());
+ enterRule(_localctx, 126, RULE_floatLiteral);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(857);
+ _la = _input.LA(1);
+ if ( !(_la==FLOAT_LITERAL || _la==HEX_FLOAT_LITERAL) ) {
+ _errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class AnnotationContext extends ParserRuleContext {
+ public TerminalNode AT() { return getToken(ProcessingParser.AT, 0); }
+ public QualifiedNameContext qualifiedName() {
+ return getRuleContext(QualifiedNameContext.class,0);
+ }
+ public TerminalNode LPAREN() { return getToken(ProcessingParser.LPAREN, 0); }
+ public TerminalNode RPAREN() { return getToken(ProcessingParser.RPAREN, 0); }
+ public ElementValuePairsContext elementValuePairs() {
+ return getRuleContext(ElementValuePairsContext.class,0);
+ }
+ public ElementValueContext elementValue() {
+ return getRuleContext(ElementValueContext.class,0);
+ }
+ public AnnotationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_annotation; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterAnnotation(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitAnnotation(this);
+ }
+ }
+
+ public final AnnotationContext annotation() throws RecognitionException {
+ AnnotationContext _localctx = new AnnotationContext(_ctx, getState());
+ enterRule(_localctx, 128, RULE_annotation);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(859);
+ match(AT);
+ setState(860);
+ qualifiedName();
+ setState(867);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==LPAREN) {
+ {
+ setState(861);
+ match(LPAREN);
+ setState(864);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,101,_ctx) ) {
+ case 1:
+ {
+ setState(862);
+ elementValuePairs();
+ }
+ break;
+ case 2:
+ {
+ setState(863);
+ elementValue();
+ }
+ break;
+ }
+ setState(866);
+ match(RPAREN);
+ }
+ }
+
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class ElementValuePairsContext extends ParserRuleContext {
+ public List elementValuePair() {
+ return getRuleContexts(ElementValuePairContext.class);
+ }
+ public ElementValuePairContext elementValuePair(int i) {
+ return getRuleContext(ElementValuePairContext.class,i);
+ }
+ public List COMMA() { return getTokens(ProcessingParser.COMMA); }
+ public TerminalNode COMMA(int i) {
+ return getToken(ProcessingParser.COMMA, i);
+ }
+ public ElementValuePairsContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_elementValuePairs; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterElementValuePairs(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitElementValuePairs(this);
+ }
+ }
+
+ public final ElementValuePairsContext elementValuePairs() throws RecognitionException {
+ ElementValuePairsContext _localctx = new ElementValuePairsContext(_ctx, getState());
+ enterRule(_localctx, 130, RULE_elementValuePairs);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(869);
+ elementValuePair();
+ setState(874);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==COMMA) {
+ {
+ {
+ setState(870);
+ match(COMMA);
+ setState(871);
+ elementValuePair();
+ }
+ }
+ setState(876);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class ElementValuePairContext extends ParserRuleContext {
+ public TerminalNode IDENTIFIER() { return getToken(ProcessingParser.IDENTIFIER, 0); }
+ public TerminalNode ASSIGN() { return getToken(ProcessingParser.ASSIGN, 0); }
+ public ElementValueContext elementValue() {
+ return getRuleContext(ElementValueContext.class,0);
+ }
+ public ElementValuePairContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_elementValuePair; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterElementValuePair(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitElementValuePair(this);
+ }
+ }
+
+ public final ElementValuePairContext elementValuePair() throws RecognitionException {
+ ElementValuePairContext _localctx = new ElementValuePairContext(_ctx, getState());
+ enterRule(_localctx, 132, RULE_elementValuePair);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(877);
+ match(IDENTIFIER);
+ setState(878);
+ match(ASSIGN);
+ setState(879);
+ elementValue();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class ElementValueContext extends ParserRuleContext {
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public AnnotationContext annotation() {
+ return getRuleContext(AnnotationContext.class,0);
+ }
+ public ElementValueArrayInitializerContext elementValueArrayInitializer() {
+ return getRuleContext(ElementValueArrayInitializerContext.class,0);
+ }
+ public ElementValueContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_elementValue; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterElementValue(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitElementValue(this);
+ }
+ }
+
+ public final ElementValueContext elementValue() throws RecognitionException {
+ ElementValueContext _localctx = new ElementValueContext(_ctx, getState());
+ enterRule(_localctx, 134, RULE_elementValue);
+ try {
+ setState(884);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,104,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(881);
+ expression(0);
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(882);
+ annotation();
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(883);
+ elementValueArrayInitializer();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class ElementValueArrayInitializerContext extends ParserRuleContext {
+ public TerminalNode LBRACE() { return getToken(ProcessingParser.LBRACE, 0); }
+ public TerminalNode RBRACE() { return getToken(ProcessingParser.RBRACE, 0); }
+ public List elementValue() {
+ return getRuleContexts(ElementValueContext.class);
+ }
+ public ElementValueContext elementValue(int i) {
+ return getRuleContext(ElementValueContext.class,i);
+ }
+ public List COMMA() { return getTokens(ProcessingParser.COMMA); }
+ public TerminalNode COMMA(int i) {
+ return getToken(ProcessingParser.COMMA, i);
+ }
+ public ElementValueArrayInitializerContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_elementValueArrayInitializer; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterElementValueArrayInitializer(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitElementValueArrayInitializer(this);
+ }
+ }
+
+ public final ElementValueArrayInitializerContext elementValueArrayInitializer() throws RecognitionException {
+ ElementValueArrayInitializerContext _localctx = new ElementValueArrayInitializerContext(_ctx, getState());
+ enterRule(_localctx, 136, RULE_elementValueArrayInitializer);
+ int _la;
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(886);
+ match(LBRACE);
+ setState(895);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__0) | (1L << HexColorLiteral) | (1L << CHAR_LITERAL) | (1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VAR) | (1L << VOID) | (1L << DECIMAL_LITERAL) | (1L << HEX_LITERAL) | (1L << OCT_LITERAL) | (1L << BINARY_LITERAL) | (1L << FLOAT_LITERAL) | (1L << HEX_FLOAT_LITERAL))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (BOOL_LITERAL - 64)) | (1L << (STRING_LITERAL - 64)) | (1L << (MULTI_STRING_LIT - 64)) | (1L << (NULL_LITERAL - 64)) | (1L << (LPAREN - 64)) | (1L << (LBRACE - 64)) | (1L << (LT - 64)) | (1L << (BANG - 64)) | (1L << (TILDE - 64)) | (1L << (INC - 64)) | (1L << (DEC - 64)) | (1L << (ADD - 64)) | (1L << (SUB - 64)) | (1L << (AT - 64)) | (1L << (IDENTIFIER - 64)))) != 0)) {
+ {
+ setState(887);
+ elementValue();
+ setState(892);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,105,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(888);
+ match(COMMA);
+ setState(889);
+ elementValue();
+ }
+ }
+ }
+ setState(894);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,105,_ctx);
+ }
+ }
+ }
+
+ setState(898);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==COMMA) {
+ {
+ setState(897);
+ match(COMMA);
+ }
+ }
+
+ setState(900);
+ match(RBRACE);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class AnnotationTypeDeclarationContext extends ParserRuleContext {
+ public TerminalNode AT() { return getToken(ProcessingParser.AT, 0); }
+ public TerminalNode INTERFACE() { return getToken(ProcessingParser.INTERFACE, 0); }
+ public TerminalNode IDENTIFIER() { return getToken(ProcessingParser.IDENTIFIER, 0); }
+ public AnnotationTypeBodyContext annotationTypeBody() {
+ return getRuleContext(AnnotationTypeBodyContext.class,0);
+ }
+ public AnnotationTypeDeclarationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_annotationTypeDeclaration; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterAnnotationTypeDeclaration(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitAnnotationTypeDeclaration(this);
+ }
+ }
+
+ public final AnnotationTypeDeclarationContext annotationTypeDeclaration() throws RecognitionException {
+ AnnotationTypeDeclarationContext _localctx = new AnnotationTypeDeclarationContext(_ctx, getState());
+ enterRule(_localctx, 138, RULE_annotationTypeDeclaration);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(902);
+ match(AT);
+ setState(903);
+ match(INTERFACE);
+ setState(904);
+ match(IDENTIFIER);
+ setState(905);
+ annotationTypeBody();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class AnnotationTypeBodyContext extends ParserRuleContext {
+ public TerminalNode LBRACE() { return getToken(ProcessingParser.LBRACE, 0); }
+ public TerminalNode RBRACE() { return getToken(ProcessingParser.RBRACE, 0); }
+ public List annotationTypeElementDeclaration() {
+ return getRuleContexts(AnnotationTypeElementDeclarationContext.class);
+ }
+ public AnnotationTypeElementDeclarationContext annotationTypeElementDeclaration(int i) {
+ return getRuleContext(AnnotationTypeElementDeclarationContext.class,i);
+ }
+ public AnnotationTypeBodyContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_annotationTypeBody; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterAnnotationTypeBody(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitAnnotationTypeBody(this);
+ }
+ }
+
+ public final AnnotationTypeBodyContext annotationTypeBody() throws RecognitionException {
+ AnnotationTypeBodyContext _localctx = new AnnotationTypeBodyContext(_ctx, getState());
+ enterRule(_localctx, 140, RULE_annotationTypeBody);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(907);
+ match(LBRACE);
+ setState(911);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__0) | (1L << ABSTRACT) | (1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << CLASS) | (1L << DOUBLE) | (1L << ENUM) | (1L << FINAL) | (1L << FLOAT) | (1L << INT) | (1L << INTERFACE) | (1L << LONG) | (1L << NATIVE) | (1L << PRIVATE) | (1L << PROTECTED) | (1L << PUBLIC) | (1L << SHORT) | (1L << STATIC) | (1L << STRICTFP) | (1L << SYNCHRONIZED) | (1L << TRANSIENT) | (1L << VAR) | (1L << VOLATILE))) != 0) || ((((_la - 74)) & ~0x3f) == 0 && ((1L << (_la - 74)) & ((1L << (SEMI - 74)) | (1L << (AT - 74)) | (1L << (IDENTIFIER - 74)))) != 0)) {
+ {
+ {
+ setState(908);
+ annotationTypeElementDeclaration();
+ }
+ }
+ setState(913);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(914);
+ match(RBRACE);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class AnnotationTypeElementDeclarationContext extends ParserRuleContext {
+ public AnnotationTypeElementRestContext annotationTypeElementRest() {
+ return getRuleContext(AnnotationTypeElementRestContext.class,0);
+ }
+ public List modifier() {
+ return getRuleContexts(ModifierContext.class);
+ }
+ public ModifierContext modifier(int i) {
+ return getRuleContext(ModifierContext.class,i);
+ }
+ public TerminalNode SEMI() { return getToken(ProcessingParser.SEMI, 0); }
+ public AnnotationTypeElementDeclarationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_annotationTypeElementDeclaration; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterAnnotationTypeElementDeclaration(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitAnnotationTypeElementDeclaration(this);
+ }
+ }
+
+ public final AnnotationTypeElementDeclarationContext annotationTypeElementDeclaration() throws RecognitionException {
+ AnnotationTypeElementDeclarationContext _localctx = new AnnotationTypeElementDeclarationContext(_ctx, getState());
+ enterRule(_localctx, 142, RULE_annotationTypeElementDeclaration);
+ try {
+ int _alt;
+ setState(924);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case T__0:
+ case ABSTRACT:
+ case BOOLEAN:
+ case BYTE:
+ case CHAR:
+ case CLASS:
+ case DOUBLE:
+ case ENUM:
+ case FINAL:
+ case FLOAT:
+ case INT:
+ case INTERFACE:
+ case LONG:
+ case NATIVE:
+ case PRIVATE:
+ case PROTECTED:
+ case PUBLIC:
+ case SHORT:
+ case STATIC:
+ case STRICTFP:
+ case SYNCHRONIZED:
+ case TRANSIENT:
+ case VAR:
+ case VOLATILE:
+ case AT:
+ case IDENTIFIER:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(919);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,109,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(916);
+ modifier();
+ }
+ }
+ }
+ setState(921);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,109,_ctx);
+ }
+ setState(922);
+ annotationTypeElementRest();
+ }
+ break;
+ case SEMI:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(923);
+ match(SEMI);
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class AnnotationTypeElementRestContext extends ParserRuleContext {
+ public TypeTypeContext typeType() {
+ return getRuleContext(TypeTypeContext.class,0);
+ }
+ public AnnotationMethodOrConstantRestContext annotationMethodOrConstantRest() {
+ return getRuleContext(AnnotationMethodOrConstantRestContext.class,0);
+ }
+ public TerminalNode SEMI() { return getToken(ProcessingParser.SEMI, 0); }
+ public ClassDeclarationContext classDeclaration() {
+ return getRuleContext(ClassDeclarationContext.class,0);
+ }
+ public InterfaceDeclarationContext interfaceDeclaration() {
+ return getRuleContext(InterfaceDeclarationContext.class,0);
+ }
+ public EnumDeclarationContext enumDeclaration() {
+ return getRuleContext(EnumDeclarationContext.class,0);
+ }
+ public AnnotationTypeDeclarationContext annotationTypeDeclaration() {
+ return getRuleContext(AnnotationTypeDeclarationContext.class,0);
+ }
+ public AnnotationTypeElementRestContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_annotationTypeElementRest; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterAnnotationTypeElementRest(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitAnnotationTypeElementRest(this);
+ }
+ }
+
+ public final AnnotationTypeElementRestContext annotationTypeElementRest() throws RecognitionException {
+ AnnotationTypeElementRestContext _localctx = new AnnotationTypeElementRestContext(_ctx, getState());
+ enterRule(_localctx, 144, RULE_annotationTypeElementRest);
+ try {
+ setState(946);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,115,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(926);
+ typeType();
+ setState(927);
+ annotationMethodOrConstantRest();
+ setState(928);
+ match(SEMI);
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(930);
+ classDeclaration();
+ setState(932);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,111,_ctx) ) {
+ case 1:
+ {
+ setState(931);
+ match(SEMI);
+ }
+ break;
+ }
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(934);
+ interfaceDeclaration();
+ setState(936);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,112,_ctx) ) {
+ case 1:
+ {
+ setState(935);
+ match(SEMI);
+ }
+ break;
+ }
+ }
+ break;
+ case 4:
+ enterOuterAlt(_localctx, 4);
+ {
+ setState(938);
+ enumDeclaration();
+ setState(940);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,113,_ctx) ) {
+ case 1:
+ {
+ setState(939);
+ match(SEMI);
+ }
+ break;
+ }
+ }
+ break;
+ case 5:
+ enterOuterAlt(_localctx, 5);
+ {
+ setState(942);
+ annotationTypeDeclaration();
+ setState(944);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,114,_ctx) ) {
+ case 1:
+ {
+ setState(943);
+ match(SEMI);
+ }
+ break;
+ }
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class AnnotationMethodOrConstantRestContext extends ParserRuleContext {
+ public AnnotationMethodRestContext annotationMethodRest() {
+ return getRuleContext(AnnotationMethodRestContext.class,0);
+ }
+ public AnnotationConstantRestContext annotationConstantRest() {
+ return getRuleContext(AnnotationConstantRestContext.class,0);
+ }
+ public AnnotationMethodOrConstantRestContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_annotationMethodOrConstantRest; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterAnnotationMethodOrConstantRest(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitAnnotationMethodOrConstantRest(this);
+ }
+ }
+
+ public final AnnotationMethodOrConstantRestContext annotationMethodOrConstantRest() throws RecognitionException {
+ AnnotationMethodOrConstantRestContext _localctx = new AnnotationMethodOrConstantRestContext(_ctx, getState());
+ enterRule(_localctx, 146, RULE_annotationMethodOrConstantRest);
+ try {
+ setState(950);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,116,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(948);
+ annotationMethodRest();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(949);
+ annotationConstantRest();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class AnnotationMethodRestContext extends ParserRuleContext {
+ public TerminalNode IDENTIFIER() { return getToken(ProcessingParser.IDENTIFIER, 0); }
+ public TerminalNode LPAREN() { return getToken(ProcessingParser.LPAREN, 0); }
+ public TerminalNode RPAREN() { return getToken(ProcessingParser.RPAREN, 0); }
+ public DefaultValueContext defaultValue() {
+ return getRuleContext(DefaultValueContext.class,0);
+ }
+ public AnnotationMethodRestContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_annotationMethodRest; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterAnnotationMethodRest(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitAnnotationMethodRest(this);
+ }
+ }
+
+ public final AnnotationMethodRestContext annotationMethodRest() throws RecognitionException {
+ AnnotationMethodRestContext _localctx = new AnnotationMethodRestContext(_ctx, getState());
+ enterRule(_localctx, 148, RULE_annotationMethodRest);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(952);
+ match(IDENTIFIER);
+ setState(953);
+ match(LPAREN);
+ setState(954);
+ match(RPAREN);
+ setState(956);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==DEFAULT) {
+ {
+ setState(955);
+ defaultValue();
+ }
+ }
+
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class AnnotationConstantRestContext extends ParserRuleContext {
+ public VariableDeclaratorsContext variableDeclarators() {
+ return getRuleContext(VariableDeclaratorsContext.class,0);
+ }
+ public AnnotationConstantRestContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_annotationConstantRest; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterAnnotationConstantRest(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitAnnotationConstantRest(this);
+ }
+ }
+
+ public final AnnotationConstantRestContext annotationConstantRest() throws RecognitionException {
+ AnnotationConstantRestContext _localctx = new AnnotationConstantRestContext(_ctx, getState());
+ enterRule(_localctx, 150, RULE_annotationConstantRest);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(958);
+ variableDeclarators();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class DefaultValueContext extends ParserRuleContext {
+ public TerminalNode DEFAULT() { return getToken(ProcessingParser.DEFAULT, 0); }
+ public ElementValueContext elementValue() {
+ return getRuleContext(ElementValueContext.class,0);
+ }
+ public DefaultValueContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_defaultValue; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterDefaultValue(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitDefaultValue(this);
+ }
+ }
+
+ public final DefaultValueContext defaultValue() throws RecognitionException {
+ DefaultValueContext _localctx = new DefaultValueContext(_ctx, getState());
+ enterRule(_localctx, 152, RULE_defaultValue);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(960);
+ match(DEFAULT);
+ setState(961);
+ elementValue();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class BlockContext extends ParserRuleContext {
+ public TerminalNode LBRACE() { return getToken(ProcessingParser.LBRACE, 0); }
+ public TerminalNode RBRACE() { return getToken(ProcessingParser.RBRACE, 0); }
+ public List blockStatement() {
+ return getRuleContexts(BlockStatementContext.class);
+ }
+ public BlockStatementContext blockStatement(int i) {
+ return getRuleContext(BlockStatementContext.class,i);
+ }
+ public BlockContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_block; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterBlock(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitBlock(this);
+ }
+ }
+
+ public final BlockContext block() throws RecognitionException {
+ BlockContext _localctx = new BlockContext(_ctx, getState());
+ enterRule(_localctx, 154, RULE_block);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(963);
+ match(LBRACE);
+ setState(967);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__0) | (1L << HexColorLiteral) | (1L << CHAR_LITERAL) | (1L << ABSTRACT) | (1L << ASSERT) | (1L << BOOLEAN) | (1L << BREAK) | (1L << BYTE) | (1L << CHAR) | (1L << CLASS) | (1L << CONTINUE) | (1L << DO) | (1L << DOUBLE) | (1L << FINAL) | (1L << FLOAT) | (1L << FOR) | (1L << IF) | (1L << INT) | (1L << INTERFACE) | (1L << LONG) | (1L << NEW) | (1L << PRIVATE) | (1L << PROTECTED) | (1L << PUBLIC) | (1L << RETURN) | (1L << SHORT) | (1L << STATIC) | (1L << STRICTFP) | (1L << SUPER) | (1L << SWITCH) | (1L << SYNCHRONIZED) | (1L << THIS) | (1L << THROW) | (1L << TRY) | (1L << VAR) | (1L << VOID) | (1L << WHILE) | (1L << DECIMAL_LITERAL) | (1L << HEX_LITERAL) | (1L << OCT_LITERAL) | (1L << BINARY_LITERAL) | (1L << FLOAT_LITERAL) | (1L << HEX_FLOAT_LITERAL))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (BOOL_LITERAL - 64)) | (1L << (STRING_LITERAL - 64)) | (1L << (MULTI_STRING_LIT - 64)) | (1L << (NULL_LITERAL - 64)) | (1L << (LPAREN - 64)) | (1L << (LBRACE - 64)) | (1L << (SEMI - 64)) | (1L << (LT - 64)) | (1L << (BANG - 64)) | (1L << (TILDE - 64)) | (1L << (INC - 64)) | (1L << (DEC - 64)) | (1L << (ADD - 64)) | (1L << (SUB - 64)) | (1L << (AT - 64)) | (1L << (IDENTIFIER - 64)))) != 0)) {
+ {
+ {
+ setState(964);
+ blockStatement();
+ }
+ }
+ setState(969);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(970);
+ match(RBRACE);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class BlockStatementContext extends ParserRuleContext {
+ public LocalVariableDeclarationContext localVariableDeclaration() {
+ return getRuleContext(LocalVariableDeclarationContext.class,0);
+ }
+ public TerminalNode SEMI() { return getToken(ProcessingParser.SEMI, 0); }
+ public StatementContext statement() {
+ return getRuleContext(StatementContext.class,0);
+ }
+ public LocalTypeDeclarationContext localTypeDeclaration() {
+ return getRuleContext(LocalTypeDeclarationContext.class,0);
+ }
+ public BlockStatementContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_blockStatement; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterBlockStatement(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitBlockStatement(this);
+ }
+ }
+
+ public final BlockStatementContext blockStatement() throws RecognitionException {
+ BlockStatementContext _localctx = new BlockStatementContext(_ctx, getState());
+ enterRule(_localctx, 156, RULE_blockStatement);
+ try {
+ setState(977);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,119,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(972);
+ localVariableDeclaration();
+ setState(973);
+ match(SEMI);
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(975);
+ statement();
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(976);
+ localTypeDeclaration();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class LocalVariableDeclarationContext extends ParserRuleContext {
+ public TypeTypeContext typeType() {
+ return getRuleContext(TypeTypeContext.class,0);
+ }
+ public VariableDeclaratorsContext variableDeclarators() {
+ return getRuleContext(VariableDeclaratorsContext.class,0);
+ }
+ public List variableModifier() {
+ return getRuleContexts(VariableModifierContext.class);
+ }
+ public VariableModifierContext variableModifier(int i) {
+ return getRuleContext(VariableModifierContext.class,i);
+ }
+ public LocalVariableDeclarationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_localVariableDeclaration; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterLocalVariableDeclaration(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitLocalVariableDeclaration(this);
+ }
+ }
+
+ public final LocalVariableDeclarationContext localVariableDeclaration() throws RecognitionException {
+ LocalVariableDeclarationContext _localctx = new LocalVariableDeclarationContext(_ctx, getState());
+ enterRule(_localctx, 158, RULE_localVariableDeclaration);
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(982);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,120,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(979);
+ variableModifier();
+ }
+ }
+ }
+ setState(984);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,120,_ctx);
+ }
+ setState(985);
+ typeType();
+ setState(986);
+ variableDeclarators();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class LocalTypeDeclarationContext extends ParserRuleContext {
+ public ClassDeclarationContext classDeclaration() {
+ return getRuleContext(ClassDeclarationContext.class,0);
+ }
+ public InterfaceDeclarationContext interfaceDeclaration() {
+ return getRuleContext(InterfaceDeclarationContext.class,0);
+ }
+ public List classOrInterfaceModifier() {
+ return getRuleContexts(ClassOrInterfaceModifierContext.class);
+ }
+ public ClassOrInterfaceModifierContext classOrInterfaceModifier(int i) {
+ return getRuleContext(ClassOrInterfaceModifierContext.class,i);
+ }
+ public TerminalNode SEMI() { return getToken(ProcessingParser.SEMI, 0); }
+ public LocalTypeDeclarationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_localTypeDeclaration; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterLocalTypeDeclaration(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitLocalTypeDeclaration(this);
+ }
+ }
+
+ public final LocalTypeDeclarationContext localTypeDeclaration() throws RecognitionException {
+ LocalTypeDeclarationContext _localctx = new LocalTypeDeclarationContext(_ctx, getState());
+ enterRule(_localctx, 160, RULE_localTypeDeclaration);
+ int _la;
+ try {
+ setState(999);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case ABSTRACT:
+ case CLASS:
+ case FINAL:
+ case INTERFACE:
+ case PRIVATE:
+ case PROTECTED:
+ case PUBLIC:
+ case STATIC:
+ case STRICTFP:
+ case AT:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(991);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABSTRACT) | (1L << FINAL) | (1L << PRIVATE) | (1L << PROTECTED) | (1L << PUBLIC) | (1L << STATIC) | (1L << STRICTFP))) != 0) || _la==AT) {
+ {
+ {
+ setState(988);
+ classOrInterfaceModifier();
+ }
+ }
+ setState(993);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(996);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case CLASS:
+ {
+ setState(994);
+ classDeclaration();
+ }
+ break;
+ case INTERFACE:
+ {
+ setState(995);
+ interfaceDeclaration();
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ break;
+ case SEMI:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(998);
+ match(SEMI);
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class StatementContext extends ParserRuleContext {
+ public BlockContext blockLabel;
+ public ExpressionContext statementExpression;
+ public Token identifierLabel;
+ public BlockContext block() {
+ return getRuleContext(BlockContext.class,0);
+ }
+ public TerminalNode ASSERT() { return getToken(ProcessingParser.ASSERT, 0); }
+ public List expression() {
+ return getRuleContexts(ExpressionContext.class);
+ }
+ public ExpressionContext expression(int i) {
+ return getRuleContext(ExpressionContext.class,i);
+ }
+ public TerminalNode SEMI() { return getToken(ProcessingParser.SEMI, 0); }
+ public TerminalNode COLON() { return getToken(ProcessingParser.COLON, 0); }
+ public TerminalNode IF() { return getToken(ProcessingParser.IF, 0); }
+ public ParExpressionContext parExpression() {
+ return getRuleContext(ParExpressionContext.class,0);
+ }
+ public List statement() {
+ return getRuleContexts(StatementContext.class);
+ }
+ public StatementContext statement(int i) {
+ return getRuleContext(StatementContext.class,i);
+ }
+ public TerminalNode ELSE() { return getToken(ProcessingParser.ELSE, 0); }
+ public TerminalNode FOR() { return getToken(ProcessingParser.FOR, 0); }
+ public TerminalNode LPAREN() { return getToken(ProcessingParser.LPAREN, 0); }
+ public ForControlContext forControl() {
+ return getRuleContext(ForControlContext.class,0);
+ }
+ public TerminalNode RPAREN() { return getToken(ProcessingParser.RPAREN, 0); }
+ public TerminalNode WHILE() { return getToken(ProcessingParser.WHILE, 0); }
+ public TerminalNode DO() { return getToken(ProcessingParser.DO, 0); }
+ public TerminalNode TRY() { return getToken(ProcessingParser.TRY, 0); }
+ public FinallyBlockContext finallyBlock() {
+ return getRuleContext(FinallyBlockContext.class,0);
+ }
+ public List catchClause() {
+ return getRuleContexts(CatchClauseContext.class);
+ }
+ public CatchClauseContext catchClause(int i) {
+ return getRuleContext(CatchClauseContext.class,i);
+ }
+ public ResourceSpecificationContext resourceSpecification() {
+ return getRuleContext(ResourceSpecificationContext.class,0);
+ }
+ public TerminalNode SWITCH() { return getToken(ProcessingParser.SWITCH, 0); }
+ public TerminalNode LBRACE() { return getToken(ProcessingParser.LBRACE, 0); }
+ public TerminalNode RBRACE() { return getToken(ProcessingParser.RBRACE, 0); }
+ public List switchBlockStatementGroup() {
+ return getRuleContexts(SwitchBlockStatementGroupContext.class);
+ }
+ public SwitchBlockStatementGroupContext switchBlockStatementGroup(int i) {
+ return getRuleContext(SwitchBlockStatementGroupContext.class,i);
+ }
+ public List switchLabel() {
+ return getRuleContexts(SwitchLabelContext.class);
+ }
+ public SwitchLabelContext switchLabel(int i) {
+ return getRuleContext(SwitchLabelContext.class,i);
+ }
+ public TerminalNode SYNCHRONIZED() { return getToken(ProcessingParser.SYNCHRONIZED, 0); }
+ public TerminalNode RETURN() { return getToken(ProcessingParser.RETURN, 0); }
+ public TerminalNode THROW() { return getToken(ProcessingParser.THROW, 0); }
+ public TerminalNode BREAK() { return getToken(ProcessingParser.BREAK, 0); }
+ public TerminalNode IDENTIFIER() { return getToken(ProcessingParser.IDENTIFIER, 0); }
+ public TerminalNode CONTINUE() { return getToken(ProcessingParser.CONTINUE, 0); }
+ public StatementContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_statement; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterStatement(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitStatement(this);
+ }
+ }
+
+ public final StatementContext statement() throws RecognitionException {
+ StatementContext _localctx = new StatementContext(_ctx, getState());
+ enterRule(_localctx, 162, RULE_statement);
+ int _la;
+ try {
+ int _alt;
+ setState(1105);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,136,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1001);
+ ((StatementContext)_localctx).blockLabel = block();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1002);
+ match(ASSERT);
+ setState(1003);
+ expression(0);
+ setState(1006);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==COLON) {
+ {
+ setState(1004);
+ match(COLON);
+ setState(1005);
+ expression(0);
+ }
+ }
+
+ setState(1008);
+ match(SEMI);
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(1010);
+ match(IF);
+ setState(1011);
+ parExpression();
+ setState(1012);
+ statement();
+ setState(1015);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,125,_ctx) ) {
+ case 1:
+ {
+ setState(1013);
+ match(ELSE);
+ setState(1014);
+ statement();
+ }
+ break;
+ }
+ }
+ break;
+ case 4:
+ enterOuterAlt(_localctx, 4);
+ {
+ setState(1017);
+ match(FOR);
+ setState(1018);
+ match(LPAREN);
+ setState(1019);
+ forControl();
+ setState(1020);
+ match(RPAREN);
+ setState(1021);
+ statement();
+ }
+ break;
+ case 5:
+ enterOuterAlt(_localctx, 5);
+ {
+ setState(1023);
+ match(WHILE);
+ setState(1024);
+ parExpression();
+ setState(1025);
+ statement();
+ }
+ break;
+ case 6:
+ enterOuterAlt(_localctx, 6);
+ {
+ setState(1027);
+ match(DO);
+ setState(1028);
+ statement();
+ setState(1029);
+ match(WHILE);
+ setState(1030);
+ parExpression();
+ setState(1031);
+ match(SEMI);
+ }
+ break;
+ case 7:
+ enterOuterAlt(_localctx, 7);
+ {
+ setState(1033);
+ match(TRY);
+ setState(1034);
+ block();
+ setState(1044);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case CATCH:
+ {
+ setState(1036);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ do {
+ {
+ {
+ setState(1035);
+ catchClause();
+ }
+ }
+ setState(1038);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ } while ( _la==CATCH );
+ setState(1041);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==FINALLY) {
+ {
+ setState(1040);
+ finallyBlock();
+ }
+ }
+
+ }
+ break;
+ case FINALLY:
+ {
+ setState(1043);
+ finallyBlock();
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ break;
+ case 8:
+ enterOuterAlt(_localctx, 8);
+ {
+ setState(1046);
+ match(TRY);
+ setState(1047);
+ resourceSpecification();
+ setState(1048);
+ block();
+ setState(1052);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==CATCH) {
+ {
+ {
+ setState(1049);
+ catchClause();
+ }
+ }
+ setState(1054);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(1056);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==FINALLY) {
+ {
+ setState(1055);
+ finallyBlock();
+ }
+ }
+
+ }
+ break;
+ case 9:
+ enterOuterAlt(_localctx, 9);
+ {
+ setState(1058);
+ match(SWITCH);
+ setState(1059);
+ parExpression();
+ setState(1060);
+ match(LBRACE);
+ setState(1064);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,131,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(1061);
+ switchBlockStatementGroup();
+ }
+ }
+ }
+ setState(1066);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,131,_ctx);
+ }
+ setState(1070);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==CASE || _la==DEFAULT) {
+ {
+ {
+ setState(1067);
+ switchLabel();
+ }
+ }
+ setState(1072);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(1073);
+ match(RBRACE);
+ }
+ break;
+ case 10:
+ enterOuterAlt(_localctx, 10);
+ {
+ setState(1075);
+ match(SYNCHRONIZED);
+ setState(1076);
+ parExpression();
+ setState(1077);
+ block();
+ }
+ break;
+ case 11:
+ enterOuterAlt(_localctx, 11);
+ {
+ setState(1079);
+ match(RETURN);
+ setState(1081);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__0) | (1L << HexColorLiteral) | (1L << CHAR_LITERAL) | (1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VAR) | (1L << VOID) | (1L << DECIMAL_LITERAL) | (1L << HEX_LITERAL) | (1L << OCT_LITERAL) | (1L << BINARY_LITERAL) | (1L << FLOAT_LITERAL) | (1L << HEX_FLOAT_LITERAL))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (BOOL_LITERAL - 64)) | (1L << (STRING_LITERAL - 64)) | (1L << (MULTI_STRING_LIT - 64)) | (1L << (NULL_LITERAL - 64)) | (1L << (LPAREN - 64)) | (1L << (LT - 64)) | (1L << (BANG - 64)) | (1L << (TILDE - 64)) | (1L << (INC - 64)) | (1L << (DEC - 64)) | (1L << (ADD - 64)) | (1L << (SUB - 64)) | (1L << (AT - 64)) | (1L << (IDENTIFIER - 64)))) != 0)) {
+ {
+ setState(1080);
+ expression(0);
+ }
+ }
+
+ setState(1083);
+ match(SEMI);
+ }
+ break;
+ case 12:
+ enterOuterAlt(_localctx, 12);
+ {
+ setState(1084);
+ match(THROW);
+ setState(1085);
+ expression(0);
+ setState(1086);
+ match(SEMI);
+ }
+ break;
+ case 13:
+ enterOuterAlt(_localctx, 13);
+ {
+ setState(1088);
+ match(BREAK);
+ setState(1090);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==IDENTIFIER) {
+ {
+ setState(1089);
+ match(IDENTIFIER);
+ }
+ }
+
+ setState(1092);
+ match(SEMI);
+ }
+ break;
+ case 14:
+ enterOuterAlt(_localctx, 14);
+ {
+ setState(1093);
+ match(CONTINUE);
+ setState(1095);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==IDENTIFIER) {
+ {
+ setState(1094);
+ match(IDENTIFIER);
+ }
+ }
+
+ setState(1097);
+ match(SEMI);
+ }
+ break;
+ case 15:
+ enterOuterAlt(_localctx, 15);
+ {
+ setState(1098);
+ match(SEMI);
+ }
+ break;
+ case 16:
+ enterOuterAlt(_localctx, 16);
+ {
+ setState(1099);
+ ((StatementContext)_localctx).statementExpression = expression(0);
+ setState(1100);
+ match(SEMI);
+ }
+ break;
+ case 17:
+ enterOuterAlt(_localctx, 17);
+ {
+ setState(1102);
+ ((StatementContext)_localctx).identifierLabel = match(IDENTIFIER);
+ setState(1103);
+ match(COLON);
+ setState(1104);
+ statement();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class CatchClauseContext extends ParserRuleContext {
+ public TerminalNode CATCH() { return getToken(ProcessingParser.CATCH, 0); }
+ public TerminalNode LPAREN() { return getToken(ProcessingParser.LPAREN, 0); }
+ public CatchTypeContext catchType() {
+ return getRuleContext(CatchTypeContext.class,0);
+ }
+ public TerminalNode IDENTIFIER() { return getToken(ProcessingParser.IDENTIFIER, 0); }
+ public TerminalNode RPAREN() { return getToken(ProcessingParser.RPAREN, 0); }
+ public BlockContext block() {
+ return getRuleContext(BlockContext.class,0);
+ }
+ public List variableModifier() {
+ return getRuleContexts(VariableModifierContext.class);
+ }
+ public VariableModifierContext variableModifier(int i) {
+ return getRuleContext(VariableModifierContext.class,i);
+ }
+ public CatchClauseContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_catchClause; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterCatchClause(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitCatchClause(this);
+ }
+ }
+
+ public final CatchClauseContext catchClause() throws RecognitionException {
+ CatchClauseContext _localctx = new CatchClauseContext(_ctx, getState());
+ enterRule(_localctx, 164, RULE_catchClause);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1107);
+ match(CATCH);
+ setState(1108);
+ match(LPAREN);
+ setState(1112);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==FINAL || _la==AT) {
+ {
+ {
+ setState(1109);
+ variableModifier();
+ }
+ }
+ setState(1114);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(1115);
+ catchType();
+ setState(1116);
+ match(IDENTIFIER);
+ setState(1117);
+ match(RPAREN);
+ setState(1118);
+ block();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class CatchTypeContext extends ParserRuleContext {
+ public List qualifiedName() {
+ return getRuleContexts(QualifiedNameContext.class);
+ }
+ public QualifiedNameContext qualifiedName(int i) {
+ return getRuleContext(QualifiedNameContext.class,i);
+ }
+ public List BITOR() { return getTokens(ProcessingParser.BITOR); }
+ public TerminalNode BITOR(int i) {
+ return getToken(ProcessingParser.BITOR, i);
+ }
+ public CatchTypeContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_catchType; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterCatchType(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitCatchType(this);
+ }
+ }
+
+ public final CatchTypeContext catchType() throws RecognitionException {
+ CatchTypeContext _localctx = new CatchTypeContext(_ctx, getState());
+ enterRule(_localctx, 166, RULE_catchType);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1120);
+ qualifiedName();
+ setState(1125);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==BITOR) {
+ {
+ {
+ setState(1121);
+ match(BITOR);
+ setState(1122);
+ qualifiedName();
+ }
+ }
+ setState(1127);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class FinallyBlockContext extends ParserRuleContext {
+ public TerminalNode FINALLY() { return getToken(ProcessingParser.FINALLY, 0); }
+ public BlockContext block() {
+ return getRuleContext(BlockContext.class,0);
+ }
+ public FinallyBlockContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_finallyBlock; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterFinallyBlock(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitFinallyBlock(this);
+ }
+ }
+
+ public final FinallyBlockContext finallyBlock() throws RecognitionException {
+ FinallyBlockContext _localctx = new FinallyBlockContext(_ctx, getState());
+ enterRule(_localctx, 168, RULE_finallyBlock);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1128);
+ match(FINALLY);
+ setState(1129);
+ block();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class ResourceSpecificationContext extends ParserRuleContext {
+ public TerminalNode LPAREN() { return getToken(ProcessingParser.LPAREN, 0); }
+ public ResourcesContext resources() {
+ return getRuleContext(ResourcesContext.class,0);
+ }
+ public TerminalNode RPAREN() { return getToken(ProcessingParser.RPAREN, 0); }
+ public TerminalNode SEMI() { return getToken(ProcessingParser.SEMI, 0); }
+ public ResourceSpecificationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_resourceSpecification; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterResourceSpecification(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitResourceSpecification(this);
+ }
+ }
+
+ public final ResourceSpecificationContext resourceSpecification() throws RecognitionException {
+ ResourceSpecificationContext _localctx = new ResourceSpecificationContext(_ctx, getState());
+ enterRule(_localctx, 170, RULE_resourceSpecification);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1131);
+ match(LPAREN);
+ setState(1132);
+ resources();
+ setState(1134);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==SEMI) {
+ {
+ setState(1133);
+ match(SEMI);
+ }
+ }
+
+ setState(1136);
+ match(RPAREN);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class ResourcesContext extends ParserRuleContext {
+ public List resource() {
+ return getRuleContexts(ResourceContext.class);
+ }
+ public ResourceContext resource(int i) {
+ return getRuleContext(ResourceContext.class,i);
+ }
+ public List SEMI() { return getTokens(ProcessingParser.SEMI); }
+ public TerminalNode SEMI(int i) {
+ return getToken(ProcessingParser.SEMI, i);
+ }
+ public ResourcesContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_resources; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterResources(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitResources(this);
+ }
+ }
+
+ public final ResourcesContext resources() throws RecognitionException {
+ ResourcesContext _localctx = new ResourcesContext(_ctx, getState());
+ enterRule(_localctx, 172, RULE_resources);
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1138);
+ resource();
+ setState(1143);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,140,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(1139);
+ match(SEMI);
+ setState(1140);
+ resource();
+ }
+ }
+ }
+ setState(1145);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,140,_ctx);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class ResourceContext extends ParserRuleContext {
+ public ClassOrInterfaceTypeContext classOrInterfaceType() {
+ return getRuleContext(ClassOrInterfaceTypeContext.class,0);
+ }
+ public VariableDeclaratorIdContext variableDeclaratorId() {
+ return getRuleContext(VariableDeclaratorIdContext.class,0);
+ }
+ public TerminalNode ASSIGN() { return getToken(ProcessingParser.ASSIGN, 0); }
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public List variableModifier() {
+ return getRuleContexts(VariableModifierContext.class);
+ }
+ public VariableModifierContext variableModifier(int i) {
+ return getRuleContext(VariableModifierContext.class,i);
+ }
+ public ResourceContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_resource; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterResource(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitResource(this);
+ }
+ }
+
+ public final ResourceContext resource() throws RecognitionException {
+ ResourceContext _localctx = new ResourceContext(_ctx, getState());
+ enterRule(_localctx, 174, RULE_resource);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1149);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==FINAL || _la==AT) {
+ {
+ {
+ setState(1146);
+ variableModifier();
+ }
+ }
+ setState(1151);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(1152);
+ classOrInterfaceType();
+ setState(1153);
+ variableDeclaratorId();
+ setState(1154);
+ match(ASSIGN);
+ setState(1155);
+ expression(0);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class SwitchBlockStatementGroupContext extends ParserRuleContext {
+ public List switchLabel() {
+ return getRuleContexts(SwitchLabelContext.class);
+ }
+ public SwitchLabelContext switchLabel(int i) {
+ return getRuleContext(SwitchLabelContext.class,i);
+ }
+ public List blockStatement() {
+ return getRuleContexts(BlockStatementContext.class);
+ }
+ public BlockStatementContext blockStatement(int i) {
+ return getRuleContext(BlockStatementContext.class,i);
+ }
+ public SwitchBlockStatementGroupContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_switchBlockStatementGroup; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterSwitchBlockStatementGroup(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitSwitchBlockStatementGroup(this);
+ }
+ }
+
+ public final SwitchBlockStatementGroupContext switchBlockStatementGroup() throws RecognitionException {
+ SwitchBlockStatementGroupContext _localctx = new SwitchBlockStatementGroupContext(_ctx, getState());
+ enterRule(_localctx, 176, RULE_switchBlockStatementGroup);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1158);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ do {
+ {
+ {
+ setState(1157);
+ switchLabel();
+ }
+ }
+ setState(1160);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ } while ( _la==CASE || _la==DEFAULT );
+ setState(1163);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ do {
+ {
+ {
+ setState(1162);
+ blockStatement();
+ }
+ }
+ setState(1165);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ } while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__0) | (1L << HexColorLiteral) | (1L << CHAR_LITERAL) | (1L << ABSTRACT) | (1L << ASSERT) | (1L << BOOLEAN) | (1L << BREAK) | (1L << BYTE) | (1L << CHAR) | (1L << CLASS) | (1L << CONTINUE) | (1L << DO) | (1L << DOUBLE) | (1L << FINAL) | (1L << FLOAT) | (1L << FOR) | (1L << IF) | (1L << INT) | (1L << INTERFACE) | (1L << LONG) | (1L << NEW) | (1L << PRIVATE) | (1L << PROTECTED) | (1L << PUBLIC) | (1L << RETURN) | (1L << SHORT) | (1L << STATIC) | (1L << STRICTFP) | (1L << SUPER) | (1L << SWITCH) | (1L << SYNCHRONIZED) | (1L << THIS) | (1L << THROW) | (1L << TRY) | (1L << VAR) | (1L << VOID) | (1L << WHILE) | (1L << DECIMAL_LITERAL) | (1L << HEX_LITERAL) | (1L << OCT_LITERAL) | (1L << BINARY_LITERAL) | (1L << FLOAT_LITERAL) | (1L << HEX_FLOAT_LITERAL))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (BOOL_LITERAL - 64)) | (1L << (STRING_LITERAL - 64)) | (1L << (MULTI_STRING_LIT - 64)) | (1L << (NULL_LITERAL - 64)) | (1L << (LPAREN - 64)) | (1L << (LBRACE - 64)) | (1L << (SEMI - 64)) | (1L << (LT - 64)) | (1L << (BANG - 64)) | (1L << (TILDE - 64)) | (1L << (INC - 64)) | (1L << (DEC - 64)) | (1L << (ADD - 64)) | (1L << (SUB - 64)) | (1L << (AT - 64)) | (1L << (IDENTIFIER - 64)))) != 0) );
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class SwitchLabelContext extends ParserRuleContext {
+ public ExpressionContext constantExpression;
+ public Token enumConstantName;
+ public TerminalNode CASE() { return getToken(ProcessingParser.CASE, 0); }
+ public TerminalNode COLON() { return getToken(ProcessingParser.COLON, 0); }
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public TerminalNode IDENTIFIER() { return getToken(ProcessingParser.IDENTIFIER, 0); }
+ public TerminalNode DEFAULT() { return getToken(ProcessingParser.DEFAULT, 0); }
+ public SwitchLabelContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_switchLabel; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterSwitchLabel(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitSwitchLabel(this);
+ }
+ }
+
+ public final SwitchLabelContext switchLabel() throws RecognitionException {
+ SwitchLabelContext _localctx = new SwitchLabelContext(_ctx, getState());
+ enterRule(_localctx, 178, RULE_switchLabel);
+ try {
+ setState(1175);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case CASE:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1167);
+ match(CASE);
+ setState(1170);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,144,_ctx) ) {
+ case 1:
+ {
+ setState(1168);
+ ((SwitchLabelContext)_localctx).constantExpression = expression(0);
+ }
+ break;
+ case 2:
+ {
+ setState(1169);
+ ((SwitchLabelContext)_localctx).enumConstantName = match(IDENTIFIER);
+ }
+ break;
+ }
+ setState(1172);
+ match(COLON);
+ }
+ break;
+ case DEFAULT:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1173);
+ match(DEFAULT);
+ setState(1174);
+ match(COLON);
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class ForControlContext extends ParserRuleContext {
+ public ExpressionListContext forUpdate;
+ public EnhancedForControlContext enhancedForControl() {
+ return getRuleContext(EnhancedForControlContext.class,0);
+ }
+ public List SEMI() { return getTokens(ProcessingParser.SEMI); }
+ public TerminalNode SEMI(int i) {
+ return getToken(ProcessingParser.SEMI, i);
+ }
+ public ForInitContext forInit() {
+ return getRuleContext(ForInitContext.class,0);
+ }
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public ExpressionListContext expressionList() {
+ return getRuleContext(ExpressionListContext.class,0);
+ }
+ public ForControlContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_forControl; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterForControl(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitForControl(this);
+ }
+ }
+
+ public final ForControlContext forControl() throws RecognitionException {
+ ForControlContext _localctx = new ForControlContext(_ctx, getState());
+ enterRule(_localctx, 180, RULE_forControl);
+ int _la;
+ try {
+ setState(1189);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,149,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1177);
+ enhancedForControl();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1179);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__0) | (1L << HexColorLiteral) | (1L << CHAR_LITERAL) | (1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FINAL) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VAR) | (1L << VOID) | (1L << DECIMAL_LITERAL) | (1L << HEX_LITERAL) | (1L << OCT_LITERAL) | (1L << BINARY_LITERAL) | (1L << FLOAT_LITERAL) | (1L << HEX_FLOAT_LITERAL))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (BOOL_LITERAL - 64)) | (1L << (STRING_LITERAL - 64)) | (1L << (MULTI_STRING_LIT - 64)) | (1L << (NULL_LITERAL - 64)) | (1L << (LPAREN - 64)) | (1L << (LT - 64)) | (1L << (BANG - 64)) | (1L << (TILDE - 64)) | (1L << (INC - 64)) | (1L << (DEC - 64)) | (1L << (ADD - 64)) | (1L << (SUB - 64)) | (1L << (AT - 64)) | (1L << (IDENTIFIER - 64)))) != 0)) {
+ {
+ setState(1178);
+ forInit();
+ }
+ }
+
+ setState(1181);
+ match(SEMI);
+ setState(1183);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__0) | (1L << HexColorLiteral) | (1L << CHAR_LITERAL) | (1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VAR) | (1L << VOID) | (1L << DECIMAL_LITERAL) | (1L << HEX_LITERAL) | (1L << OCT_LITERAL) | (1L << BINARY_LITERAL) | (1L << FLOAT_LITERAL) | (1L << HEX_FLOAT_LITERAL))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (BOOL_LITERAL - 64)) | (1L << (STRING_LITERAL - 64)) | (1L << (MULTI_STRING_LIT - 64)) | (1L << (NULL_LITERAL - 64)) | (1L << (LPAREN - 64)) | (1L << (LT - 64)) | (1L << (BANG - 64)) | (1L << (TILDE - 64)) | (1L << (INC - 64)) | (1L << (DEC - 64)) | (1L << (ADD - 64)) | (1L << (SUB - 64)) | (1L << (AT - 64)) | (1L << (IDENTIFIER - 64)))) != 0)) {
+ {
+ setState(1182);
+ expression(0);
+ }
+ }
+
+ setState(1185);
+ match(SEMI);
+ setState(1187);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__0) | (1L << HexColorLiteral) | (1L << CHAR_LITERAL) | (1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VAR) | (1L << VOID) | (1L << DECIMAL_LITERAL) | (1L << HEX_LITERAL) | (1L << OCT_LITERAL) | (1L << BINARY_LITERAL) | (1L << FLOAT_LITERAL) | (1L << HEX_FLOAT_LITERAL))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (BOOL_LITERAL - 64)) | (1L << (STRING_LITERAL - 64)) | (1L << (MULTI_STRING_LIT - 64)) | (1L << (NULL_LITERAL - 64)) | (1L << (LPAREN - 64)) | (1L << (LT - 64)) | (1L << (BANG - 64)) | (1L << (TILDE - 64)) | (1L << (INC - 64)) | (1L << (DEC - 64)) | (1L << (ADD - 64)) | (1L << (SUB - 64)) | (1L << (AT - 64)) | (1L << (IDENTIFIER - 64)))) != 0)) {
+ {
+ setState(1186);
+ ((ForControlContext)_localctx).forUpdate = expressionList();
+ }
+ }
+
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class ForInitContext extends ParserRuleContext {
+ public LocalVariableDeclarationContext localVariableDeclaration() {
+ return getRuleContext(LocalVariableDeclarationContext.class,0);
+ }
+ public ExpressionListContext expressionList() {
+ return getRuleContext(ExpressionListContext.class,0);
+ }
+ public ForInitContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_forInit; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterForInit(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitForInit(this);
+ }
+ }
+
+ public final ForInitContext forInit() throws RecognitionException {
+ ForInitContext _localctx = new ForInitContext(_ctx, getState());
+ enterRule(_localctx, 182, RULE_forInit);
+ try {
+ setState(1193);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,150,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1191);
+ localVariableDeclaration();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1192);
+ expressionList();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class EnhancedForControlContext extends ParserRuleContext {
+ public TypeTypeContext typeType() {
+ return getRuleContext(TypeTypeContext.class,0);
+ }
+ public VariableDeclaratorIdContext variableDeclaratorId() {
+ return getRuleContext(VariableDeclaratorIdContext.class,0);
+ }
+ public TerminalNode COLON() { return getToken(ProcessingParser.COLON, 0); }
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public List variableModifier() {
+ return getRuleContexts(VariableModifierContext.class);
+ }
+ public VariableModifierContext variableModifier(int i) {
+ return getRuleContext(VariableModifierContext.class,i);
+ }
+ public EnhancedForControlContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_enhancedForControl; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterEnhancedForControl(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitEnhancedForControl(this);
+ }
+ }
+
+ public final EnhancedForControlContext enhancedForControl() throws RecognitionException {
+ EnhancedForControlContext _localctx = new EnhancedForControlContext(_ctx, getState());
+ enterRule(_localctx, 184, RULE_enhancedForControl);
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1198);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,151,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(1195);
+ variableModifier();
+ }
+ }
+ }
+ setState(1200);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,151,_ctx);
+ }
+ setState(1201);
+ typeType();
+ setState(1202);
+ variableDeclaratorId();
+ setState(1203);
+ match(COLON);
+ setState(1204);
+ expression(0);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class ParExpressionContext extends ParserRuleContext {
+ public TerminalNode LPAREN() { return getToken(ProcessingParser.LPAREN, 0); }
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public TerminalNode RPAREN() { return getToken(ProcessingParser.RPAREN, 0); }
+ public ParExpressionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_parExpression; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterParExpression(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitParExpression(this);
+ }
+ }
+
+ public final ParExpressionContext parExpression() throws RecognitionException {
+ ParExpressionContext _localctx = new ParExpressionContext(_ctx, getState());
+ enterRule(_localctx, 186, RULE_parExpression);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1206);
+ match(LPAREN);
+ setState(1207);
+ expression(0);
+ setState(1208);
+ match(RPAREN);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class ExpressionListContext extends ParserRuleContext {
+ public List expression() {
+ return getRuleContexts(ExpressionContext.class);
+ }
+ public ExpressionContext expression(int i) {
+ return getRuleContext(ExpressionContext.class,i);
+ }
+ public List COMMA() { return getTokens(ProcessingParser.COMMA); }
+ public TerminalNode COMMA(int i) {
+ return getToken(ProcessingParser.COMMA, i);
+ }
+ public ExpressionListContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_expressionList; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterExpressionList(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitExpressionList(this);
+ }
+ }
+
+ public final ExpressionListContext expressionList() throws RecognitionException {
+ ExpressionListContext _localctx = new ExpressionListContext(_ctx, getState());
+ enterRule(_localctx, 188, RULE_expressionList);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1210);
+ expression(0);
+ setState(1215);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==COMMA) {
+ {
+ {
+ setState(1211);
+ match(COMMA);
+ setState(1212);
+ expression(0);
+ }
+ }
+ setState(1217);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class ExpressionContext extends ParserRuleContext {
+ public Token prefix;
+ public Token bop;
+ public Token postfix;
+ public PrimaryContext primary() {
+ return getRuleContext(PrimaryContext.class,0);
+ }
+ public MethodCallContext methodCall() {
+ return getRuleContext(MethodCallContext.class,0);
+ }
+ public TerminalNode NEW() { return getToken(ProcessingParser.NEW, 0); }
+ public CreatorContext creator() {
+ return getRuleContext(CreatorContext.class,0);
+ }
+ public TerminalNode LPAREN() { return getToken(ProcessingParser.LPAREN, 0); }
+ public TypeTypeContext typeType() {
+ return getRuleContext(TypeTypeContext.class,0);
+ }
+ public TerminalNode RPAREN() { return getToken(ProcessingParser.RPAREN, 0); }
+ public List expression() {
+ return getRuleContexts(ExpressionContext.class);
+ }
+ public ExpressionContext expression(int i) {
+ return getRuleContext(ExpressionContext.class,i);
+ }
+ public TerminalNode ADD() { return getToken(ProcessingParser.ADD, 0); }
+ public TerminalNode SUB() { return getToken(ProcessingParser.SUB, 0); }
+ public TerminalNode INC() { return getToken(ProcessingParser.INC, 0); }
+ public TerminalNode DEC() { return getToken(ProcessingParser.DEC, 0); }
+ public TerminalNode TILDE() { return getToken(ProcessingParser.TILDE, 0); }
+ public TerminalNode BANG() { return getToken(ProcessingParser.BANG, 0); }
+ public LambdaExpressionContext lambdaExpression() {
+ return getRuleContext(LambdaExpressionContext.class,0);
+ }
+ public TerminalNode COLONCOLON() { return getToken(ProcessingParser.COLONCOLON, 0); }
+ public TerminalNode IDENTIFIER() { return getToken(ProcessingParser.IDENTIFIER, 0); }
+ public TypeArgumentsContext typeArguments() {
+ return getRuleContext(TypeArgumentsContext.class,0);
+ }
+ public ClassTypeContext classType() {
+ return getRuleContext(ClassTypeContext.class,0);
+ }
+ public TerminalNode MUL() { return getToken(ProcessingParser.MUL, 0); }
+ public TerminalNode DIV() { return getToken(ProcessingParser.DIV, 0); }
+ public TerminalNode MOD() { return getToken(ProcessingParser.MOD, 0); }
+ public List LT() { return getTokens(ProcessingParser.LT); }
+ public TerminalNode LT(int i) {
+ return getToken(ProcessingParser.LT, i);
+ }
+ public List GT() { return getTokens(ProcessingParser.GT); }
+ public TerminalNode GT(int i) {
+ return getToken(ProcessingParser.GT, i);
+ }
+ public TerminalNode LE() { return getToken(ProcessingParser.LE, 0); }
+ public TerminalNode GE() { return getToken(ProcessingParser.GE, 0); }
+ public TerminalNode EQUAL() { return getToken(ProcessingParser.EQUAL, 0); }
+ public TerminalNode NOTEQUAL() { return getToken(ProcessingParser.NOTEQUAL, 0); }
+ public TerminalNode BITAND() { return getToken(ProcessingParser.BITAND, 0); }
+ public TerminalNode CARET() { return getToken(ProcessingParser.CARET, 0); }
+ public TerminalNode BITOR() { return getToken(ProcessingParser.BITOR, 0); }
+ public TerminalNode AND() { return getToken(ProcessingParser.AND, 0); }
+ public TerminalNode OR() { return getToken(ProcessingParser.OR, 0); }
+ public TerminalNode COLON() { return getToken(ProcessingParser.COLON, 0); }
+ public TerminalNode QUESTION() { return getToken(ProcessingParser.QUESTION, 0); }
+ public TerminalNode ASSIGN() { return getToken(ProcessingParser.ASSIGN, 0); }
+ public TerminalNode ADD_ASSIGN() { return getToken(ProcessingParser.ADD_ASSIGN, 0); }
+ public TerminalNode SUB_ASSIGN() { return getToken(ProcessingParser.SUB_ASSIGN, 0); }
+ public TerminalNode MUL_ASSIGN() { return getToken(ProcessingParser.MUL_ASSIGN, 0); }
+ public TerminalNode DIV_ASSIGN() { return getToken(ProcessingParser.DIV_ASSIGN, 0); }
+ public TerminalNode AND_ASSIGN() { return getToken(ProcessingParser.AND_ASSIGN, 0); }
+ public TerminalNode OR_ASSIGN() { return getToken(ProcessingParser.OR_ASSIGN, 0); }
+ public TerminalNode XOR_ASSIGN() { return getToken(ProcessingParser.XOR_ASSIGN, 0); }
+ public TerminalNode RSHIFT_ASSIGN() { return getToken(ProcessingParser.RSHIFT_ASSIGN, 0); }
+ public TerminalNode URSHIFT_ASSIGN() { return getToken(ProcessingParser.URSHIFT_ASSIGN, 0); }
+ public TerminalNode LSHIFT_ASSIGN() { return getToken(ProcessingParser.LSHIFT_ASSIGN, 0); }
+ public TerminalNode MOD_ASSIGN() { return getToken(ProcessingParser.MOD_ASSIGN, 0); }
+ public TerminalNode DOT() { return getToken(ProcessingParser.DOT, 0); }
+ public TerminalNode THIS() { return getToken(ProcessingParser.THIS, 0); }
+ public InnerCreatorContext innerCreator() {
+ return getRuleContext(InnerCreatorContext.class,0);
+ }
+ public TerminalNode SUPER() { return getToken(ProcessingParser.SUPER, 0); }
+ public SuperSuffixContext superSuffix() {
+ return getRuleContext(SuperSuffixContext.class,0);
+ }
+ public ExplicitGenericInvocationContext explicitGenericInvocation() {
+ return getRuleContext(ExplicitGenericInvocationContext.class,0);
+ }
+ public NonWildcardTypeArgumentsContext nonWildcardTypeArguments() {
+ return getRuleContext(NonWildcardTypeArgumentsContext.class,0);
+ }
+ public TerminalNode LBRACK() { return getToken(ProcessingParser.LBRACK, 0); }
+ public TerminalNode RBRACK() { return getToken(ProcessingParser.RBRACK, 0); }
+ public TerminalNode INSTANCEOF() { return getToken(ProcessingParser.INSTANCEOF, 0); }
+ public ExpressionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_expression; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterExpression(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitExpression(this);
+ }
+ }
+
+ public final ExpressionContext expression() throws RecognitionException {
+ return expression(0);
+ }
+
+ private ExpressionContext expression(int _p) throws RecognitionException {
+ ParserRuleContext _parentctx = _ctx;
+ int _parentState = getState();
+ ExpressionContext _localctx = new ExpressionContext(_ctx, _parentState);
+ ExpressionContext _prevctx = _localctx;
+ int _startState = 190;
+ enterRecursionRule(_localctx, 190, RULE_expression, _p);
+ int _la;
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1249);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,156,_ctx) ) {
+ case 1:
+ {
+ setState(1219);
+ primary();
+ }
+ break;
+ case 2:
+ {
+ setState(1220);
+ methodCall();
+ }
+ break;
+ case 3:
+ {
+ setState(1221);
+ match(NEW);
+ setState(1222);
+ creator();
+ }
+ break;
+ case 4:
+ {
+ setState(1223);
+ match(LPAREN);
+ setState(1224);
+ typeType();
+ setState(1225);
+ match(RPAREN);
+ setState(1226);
+ expression(21);
+ }
+ break;
+ case 5:
+ {
+ setState(1228);
+ ((ExpressionContext)_localctx).prefix = _input.LT(1);
+ _la = _input.LA(1);
+ if ( !(((((_la - 90)) & ~0x3f) == 0 && ((1L << (_la - 90)) & ((1L << (INC - 90)) | (1L << (DEC - 90)) | (1L << (ADD - 90)) | (1L << (SUB - 90)))) != 0)) ) {
+ ((ExpressionContext)_localctx).prefix = (Token)_errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ setState(1229);
+ expression(19);
+ }
+ break;
+ case 6:
+ {
+ setState(1230);
+ ((ExpressionContext)_localctx).prefix = _input.LT(1);
+ _la = _input.LA(1);
+ if ( !(_la==BANG || _la==TILDE) ) {
+ ((ExpressionContext)_localctx).prefix = (Token)_errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ setState(1231);
+ expression(18);
+ }
+ break;
+ case 7:
+ {
+ setState(1232);
+ lambdaExpression();
+ }
+ break;
+ case 8:
+ {
+ setState(1233);
+ typeType();
+ setState(1234);
+ match(COLONCOLON);
+ setState(1240);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case LT:
+ case IDENTIFIER:
+ {
+ setState(1236);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==LT) {
+ {
+ setState(1235);
+ typeArguments();
+ }
+ }
+
+ setState(1238);
+ match(IDENTIFIER);
+ }
+ break;
+ case NEW:
+ {
+ setState(1239);
+ match(NEW);
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ break;
+ case 9:
+ {
+ setState(1242);
+ classType();
+ setState(1243);
+ match(COLONCOLON);
+ setState(1245);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==LT) {
+ {
+ setState(1244);
+ typeArguments();
+ }
+ }
+
+ setState(1247);
+ match(NEW);
+ }
+ break;
+ }
+ _ctx.stop = _input.LT(-1);
+ setState(1331);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,162,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ if ( _parseListeners!=null ) triggerExitRuleEvent();
+ _prevctx = _localctx;
+ {
+ setState(1329);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,161,_ctx) ) {
+ case 1:
+ {
+ _localctx = new ExpressionContext(_parentctx, _parentState);
+ pushNewRecursionContext(_localctx, _startState, RULE_expression);
+ setState(1251);
+ if (!(precpred(_ctx, 17))) throw new FailedPredicateException(this, "precpred(_ctx, 17)");
+ setState(1252);
+ ((ExpressionContext)_localctx).bop = _input.LT(1);
+ _la = _input.LA(1);
+ if ( !(((((_la - 94)) & ~0x3f) == 0 && ((1L << (_la - 94)) & ((1L << (MUL - 94)) | (1L << (DIV - 94)) | (1L << (MOD - 94)))) != 0)) ) {
+ ((ExpressionContext)_localctx).bop = (Token)_errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ setState(1253);
+ expression(18);
+ }
+ break;
+ case 2:
+ {
+ _localctx = new ExpressionContext(_parentctx, _parentState);
+ pushNewRecursionContext(_localctx, _startState, RULE_expression);
+ setState(1254);
+ if (!(precpred(_ctx, 16))) throw new FailedPredicateException(this, "precpred(_ctx, 16)");
+ setState(1255);
+ ((ExpressionContext)_localctx).bop = _input.LT(1);
+ _la = _input.LA(1);
+ if ( !(_la==ADD || _la==SUB) ) {
+ ((ExpressionContext)_localctx).bop = (Token)_errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ setState(1256);
+ expression(17);
+ }
+ break;
+ case 3:
+ {
+ _localctx = new ExpressionContext(_parentctx, _parentState);
+ pushNewRecursionContext(_localctx, _startState, RULE_expression);
+ setState(1257);
+ if (!(precpred(_ctx, 15))) throw new FailedPredicateException(this, "precpred(_ctx, 15)");
+ setState(1265);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,157,_ctx) ) {
+ case 1:
+ {
+ setState(1258);
+ match(LT);
+ setState(1259);
+ match(LT);
+ }
+ break;
+ case 2:
+ {
+ setState(1260);
+ match(GT);
+ setState(1261);
+ match(GT);
+ setState(1262);
+ match(GT);
+ }
+ break;
+ case 3:
+ {
+ setState(1263);
+ match(GT);
+ setState(1264);
+ match(GT);
+ }
+ break;
+ }
+ setState(1267);
+ expression(16);
+ }
+ break;
+ case 4:
+ {
+ _localctx = new ExpressionContext(_parentctx, _parentState);
+ pushNewRecursionContext(_localctx, _startState, RULE_expression);
+ setState(1268);
+ if (!(precpred(_ctx, 14))) throw new FailedPredicateException(this, "precpred(_ctx, 14)");
+ setState(1269);
+ ((ExpressionContext)_localctx).bop = _input.LT(1);
+ _la = _input.LA(1);
+ if ( !(((((_la - 78)) & ~0x3f) == 0 && ((1L << (_la - 78)) & ((1L << (GT - 78)) | (1L << (LT - 78)) | (1L << (LE - 78)) | (1L << (GE - 78)))) != 0)) ) {
+ ((ExpressionContext)_localctx).bop = (Token)_errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ setState(1270);
+ expression(15);
+ }
+ break;
+ case 5:
+ {
+ _localctx = new ExpressionContext(_parentctx, _parentState);
+ pushNewRecursionContext(_localctx, _startState, RULE_expression);
+ setState(1271);
+ if (!(precpred(_ctx, 12))) throw new FailedPredicateException(this, "precpred(_ctx, 12)");
+ setState(1272);
+ ((ExpressionContext)_localctx).bop = _input.LT(1);
+ _la = _input.LA(1);
+ if ( !(_la==EQUAL || _la==NOTEQUAL) ) {
+ ((ExpressionContext)_localctx).bop = (Token)_errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ setState(1273);
+ expression(13);
+ }
+ break;
+ case 6:
+ {
+ _localctx = new ExpressionContext(_parentctx, _parentState);
+ pushNewRecursionContext(_localctx, _startState, RULE_expression);
+ setState(1274);
+ if (!(precpred(_ctx, 11))) throw new FailedPredicateException(this, "precpred(_ctx, 11)");
+ setState(1275);
+ ((ExpressionContext)_localctx).bop = match(BITAND);
+ setState(1276);
+ expression(12);
+ }
+ break;
+ case 7:
+ {
+ _localctx = new ExpressionContext(_parentctx, _parentState);
+ pushNewRecursionContext(_localctx, _startState, RULE_expression);
+ setState(1277);
+ if (!(precpred(_ctx, 10))) throw new FailedPredicateException(this, "precpred(_ctx, 10)");
+ setState(1278);
+ ((ExpressionContext)_localctx).bop = match(CARET);
+ setState(1279);
+ expression(11);
+ }
+ break;
+ case 8:
+ {
+ _localctx = new ExpressionContext(_parentctx, _parentState);
+ pushNewRecursionContext(_localctx, _startState, RULE_expression);
+ setState(1280);
+ if (!(precpred(_ctx, 9))) throw new FailedPredicateException(this, "precpred(_ctx, 9)");
+ setState(1281);
+ ((ExpressionContext)_localctx).bop = match(BITOR);
+ setState(1282);
+ expression(10);
+ }
+ break;
+ case 9:
+ {
+ _localctx = new ExpressionContext(_parentctx, _parentState);
+ pushNewRecursionContext(_localctx, _startState, RULE_expression);
+ setState(1283);
+ if (!(precpred(_ctx, 8))) throw new FailedPredicateException(this, "precpred(_ctx, 8)");
+ setState(1284);
+ ((ExpressionContext)_localctx).bop = match(AND);
+ setState(1285);
+ expression(9);
+ }
+ break;
+ case 10:
+ {
+ _localctx = new ExpressionContext(_parentctx, _parentState);
+ pushNewRecursionContext(_localctx, _startState, RULE_expression);
+ setState(1286);
+ if (!(precpred(_ctx, 7))) throw new FailedPredicateException(this, "precpred(_ctx, 7)");
+ setState(1287);
+ ((ExpressionContext)_localctx).bop = match(OR);
+ setState(1288);
+ expression(8);
+ }
+ break;
+ case 11:
+ {
+ _localctx = new ExpressionContext(_parentctx, _parentState);
+ pushNewRecursionContext(_localctx, _startState, RULE_expression);
+ setState(1289);
+ if (!(precpred(_ctx, 6))) throw new FailedPredicateException(this, "precpred(_ctx, 6)");
+ setState(1290);
+ ((ExpressionContext)_localctx).bop = match(QUESTION);
+ setState(1291);
+ expression(0);
+ setState(1292);
+ match(COLON);
+ setState(1293);
+ expression(7);
+ }
+ break;
+ case 12:
+ {
+ _localctx = new ExpressionContext(_parentctx, _parentState);
+ pushNewRecursionContext(_localctx, _startState, RULE_expression);
+ setState(1295);
+ if (!(precpred(_ctx, 5))) throw new FailedPredicateException(this, "precpred(_ctx, 5)");
+ setState(1296);
+ ((ExpressionContext)_localctx).bop = _input.LT(1);
+ _la = _input.LA(1);
+ if ( !(((((_la - 77)) & ~0x3f) == 0 && ((1L << (_la - 77)) & ((1L << (ASSIGN - 77)) | (1L << (ADD_ASSIGN - 77)) | (1L << (SUB_ASSIGN - 77)) | (1L << (MUL_ASSIGN - 77)) | (1L << (DIV_ASSIGN - 77)) | (1L << (AND_ASSIGN - 77)) | (1L << (OR_ASSIGN - 77)) | (1L << (XOR_ASSIGN - 77)) | (1L << (MOD_ASSIGN - 77)) | (1L << (LSHIFT_ASSIGN - 77)) | (1L << (RSHIFT_ASSIGN - 77)) | (1L << (URSHIFT_ASSIGN - 77)))) != 0)) ) {
+ ((ExpressionContext)_localctx).bop = (Token)_errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ setState(1297);
+ expression(5);
+ }
+ break;
+ case 13:
+ {
+ _localctx = new ExpressionContext(_parentctx, _parentState);
+ pushNewRecursionContext(_localctx, _startState, RULE_expression);
+ setState(1298);
+ if (!(precpred(_ctx, 25))) throw new FailedPredicateException(this, "precpred(_ctx, 25)");
+ setState(1299);
+ ((ExpressionContext)_localctx).bop = match(DOT);
+ setState(1311);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,159,_ctx) ) {
+ case 1:
+ {
+ setState(1300);
+ match(IDENTIFIER);
+ }
+ break;
+ case 2:
+ {
+ setState(1301);
+ methodCall();
+ }
+ break;
+ case 3:
+ {
+ setState(1302);
+ match(THIS);
+ }
+ break;
+ case 4:
+ {
+ setState(1303);
+ match(NEW);
+ setState(1305);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==LT) {
+ {
+ setState(1304);
+ nonWildcardTypeArguments();
+ }
+ }
+
+ setState(1307);
+ innerCreator();
+ }
+ break;
+ case 5:
+ {
+ setState(1308);
+ match(SUPER);
+ setState(1309);
+ superSuffix();
+ }
+ break;
+ case 6:
+ {
+ setState(1310);
+ explicitGenericInvocation();
+ }
+ break;
+ }
+ }
+ break;
+ case 14:
+ {
+ _localctx = new ExpressionContext(_parentctx, _parentState);
+ pushNewRecursionContext(_localctx, _startState, RULE_expression);
+ setState(1313);
+ if (!(precpred(_ctx, 24))) throw new FailedPredicateException(this, "precpred(_ctx, 24)");
+ setState(1314);
+ match(LBRACK);
+ setState(1315);
+ expression(0);
+ setState(1316);
+ match(RBRACK);
+ }
+ break;
+ case 15:
+ {
+ _localctx = new ExpressionContext(_parentctx, _parentState);
+ pushNewRecursionContext(_localctx, _startState, RULE_expression);
+ setState(1318);
+ if (!(precpred(_ctx, 20))) throw new FailedPredicateException(this, "precpred(_ctx, 20)");
+ setState(1319);
+ ((ExpressionContext)_localctx).postfix = _input.LT(1);
+ _la = _input.LA(1);
+ if ( !(_la==INC || _la==DEC) ) {
+ ((ExpressionContext)_localctx).postfix = (Token)_errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ }
+ break;
+ case 16:
+ {
+ _localctx = new ExpressionContext(_parentctx, _parentState);
+ pushNewRecursionContext(_localctx, _startState, RULE_expression);
+ setState(1320);
+ if (!(precpred(_ctx, 13))) throw new FailedPredicateException(this, "precpred(_ctx, 13)");
+ setState(1321);
+ ((ExpressionContext)_localctx).bop = match(INSTANCEOF);
+ setState(1322);
+ typeType();
+ }
+ break;
+ case 17:
+ {
+ _localctx = new ExpressionContext(_parentctx, _parentState);
+ pushNewRecursionContext(_localctx, _startState, RULE_expression);
+ setState(1323);
+ if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)");
+ setState(1324);
+ match(COLONCOLON);
+ setState(1326);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==LT) {
+ {
+ setState(1325);
+ typeArguments();
+ }
+ }
+
+ setState(1328);
+ match(IDENTIFIER);
+ }
+ break;
+ }
+ }
+ }
+ setState(1333);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,162,_ctx);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ unrollRecursionContexts(_parentctx);
+ }
+ return _localctx;
+ }
+
+ public static class LambdaExpressionContext extends ParserRuleContext {
+ public LambdaParametersContext lambdaParameters() {
+ return getRuleContext(LambdaParametersContext.class,0);
+ }
+ public TerminalNode ARROW() { return getToken(ProcessingParser.ARROW, 0); }
+ public LambdaBodyContext lambdaBody() {
+ return getRuleContext(LambdaBodyContext.class,0);
+ }
+ public LambdaExpressionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_lambdaExpression; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterLambdaExpression(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitLambdaExpression(this);
+ }
+ }
+
+ public final LambdaExpressionContext lambdaExpression() throws RecognitionException {
+ LambdaExpressionContext _localctx = new LambdaExpressionContext(_ctx, getState());
+ enterRule(_localctx, 192, RULE_lambdaExpression);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1334);
+ lambdaParameters();
+ setState(1335);
+ match(ARROW);
+ setState(1336);
+ lambdaBody();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class LambdaParametersContext extends ParserRuleContext {
+ public List IDENTIFIER() { return getTokens(ProcessingParser.IDENTIFIER); }
+ public TerminalNode IDENTIFIER(int i) {
+ return getToken(ProcessingParser.IDENTIFIER, i);
+ }
+ public TerminalNode LPAREN() { return getToken(ProcessingParser.LPAREN, 0); }
+ public TerminalNode RPAREN() { return getToken(ProcessingParser.RPAREN, 0); }
+ public FormalParameterListContext formalParameterList() {
+ return getRuleContext(FormalParameterListContext.class,0);
+ }
+ public List COMMA() { return getTokens(ProcessingParser.COMMA); }
+ public TerminalNode COMMA(int i) {
+ return getToken(ProcessingParser.COMMA, i);
+ }
+ public LambdaParametersContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_lambdaParameters; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterLambdaParameters(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitLambdaParameters(this);
+ }
+ }
+
+ public final LambdaParametersContext lambdaParameters() throws RecognitionException {
+ LambdaParametersContext _localctx = new LambdaParametersContext(_ctx, getState());
+ enterRule(_localctx, 194, RULE_lambdaParameters);
+ int _la;
+ try {
+ setState(1354);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,165,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1338);
+ match(IDENTIFIER);
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1339);
+ match(LPAREN);
+ setState(1341);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__0) | (1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FINAL) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << SHORT) | (1L << VAR))) != 0) || _la==AT || _la==IDENTIFIER) {
+ {
+ setState(1340);
+ formalParameterList();
+ }
+ }
+
+ setState(1343);
+ match(RPAREN);
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(1344);
+ match(LPAREN);
+ setState(1345);
+ match(IDENTIFIER);
+ setState(1350);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==COMMA) {
+ {
+ {
+ setState(1346);
+ match(COMMA);
+ setState(1347);
+ match(IDENTIFIER);
+ }
+ }
+ setState(1352);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(1353);
+ match(RPAREN);
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class LambdaBodyContext extends ParserRuleContext {
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public BlockContext block() {
+ return getRuleContext(BlockContext.class,0);
+ }
+ public LambdaBodyContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_lambdaBody; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterLambdaBody(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitLambdaBody(this);
+ }
+ }
+
+ public final LambdaBodyContext lambdaBody() throws RecognitionException {
+ LambdaBodyContext _localctx = new LambdaBodyContext(_ctx, getState());
+ enterRule(_localctx, 196, RULE_lambdaBody);
+ try {
+ setState(1358);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case T__0:
+ case HexColorLiteral:
+ case CHAR_LITERAL:
+ case BOOLEAN:
+ case BYTE:
+ case CHAR:
+ case DOUBLE:
+ case FLOAT:
+ case INT:
+ case LONG:
+ case NEW:
+ case SHORT:
+ case SUPER:
+ case THIS:
+ case VAR:
+ case VOID:
+ case DECIMAL_LITERAL:
+ case HEX_LITERAL:
+ case OCT_LITERAL:
+ case BINARY_LITERAL:
+ case FLOAT_LITERAL:
+ case HEX_FLOAT_LITERAL:
+ case BOOL_LITERAL:
+ case STRING_LITERAL:
+ case MULTI_STRING_LIT:
+ case NULL_LITERAL:
+ case LPAREN:
+ case LT:
+ case BANG:
+ case TILDE:
+ case INC:
+ case DEC:
+ case ADD:
+ case SUB:
+ case AT:
+ case IDENTIFIER:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1356);
+ expression(0);
+ }
+ break;
+ case LBRACE:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1357);
+ block();
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class PrimaryContext extends ParserRuleContext {
+ public TerminalNode LPAREN() { return getToken(ProcessingParser.LPAREN, 0); }
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public TerminalNode RPAREN() { return getToken(ProcessingParser.RPAREN, 0); }
+ public TerminalNode THIS() { return getToken(ProcessingParser.THIS, 0); }
+ public TerminalNode SUPER() { return getToken(ProcessingParser.SUPER, 0); }
+ public LiteralContext literal() {
+ return getRuleContext(LiteralContext.class,0);
+ }
+ public TerminalNode IDENTIFIER() { return getToken(ProcessingParser.IDENTIFIER, 0); }
+ public TypeTypeOrVoidContext typeTypeOrVoid() {
+ return getRuleContext(TypeTypeOrVoidContext.class,0);
+ }
+ public TerminalNode DOT() { return getToken(ProcessingParser.DOT, 0); }
+ public TerminalNode CLASS() { return getToken(ProcessingParser.CLASS, 0); }
+ public NonWildcardTypeArgumentsContext nonWildcardTypeArguments() {
+ return getRuleContext(NonWildcardTypeArgumentsContext.class,0);
+ }
+ public ExplicitGenericInvocationSuffixContext explicitGenericInvocationSuffix() {
+ return getRuleContext(ExplicitGenericInvocationSuffixContext.class,0);
+ }
+ public ArgumentsContext arguments() {
+ return getRuleContext(ArgumentsContext.class,0);
+ }
+ public PrimaryContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_primary; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterPrimary(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitPrimary(this);
+ }
+ }
+
+ public final PrimaryContext primary() throws RecognitionException {
+ PrimaryContext _localctx = new PrimaryContext(_ctx, getState());
+ enterRule(_localctx, 198, RULE_primary);
+ try {
+ setState(1378);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,168,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1360);
+ match(LPAREN);
+ setState(1361);
+ expression(0);
+ setState(1362);
+ match(RPAREN);
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1364);
+ match(THIS);
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(1365);
+ match(SUPER);
+ }
+ break;
+ case 4:
+ enterOuterAlt(_localctx, 4);
+ {
+ setState(1366);
+ literal();
+ }
+ break;
+ case 5:
+ enterOuterAlt(_localctx, 5);
+ {
+ setState(1367);
+ match(IDENTIFIER);
+ }
+ break;
+ case 6:
+ enterOuterAlt(_localctx, 6);
+ {
+ setState(1368);
+ typeTypeOrVoid();
+ setState(1369);
+ match(DOT);
+ setState(1370);
+ match(CLASS);
+ }
+ break;
+ case 7:
+ enterOuterAlt(_localctx, 7);
+ {
+ setState(1372);
+ nonWildcardTypeArguments();
+ setState(1376);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case SUPER:
+ case IDENTIFIER:
+ {
+ setState(1373);
+ explicitGenericInvocationSuffix();
+ }
+ break;
+ case THIS:
+ {
+ setState(1374);
+ match(THIS);
+ setState(1375);
+ arguments();
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class ClassTypeContext extends ParserRuleContext {
+ public TerminalNode IDENTIFIER() { return getToken(ProcessingParser.IDENTIFIER, 0); }
+ public ClassOrInterfaceTypeContext classOrInterfaceType() {
+ return getRuleContext(ClassOrInterfaceTypeContext.class,0);
+ }
+ public TerminalNode DOT() { return getToken(ProcessingParser.DOT, 0); }
+ public List annotation() {
+ return getRuleContexts(AnnotationContext.class);
+ }
+ public AnnotationContext annotation(int i) {
+ return getRuleContext(AnnotationContext.class,i);
+ }
+ public TypeArgumentsContext typeArguments() {
+ return getRuleContext(TypeArgumentsContext.class,0);
+ }
+ public ClassTypeContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_classType; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterClassType(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitClassType(this);
+ }
+ }
+
+ public final ClassTypeContext classType() throws RecognitionException {
+ ClassTypeContext _localctx = new ClassTypeContext(_ctx, getState());
+ enterRule(_localctx, 200, RULE_classType);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1383);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,169,_ctx) ) {
+ case 1:
+ {
+ setState(1380);
+ classOrInterfaceType();
+ setState(1381);
+ match(DOT);
+ }
+ break;
+ }
+ setState(1388);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==AT) {
+ {
+ {
+ setState(1385);
+ annotation();
+ }
+ }
+ setState(1390);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(1391);
+ match(IDENTIFIER);
+ setState(1393);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==LT) {
+ {
+ setState(1392);
+ typeArguments();
+ }
+ }
+
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class CreatorContext extends ParserRuleContext {
+ public NonWildcardTypeArgumentsContext nonWildcardTypeArguments() {
+ return getRuleContext(NonWildcardTypeArgumentsContext.class,0);
+ }
+ public CreatedNameContext createdName() {
+ return getRuleContext(CreatedNameContext.class,0);
+ }
+ public ClassCreatorRestContext classCreatorRest() {
+ return getRuleContext(ClassCreatorRestContext.class,0);
+ }
+ public ArrayCreatorRestContext arrayCreatorRest() {
+ return getRuleContext(ArrayCreatorRestContext.class,0);
+ }
+ public CreatorContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_creator; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterCreator(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitCreator(this);
+ }
+ }
+
+ public final CreatorContext creator() throws RecognitionException {
+ CreatorContext _localctx = new CreatorContext(_ctx, getState());
+ enterRule(_localctx, 202, RULE_creator);
+ try {
+ setState(1404);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case LT:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1395);
+ nonWildcardTypeArguments();
+ setState(1396);
+ createdName();
+ setState(1397);
+ classCreatorRest();
+ }
+ break;
+ case T__0:
+ case BOOLEAN:
+ case BYTE:
+ case CHAR:
+ case DOUBLE:
+ case FLOAT:
+ case INT:
+ case LONG:
+ case SHORT:
+ case IDENTIFIER:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1399);
+ createdName();
+ setState(1402);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case LBRACK:
+ {
+ setState(1400);
+ arrayCreatorRest();
+ }
+ break;
+ case LPAREN:
+ {
+ setState(1401);
+ classCreatorRest();
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class CreatedNameContext extends ParserRuleContext {
+ public List IDENTIFIER() { return getTokens(ProcessingParser.IDENTIFIER); }
+ public TerminalNode IDENTIFIER(int i) {
+ return getToken(ProcessingParser.IDENTIFIER, i);
+ }
+ public List typeArgumentsOrDiamond() {
+ return getRuleContexts(TypeArgumentsOrDiamondContext.class);
+ }
+ public TypeArgumentsOrDiamondContext typeArgumentsOrDiamond(int i) {
+ return getRuleContext(TypeArgumentsOrDiamondContext.class,i);
+ }
+ public List DOT() { return getTokens(ProcessingParser.DOT); }
+ public TerminalNode DOT(int i) {
+ return getToken(ProcessingParser.DOT, i);
+ }
+ public PrimitiveTypeContext primitiveType() {
+ return getRuleContext(PrimitiveTypeContext.class,0);
+ }
+ public CreatedNameContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_createdName; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterCreatedName(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitCreatedName(this);
+ }
+ }
+
+ public final CreatedNameContext createdName() throws RecognitionException {
+ CreatedNameContext _localctx = new CreatedNameContext(_ctx, getState());
+ enterRule(_localctx, 204, RULE_createdName);
+ int _la;
+ try {
+ setState(1421);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case IDENTIFIER:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1406);
+ match(IDENTIFIER);
+ setState(1408);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==LT) {
+ {
+ setState(1407);
+ typeArgumentsOrDiamond();
+ }
+ }
+
+ setState(1417);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==DOT) {
+ {
+ {
+ setState(1410);
+ match(DOT);
+ setState(1411);
+ match(IDENTIFIER);
+ setState(1413);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==LT) {
+ {
+ setState(1412);
+ typeArgumentsOrDiamond();
+ }
+ }
+
+ }
+ }
+ setState(1419);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ }
+ break;
+ case T__0:
+ case BOOLEAN:
+ case BYTE:
+ case CHAR:
+ case DOUBLE:
+ case FLOAT:
+ case INT:
+ case LONG:
+ case SHORT:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1420);
+ primitiveType();
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class InnerCreatorContext extends ParserRuleContext {
+ public TerminalNode IDENTIFIER() { return getToken(ProcessingParser.IDENTIFIER, 0); }
+ public ClassCreatorRestContext classCreatorRest() {
+ return getRuleContext(ClassCreatorRestContext.class,0);
+ }
+ public NonWildcardTypeArgumentsOrDiamondContext nonWildcardTypeArgumentsOrDiamond() {
+ return getRuleContext(NonWildcardTypeArgumentsOrDiamondContext.class,0);
+ }
+ public InnerCreatorContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_innerCreator; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterInnerCreator(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitInnerCreator(this);
+ }
+ }
+
+ public final InnerCreatorContext innerCreator() throws RecognitionException {
+ InnerCreatorContext _localctx = new InnerCreatorContext(_ctx, getState());
+ enterRule(_localctx, 206, RULE_innerCreator);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1423);
+ match(IDENTIFIER);
+ setState(1425);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==LT) {
+ {
+ setState(1424);
+ nonWildcardTypeArgumentsOrDiamond();
+ }
+ }
+
+ setState(1427);
+ classCreatorRest();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class ArrayCreatorRestContext extends ParserRuleContext {
+ public List LBRACK() { return getTokens(ProcessingParser.LBRACK); }
+ public TerminalNode LBRACK(int i) {
+ return getToken(ProcessingParser.LBRACK, i);
+ }
+ public List RBRACK() { return getTokens(ProcessingParser.RBRACK); }
+ public TerminalNode RBRACK(int i) {
+ return getToken(ProcessingParser.RBRACK, i);
+ }
+ public ArrayInitializerContext arrayInitializer() {
+ return getRuleContext(ArrayInitializerContext.class,0);
+ }
+ public List expression() {
+ return getRuleContexts(ExpressionContext.class);
+ }
+ public ExpressionContext expression(int i) {
+ return getRuleContext(ExpressionContext.class,i);
+ }
+ public ArrayCreatorRestContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_arrayCreatorRest; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterArrayCreatorRest(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitArrayCreatorRest(this);
+ }
+ }
+
+ public final ArrayCreatorRestContext arrayCreatorRest() throws RecognitionException {
+ ArrayCreatorRestContext _localctx = new ArrayCreatorRestContext(_ctx, getState());
+ enterRule(_localctx, 208, RULE_arrayCreatorRest);
+ int _la;
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1429);
+ match(LBRACK);
+ setState(1457);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case RBRACK:
+ {
+ setState(1430);
+ match(RBRACK);
+ setState(1435);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==LBRACK) {
+ {
+ {
+ setState(1431);
+ match(LBRACK);
+ setState(1432);
+ match(RBRACK);
+ }
+ }
+ setState(1437);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(1438);
+ arrayInitializer();
+ }
+ break;
+ case T__0:
+ case HexColorLiteral:
+ case CHAR_LITERAL:
+ case BOOLEAN:
+ case BYTE:
+ case CHAR:
+ case DOUBLE:
+ case FLOAT:
+ case INT:
+ case LONG:
+ case NEW:
+ case SHORT:
+ case SUPER:
+ case THIS:
+ case VAR:
+ case VOID:
+ case DECIMAL_LITERAL:
+ case HEX_LITERAL:
+ case OCT_LITERAL:
+ case BINARY_LITERAL:
+ case FLOAT_LITERAL:
+ case HEX_FLOAT_LITERAL:
+ case BOOL_LITERAL:
+ case STRING_LITERAL:
+ case MULTI_STRING_LIT:
+ case NULL_LITERAL:
+ case LPAREN:
+ case LT:
+ case BANG:
+ case TILDE:
+ case INC:
+ case DEC:
+ case ADD:
+ case SUB:
+ case AT:
+ case IDENTIFIER:
+ {
+ setState(1439);
+ expression(0);
+ setState(1440);
+ match(RBRACK);
+ setState(1447);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,180,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(1441);
+ match(LBRACK);
+ setState(1442);
+ expression(0);
+ setState(1443);
+ match(RBRACK);
+ }
+ }
+ }
+ setState(1449);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,180,_ctx);
+ }
+ setState(1454);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,181,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(1450);
+ match(LBRACK);
+ setState(1451);
+ match(RBRACK);
+ }
+ }
+ }
+ setState(1456);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,181,_ctx);
+ }
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class ClassCreatorRestContext extends ParserRuleContext {
+ public ArgumentsContext arguments() {
+ return getRuleContext(ArgumentsContext.class,0);
+ }
+ public ClassBodyContext classBody() {
+ return getRuleContext(ClassBodyContext.class,0);
+ }
+ public ClassCreatorRestContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_classCreatorRest; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterClassCreatorRest(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitClassCreatorRest(this);
+ }
+ }
+
+ public final ClassCreatorRestContext classCreatorRest() throws RecognitionException {
+ ClassCreatorRestContext _localctx = new ClassCreatorRestContext(_ctx, getState());
+ enterRule(_localctx, 210, RULE_classCreatorRest);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1459);
+ arguments();
+ setState(1461);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,183,_ctx) ) {
+ case 1:
+ {
+ setState(1460);
+ classBody();
+ }
+ break;
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class ExplicitGenericInvocationContext extends ParserRuleContext {
+ public NonWildcardTypeArgumentsContext nonWildcardTypeArguments() {
+ return getRuleContext(NonWildcardTypeArgumentsContext.class,0);
+ }
+ public ExplicitGenericInvocationSuffixContext explicitGenericInvocationSuffix() {
+ return getRuleContext(ExplicitGenericInvocationSuffixContext.class,0);
+ }
+ public ExplicitGenericInvocationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_explicitGenericInvocation; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterExplicitGenericInvocation(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitExplicitGenericInvocation(this);
+ }
+ }
+
+ public final ExplicitGenericInvocationContext explicitGenericInvocation() throws RecognitionException {
+ ExplicitGenericInvocationContext _localctx = new ExplicitGenericInvocationContext(_ctx, getState());
+ enterRule(_localctx, 212, RULE_explicitGenericInvocation);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1463);
+ nonWildcardTypeArguments();
+ setState(1464);
+ explicitGenericInvocationSuffix();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class TypeArgumentsOrDiamondContext extends ParserRuleContext {
+ public TerminalNode LT() { return getToken(ProcessingParser.LT, 0); }
+ public TerminalNode GT() { return getToken(ProcessingParser.GT, 0); }
+ public TypeArgumentsContext typeArguments() {
+ return getRuleContext(TypeArgumentsContext.class,0);
+ }
+ public TypeArgumentsOrDiamondContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_typeArgumentsOrDiamond; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterTypeArgumentsOrDiamond(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitTypeArgumentsOrDiamond(this);
+ }
+ }
+
+ public final TypeArgumentsOrDiamondContext typeArgumentsOrDiamond() throws RecognitionException {
+ TypeArgumentsOrDiamondContext _localctx = new TypeArgumentsOrDiamondContext(_ctx, getState());
+ enterRule(_localctx, 214, RULE_typeArgumentsOrDiamond);
+ try {
+ setState(1469);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,184,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1466);
+ match(LT);
+ setState(1467);
+ match(GT);
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1468);
+ typeArguments();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class NonWildcardTypeArgumentsOrDiamondContext extends ParserRuleContext {
+ public TerminalNode LT() { return getToken(ProcessingParser.LT, 0); }
+ public TerminalNode GT() { return getToken(ProcessingParser.GT, 0); }
+ public NonWildcardTypeArgumentsContext nonWildcardTypeArguments() {
+ return getRuleContext(NonWildcardTypeArgumentsContext.class,0);
+ }
+ public NonWildcardTypeArgumentsOrDiamondContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_nonWildcardTypeArgumentsOrDiamond; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterNonWildcardTypeArgumentsOrDiamond(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitNonWildcardTypeArgumentsOrDiamond(this);
+ }
+ }
+
+ public final NonWildcardTypeArgumentsOrDiamondContext nonWildcardTypeArgumentsOrDiamond() throws RecognitionException {
+ NonWildcardTypeArgumentsOrDiamondContext _localctx = new NonWildcardTypeArgumentsOrDiamondContext(_ctx, getState());
+ enterRule(_localctx, 216, RULE_nonWildcardTypeArgumentsOrDiamond);
+ try {
+ setState(1474);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,185,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1471);
+ match(LT);
+ setState(1472);
+ match(GT);
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1473);
+ nonWildcardTypeArguments();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class NonWildcardTypeArgumentsContext extends ParserRuleContext {
+ public TerminalNode LT() { return getToken(ProcessingParser.LT, 0); }
+ public TypeListContext typeList() {
+ return getRuleContext(TypeListContext.class,0);
+ }
+ public TerminalNode GT() { return getToken(ProcessingParser.GT, 0); }
+ public NonWildcardTypeArgumentsContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_nonWildcardTypeArguments; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterNonWildcardTypeArguments(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitNonWildcardTypeArguments(this);
+ }
+ }
+
+ public final NonWildcardTypeArgumentsContext nonWildcardTypeArguments() throws RecognitionException {
+ NonWildcardTypeArgumentsContext _localctx = new NonWildcardTypeArgumentsContext(_ctx, getState());
+ enterRule(_localctx, 218, RULE_nonWildcardTypeArguments);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1476);
+ match(LT);
+ setState(1477);
+ typeList();
+ setState(1478);
+ match(GT);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class TypeListContext extends ParserRuleContext {
+ public List typeType() {
+ return getRuleContexts(TypeTypeContext.class);
+ }
+ public TypeTypeContext typeType(int i) {
+ return getRuleContext(TypeTypeContext.class,i);
+ }
+ public List COMMA() { return getTokens(ProcessingParser.COMMA); }
+ public TerminalNode COMMA(int i) {
+ return getToken(ProcessingParser.COMMA, i);
+ }
+ public TypeListContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_typeList; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterTypeList(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitTypeList(this);
+ }
+ }
+
+ public final TypeListContext typeList() throws RecognitionException {
+ TypeListContext _localctx = new TypeListContext(_ctx, getState());
+ enterRule(_localctx, 220, RULE_typeList);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1480);
+ typeType();
+ setState(1485);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==COMMA) {
+ {
+ {
+ setState(1481);
+ match(COMMA);
+ setState(1482);
+ typeType();
+ }
+ }
+ setState(1487);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class TypeTypeContext extends ParserRuleContext {
+ public ClassOrInterfaceTypeContext classOrInterfaceType() {
+ return getRuleContext(ClassOrInterfaceTypeContext.class,0);
+ }
+ public PrimitiveTypeContext primitiveType() {
+ return getRuleContext(PrimitiveTypeContext.class,0);
+ }
+ public TerminalNode VAR() { return getToken(ProcessingParser.VAR, 0); }
+ public AnnotationContext annotation() {
+ return getRuleContext(AnnotationContext.class,0);
+ }
+ public List LBRACK() { return getTokens(ProcessingParser.LBRACK); }
+ public TerminalNode LBRACK(int i) {
+ return getToken(ProcessingParser.LBRACK, i);
+ }
+ public List RBRACK() { return getTokens(ProcessingParser.RBRACK); }
+ public TerminalNode RBRACK(int i) {
+ return getToken(ProcessingParser.RBRACK, i);
+ }
+ public TypeTypeContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_typeType; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterTypeType(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitTypeType(this);
+ }
+ }
+
+ public final TypeTypeContext typeType() throws RecognitionException {
+ TypeTypeContext _localctx = new TypeTypeContext(_ctx, getState());
+ enterRule(_localctx, 222, RULE_typeType);
+ int _la;
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1489);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==AT) {
+ {
+ setState(1488);
+ annotation();
+ }
+ }
+
+ setState(1494);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case IDENTIFIER:
+ {
+ setState(1491);
+ classOrInterfaceType();
+ }
+ break;
+ case T__0:
+ case BOOLEAN:
+ case BYTE:
+ case CHAR:
+ case DOUBLE:
+ case FLOAT:
+ case INT:
+ case LONG:
+ case SHORT:
+ {
+ setState(1492);
+ primitiveType();
+ }
+ break;
+ case VAR:
+ {
+ setState(1493);
+ match(VAR);
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ setState(1500);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,189,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(1496);
+ match(LBRACK);
+ setState(1497);
+ match(RBRACK);
+ }
+ }
+ }
+ setState(1502);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,189,_ctx);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class TypeArgumentsContext extends ParserRuleContext {
+ public TerminalNode LT() { return getToken(ProcessingParser.LT, 0); }
+ public List typeArgument() {
+ return getRuleContexts(TypeArgumentContext.class);
+ }
+ public TypeArgumentContext typeArgument(int i) {
+ return getRuleContext(TypeArgumentContext.class,i);
+ }
+ public TerminalNode GT() { return getToken(ProcessingParser.GT, 0); }
+ public List COMMA() { return getTokens(ProcessingParser.COMMA); }
+ public TerminalNode COMMA(int i) {
+ return getToken(ProcessingParser.COMMA, i);
+ }
+ public TypeArgumentsContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_typeArguments; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterTypeArguments(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitTypeArguments(this);
+ }
+ }
+
+ public final TypeArgumentsContext typeArguments() throws RecognitionException {
+ TypeArgumentsContext _localctx = new TypeArgumentsContext(_ctx, getState());
+ enterRule(_localctx, 224, RULE_typeArguments);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1503);
+ match(LT);
+ setState(1504);
+ typeArgument();
+ setState(1509);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==COMMA) {
+ {
+ {
+ setState(1505);
+ match(COMMA);
+ setState(1506);
+ typeArgument();
+ }
+ }
+ setState(1511);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(1512);
+ match(GT);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class SuperSuffixContext extends ParserRuleContext {
+ public ArgumentsContext arguments() {
+ return getRuleContext(ArgumentsContext.class,0);
+ }
+ public TerminalNode DOT() { return getToken(ProcessingParser.DOT, 0); }
+ public TerminalNode IDENTIFIER() { return getToken(ProcessingParser.IDENTIFIER, 0); }
+ public SuperSuffixContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_superSuffix; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterSuperSuffix(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitSuperSuffix(this);
+ }
+ }
+
+ public final SuperSuffixContext superSuffix() throws RecognitionException {
+ SuperSuffixContext _localctx = new SuperSuffixContext(_ctx, getState());
+ enterRule(_localctx, 226, RULE_superSuffix);
+ try {
+ setState(1520);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case LPAREN:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1514);
+ arguments();
+ }
+ break;
+ case DOT:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1515);
+ match(DOT);
+ setState(1516);
+ match(IDENTIFIER);
+ setState(1518);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,191,_ctx) ) {
+ case 1:
+ {
+ setState(1517);
+ arguments();
+ }
+ break;
+ }
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class ExplicitGenericInvocationSuffixContext extends ParserRuleContext {
+ public TerminalNode SUPER() { return getToken(ProcessingParser.SUPER, 0); }
+ public SuperSuffixContext superSuffix() {
+ return getRuleContext(SuperSuffixContext.class,0);
+ }
+ public TerminalNode IDENTIFIER() { return getToken(ProcessingParser.IDENTIFIER, 0); }
+ public ArgumentsContext arguments() {
+ return getRuleContext(ArgumentsContext.class,0);
+ }
+ public ExplicitGenericInvocationSuffixContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_explicitGenericInvocationSuffix; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterExplicitGenericInvocationSuffix(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitExplicitGenericInvocationSuffix(this);
+ }
+ }
+
+ public final ExplicitGenericInvocationSuffixContext explicitGenericInvocationSuffix() throws RecognitionException {
+ ExplicitGenericInvocationSuffixContext _localctx = new ExplicitGenericInvocationSuffixContext(_ctx, getState());
+ enterRule(_localctx, 228, RULE_explicitGenericInvocationSuffix);
+ try {
+ setState(1526);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case SUPER:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1522);
+ match(SUPER);
+ setState(1523);
+ superSuffix();
+ }
+ break;
+ case IDENTIFIER:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1524);
+ match(IDENTIFIER);
+ setState(1525);
+ arguments();
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class ArgumentsContext extends ParserRuleContext {
+ public TerminalNode LPAREN() { return getToken(ProcessingParser.LPAREN, 0); }
+ public TerminalNode RPAREN() { return getToken(ProcessingParser.RPAREN, 0); }
+ public ExpressionListContext expressionList() {
+ return getRuleContext(ExpressionListContext.class,0);
+ }
+ public ArgumentsContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_arguments; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).enterArguments(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof ProcessingListener ) ((ProcessingListener)listener).exitArguments(this);
+ }
+ }
+
+ public final ArgumentsContext arguments() throws RecognitionException {
+ ArgumentsContext _localctx = new ArgumentsContext(_ctx, getState());
+ enterRule(_localctx, 230, RULE_arguments);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1528);
+ match(LPAREN);
+ setState(1530);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__0) | (1L << HexColorLiteral) | (1L << CHAR_LITERAL) | (1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VAR) | (1L << VOID) | (1L << DECIMAL_LITERAL) | (1L << HEX_LITERAL) | (1L << OCT_LITERAL) | (1L << BINARY_LITERAL) | (1L << FLOAT_LITERAL) | (1L << HEX_FLOAT_LITERAL))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (BOOL_LITERAL - 64)) | (1L << (STRING_LITERAL - 64)) | (1L << (MULTI_STRING_LIT - 64)) | (1L << (NULL_LITERAL - 64)) | (1L << (LPAREN - 64)) | (1L << (LT - 64)) | (1L << (BANG - 64)) | (1L << (TILDE - 64)) | (1L << (INC - 64)) | (1L << (DEC - 64)) | (1L << (ADD - 64)) | (1L << (SUB - 64)) | (1L << (AT - 64)) | (1L << (IDENTIFIER - 64)))) != 0)) {
+ {
+ setState(1529);
+ expressionList();
+ }
+ }
+
+ setState(1532);
+ match(RPAREN);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) {
+ switch (ruleIndex) {
+ case 95:
+ return expression_sempred((ExpressionContext)_localctx, predIndex);
+ }
+ return true;
+ }
+ private boolean expression_sempred(ExpressionContext _localctx, int predIndex) {
+ switch (predIndex) {
+ case 0:
+ return precpred(_ctx, 17);
+ case 1:
+ return precpred(_ctx, 16);
+ case 2:
+ return precpred(_ctx, 15);
+ case 3:
+ return precpred(_ctx, 14);
+ case 4:
+ return precpred(_ctx, 12);
+ case 5:
+ return precpred(_ctx, 11);
+ case 6:
+ return precpred(_ctx, 10);
+ case 7:
+ return precpred(_ctx, 9);
+ case 8:
+ return precpred(_ctx, 8);
+ case 9:
+ return precpred(_ctx, 7);
+ case 10:
+ return precpred(_ctx, 6);
+ case 11:
+ return precpred(_ctx, 5);
+ case 12:
+ return precpred(_ctx, 25);
+ case 13:
+ return precpred(_ctx, 24);
+ case 14:
+ return precpred(_ctx, 20);
+ case 15:
+ return precpred(_ctx, 13);
+ case 16:
+ return precpred(_ctx, 3);
+ }
+ return true;
+ }
+
+ public static final String _serializedATN =
+ "\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3u\u0601\4\2\t\2\4"+
+ "\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t"+
+ "\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22"+
+ "\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31\t\31"+
+ "\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36\t\36\4\37\t\37\4 \t \4!"+
+ "\t!\4\"\t\"\4#\t#\4$\t$\4%\t%\4&\t&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t+\4"+
+ ",\t,\4-\t-\4.\t.\4/\t/\4\60\t\60\4\61\t\61\4\62\t\62\4\63\t\63\4\64\t"+
+ "\64\4\65\t\65\4\66\t\66\4\67\t\67\48\t8\49\t9\4:\t:\4;\t;\4<\t<\4=\t="+
+ "\4>\t>\4?\t?\4@\t@\4A\tA\4B\tB\4C\tC\4D\tD\4E\tE\4F\tF\4G\tG\4H\tH\4I"+
+ "\tI\4J\tJ\4K\tK\4L\tL\4M\tM\4N\tN\4O\tO\4P\tP\4Q\tQ\4R\tR\4S\tS\4T\tT"+
+ "\4U\tU\4V\tV\4W\tW\4X\tX\4Y\tY\4Z\tZ\4[\t[\4\\\t\\\4]\t]\4^\t^\4_\t_\4"+
+ "`\t`\4a\ta\4b\tb\4c\tc\4d\td\4e\te\4f\tf\4g\tg\4h\th\4i\ti\4j\tj\4k\t"+
+ "k\4l\tl\4m\tm\4n\tn\4o\to\4p\tp\4q\tq\4r\tr\4s\ts\4t\tt\4u\tu\3\2\3\2"+
+ "\3\2\5\2\u00ee\n\2\3\3\5\3\u00f1\n\3\3\3\7\3\u00f4\n\3\f\3\16\3\u00f7"+
+ "\13\3\3\3\6\3\u00fa\n\3\r\3\16\3\u00fb\3\3\3\3\3\4\3\4\3\4\7\4\u0103\n"+
+ "\4\f\4\16\4\u0106\13\4\3\4\3\4\3\5\3\5\7\5\u010c\n\5\f\5\16\5\u010f\13"+
+ "\5\3\5\3\5\3\6\3\6\3\6\7\6\u0116\n\6\f\6\16\6\u0119\13\6\3\6\3\6\3\6\3"+
+ "\6\3\6\7\6\u0120\n\6\f\6\16\6\u0123\13\6\3\6\3\6\3\6\7\6\u0128\n\6\f\6"+
+ "\16\6\u012b\13\6\3\6\3\6\3\6\3\6\3\6\7\6\u0132\n\6\f\6\16\6\u0135\13\6"+
+ "\5\6\u0137\n\6\3\7\3\7\3\7\3\7\7\7\u013d\n\7\f\7\16\7\u0140\13\7\5\7\u0142"+
+ "\n\7\3\b\3\b\3\b\7\b\u0147\n\b\f\b\16\b\u014a\13\b\3\b\3\b\3\t\3\t\3\t"+
+ "\3\t\5\t\u0152\n\t\3\t\3\t\3\t\3\t\5\t\u0158\n\t\3\t\3\t\3\t\3\t\5\t\u015e"+
+ "\n\t\3\t\5\t\u0161\n\t\3\n\3\n\3\n\5\n\u0166\n\n\3\n\3\n\3\13\3\13\3\13"+
+ "\3\13\3\13\3\13\3\13\3\13\3\13\5\13\u0173\n\13\3\f\3\f\3\r\3\r\5\r\u0179"+
+ "\n\r\3\r\3\r\3\r\5\r\u017e\n\r\7\r\u0180\n\r\f\r\16\r\u0183\13\r\3\16"+
+ "\3\16\3\16\3\16\3\16\3\16\3\16\5\16\u018c\n\16\3\17\3\17\3\20\5\20\u0191"+
+ "\n\20\3\20\7\20\u0194\n\20\f\20\16\20\u0197\13\20\3\20\7\20\u019a\n\20"+
+ "\f\20\16\20\u019d\13\20\3\20\3\20\3\21\7\21\u01a2\n\21\f\21\16\21\u01a5"+
+ "\13\21\3\21\3\21\3\21\3\21\3\22\3\22\5\22\u01ad\n\22\3\22\3\22\3\22\5"+
+ "\22\u01b2\n\22\3\22\3\22\3\23\7\23\u01b7\n\23\f\23\16\23\u01ba\13\23\3"+
+ "\23\3\23\3\23\3\23\5\23\u01c0\n\23\3\23\5\23\u01c3\n\23\3\24\3\24\3\24"+
+ "\3\24\3\24\5\24\u01ca\n\24\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\5\25"+
+ "\u01d4\n\25\3\26\3\26\5\26\u01d8\n\26\3\27\3\27\3\27\5\27\u01dd\n\27\3"+
+ "\27\3\27\5\27\u01e1\n\27\3\27\3\27\5\27\u01e5\n\27\3\27\3\27\3\30\3\30"+
+ "\3\30\3\30\7\30\u01ed\n\30\f\30\16\30\u01f0\13\30\3\30\3\30\3\31\7\31"+
+ "\u01f5\n\31\f\31\16\31\u01f8\13\31\3\31\3\31\3\31\5\31\u01fd\n\31\3\32"+
+ "\3\32\3\32\7\32\u0202\n\32\f\32\16\32\u0205\13\32\3\33\3\33\3\33\3\33"+
+ "\5\33\u020b\n\33\3\33\3\33\5\33\u020f\n\33\3\33\5\33\u0212\n\33\3\33\5"+
+ "\33\u0215\n\33\3\33\3\33\3\34\3\34\3\34\7\34\u021c\n\34\f\34\16\34\u021f"+
+ "\13\34\3\35\7\35\u0222\n\35\f\35\16\35\u0225\13\35\3\35\3\35\5\35\u0229"+
+ "\n\35\3\35\5\35\u022c\n\35\3\36\3\36\7\36\u0230\n\36\f\36\16\36\u0233"+
+ "\13\36\3\37\3\37\3\37\5\37\u0238\n\37\3\37\3\37\5\37\u023c\n\37\3\37\3"+
+ "\37\3 \3 \7 \u0242\n \f \16 \u0245\13 \3 \3 \3!\3!\7!\u024b\n!\f!\16!"+
+ "\u024e\13!\3!\3!\3\"\3\"\3\"\5\"\u0255\n\"\3\"\3\"\7\"\u0259\n\"\f\"\16"+
+ "\"\u025c\13\"\3\"\5\"\u025f\n\"\3#\3#\3#\3#\3#\3#\3#\3#\3#\5#\u026a\n"+
+ "#\3$\3$\3$\3$\3$\7$\u0271\n$\f$\16$\u0274\13$\3$\3$\5$\u0278\n$\3$\3$"+
+ "\3%\3%\5%\u027e\n%\3&\3&\5&\u0282\n&\3\'\3\'\3\'\3(\3(\3(\3)\3)\3)\3)"+
+ "\5)\u028e\n)\3)\3)\3*\3*\3*\3*\3+\7+\u0297\n+\f+\16+\u029a\13+\3+\3+\5"+
+ "+\u029e\n+\3,\3,\3,\3,\3,\3,\3,\5,\u02a7\n,\3-\3-\3-\3-\7-\u02ad\n-\f"+
+ "-\16-\u02b0\13-\3-\3-\3.\3.\3.\7.\u02b7\n.\f.\16.\u02ba\13.\3.\3.\3.\3"+
+ "/\7/\u02c0\n/\f/\16/\u02c3\13/\3/\3/\3/\7/\u02c8\n/\f/\16/\u02cb\13/\3"+
+ "/\3/\5/\u02cf\n/\3/\3/\3/\3/\7/\u02d5\n/\f/\16/\u02d8\13/\3/\3/\5/\u02dc"+
+ "\n/\3/\3/\3\60\3\60\3\60\3\60\3\60\3\60\5\60\u02e6\n\60\3\61\3\61\3\61"+
+ "\3\62\3\62\3\62\7\62\u02ee\n\62\f\62\16\62\u02f1\13\62\3\63\3\63\3\63"+
+ "\5\63\u02f6\n\63\3\64\3\64\5\64\u02fa\n\64\3\65\3\65\3\65\3\65\7\65\u0300"+
+ "\n\65\f\65\16\65\u0303\13\65\3\65\5\65\u0306\n\65\5\65\u0308\n\65\3\65"+
+ "\3\65\3\66\3\66\5\66\u030e\n\66\3\66\3\66\3\66\5\66\u0313\n\66\7\66\u0315"+
+ "\n\66\f\66\16\66\u0318\13\66\3\67\3\67\3\67\3\67\5\67\u031e\n\67\5\67"+
+ "\u0320\n\67\38\38\38\78\u0325\n8\f8\168\u0328\138\39\39\59\u032c\n9\3"+
+ "9\39\3:\3:\3:\7:\u0333\n:\f:\16:\u0336\13:\3:\3:\5:\u033a\n:\3:\5:\u033d"+
+ "\n:\3;\7;\u0340\n;\f;\16;\u0343\13;\3;\3;\3;\3<\7<\u0349\n<\f<\16<\u034c"+
+ "\13<\3<\3<\3<\3<\3=\3=\3>\3>\3?\3?\5?\u0358\n?\3@\3@\3A\3A\3B\3B\3B\3"+
+ "B\3B\5B\u0363\nB\3B\5B\u0366\nB\3C\3C\3C\7C\u036b\nC\fC\16C\u036e\13C"+
+ "\3D\3D\3D\3D\3E\3E\3E\5E\u0377\nE\3F\3F\3F\3F\7F\u037d\nF\fF\16F\u0380"+
+ "\13F\5F\u0382\nF\3F\5F\u0385\nF\3F\3F\3G\3G\3G\3G\3G\3H\3H\7H\u0390\n"+
+ "H\fH\16H\u0393\13H\3H\3H\3I\7I\u0398\nI\fI\16I\u039b\13I\3I\3I\5I\u039f"+
+ "\nI\3J\3J\3J\3J\3J\3J\5J\u03a7\nJ\3J\3J\5J\u03ab\nJ\3J\3J\5J\u03af\nJ"+
+ "\3J\3J\5J\u03b3\nJ\5J\u03b5\nJ\3K\3K\5K\u03b9\nK\3L\3L\3L\3L\5L\u03bf"+
+ "\nL\3M\3M\3N\3N\3N\3O\3O\7O\u03c8\nO\fO\16O\u03cb\13O\3O\3O\3P\3P\3P\3"+
+ "P\3P\5P\u03d4\nP\3Q\7Q\u03d7\nQ\fQ\16Q\u03da\13Q\3Q\3Q\3Q\3R\7R\u03e0"+
+ "\nR\fR\16R\u03e3\13R\3R\3R\5R\u03e7\nR\3R\5R\u03ea\nR\3S\3S\3S\3S\3S\5"+
+ "S\u03f1\nS\3S\3S\3S\3S\3S\3S\3S\5S\u03fa\nS\3S\3S\3S\3S\3S\3S\3S\3S\3"+
+ "S\3S\3S\3S\3S\3S\3S\3S\3S\3S\3S\6S\u040f\nS\rS\16S\u0410\3S\5S\u0414\n"+
+ "S\3S\5S\u0417\nS\3S\3S\3S\3S\7S\u041d\nS\fS\16S\u0420\13S\3S\5S\u0423"+
+ "\nS\3S\3S\3S\3S\7S\u0429\nS\fS\16S\u042c\13S\3S\7S\u042f\nS\fS\16S\u0432"+
+ "\13S\3S\3S\3S\3S\3S\3S\3S\3S\5S\u043c\nS\3S\3S\3S\3S\3S\3S\3S\5S\u0445"+
+ "\nS\3S\3S\3S\5S\u044a\nS\3S\3S\3S\3S\3S\3S\3S\3S\5S\u0454\nS\3T\3T\3T"+
+ "\7T\u0459\nT\fT\16T\u045c\13T\3T\3T\3T\3T\3T\3U\3U\3U\7U\u0466\nU\fU\16"+
+ "U\u0469\13U\3V\3V\3V\3W\3W\3W\5W\u0471\nW\3W\3W\3X\3X\3X\7X\u0478\nX\f"+
+ "X\16X\u047b\13X\3Y\7Y\u047e\nY\fY\16Y\u0481\13Y\3Y\3Y\3Y\3Y\3Y\3Z\6Z\u0489"+
+ "\nZ\rZ\16Z\u048a\3Z\6Z\u048e\nZ\rZ\16Z\u048f\3[\3[\3[\5[\u0495\n[\3[\3"+
+ "[\3[\5[\u049a\n[\3\\\3\\\5\\\u049e\n\\\3\\\3\\\5\\\u04a2\n\\\3\\\3\\\5"+
+ "\\\u04a6\n\\\5\\\u04a8\n\\\3]\3]\5]\u04ac\n]\3^\7^\u04af\n^\f^\16^\u04b2"+
+ "\13^\3^\3^\3^\3^\3^\3_\3_\3_\3_\3`\3`\3`\7`\u04c0\n`\f`\16`\u04c3\13`"+
+ "\3a\3a\3a\3a\3a\3a\3a\3a\3a\3a\3a\3a\3a\3a\3a\3a\3a\3a\5a\u04d7\na\3a"+
+ "\3a\5a\u04db\na\3a\3a\3a\5a\u04e0\na\3a\3a\5a\u04e4\na\3a\3a\3a\3a\3a"+
+ "\3a\3a\3a\3a\3a\3a\3a\3a\3a\5a\u04f4\na\3a\3a\3a\3a\3a\3a\3a\3a\3a\3a"+
+ "\3a\3a\3a\3a\3a\3a\3a\3a\3a\3a\3a\3a\3a\3a\3a\3a\3a\3a\3a\3a\3a\3a\3a"+
+ "\3a\3a\3a\3a\3a\5a\u051c\na\3a\3a\3a\3a\5a\u0522\na\3a\3a\3a\3a\3a\3a"+
+ "\3a\3a\3a\3a\3a\3a\3a\5a\u0531\na\3a\7a\u0534\na\fa\16a\u0537\13a\3b\3"+
+ "b\3b\3b\3c\3c\3c\5c\u0540\nc\3c\3c\3c\3c\3c\7c\u0547\nc\fc\16c\u054a\13"+
+ "c\3c\5c\u054d\nc\3d\3d\5d\u0551\nd\3e\3e\3e\3e\3e\3e\3e\3e\3e\3e\3e\3"+
+ "e\3e\3e\3e\3e\5e\u0563\ne\5e\u0565\ne\3f\3f\3f\5f\u056a\nf\3f\7f\u056d"+
+ "\nf\ff\16f\u0570\13f\3f\3f\5f\u0574\nf\3g\3g\3g\3g\3g\3g\3g\5g\u057d\n"+
+ "g\5g\u057f\ng\3h\3h\5h\u0583\nh\3h\3h\3h\5h\u0588\nh\7h\u058a\nh\fh\16"+
+ "h\u058d\13h\3h\5h\u0590\nh\3i\3i\5i\u0594\ni\3i\3i\3j\3j\3j\3j\7j\u059c"+
+ "\nj\fj\16j\u059f\13j\3j\3j\3j\3j\3j\3j\3j\7j\u05a8\nj\fj\16j\u05ab\13"+
+ "j\3j\3j\7j\u05af\nj\fj\16j\u05b2\13j\5j\u05b4\nj\3k\3k\5k\u05b8\nk\3l"+
+ "\3l\3l\3m\3m\3m\5m\u05c0\nm\3n\3n\3n\5n\u05c5\nn\3o\3o\3o\3o\3p\3p\3p"+
+ "\7p\u05ce\np\fp\16p\u05d1\13p\3q\5q\u05d4\nq\3q\3q\3q\5q\u05d9\nq\3q\3"+
+ "q\7q\u05dd\nq\fq\16q\u05e0\13q\3r\3r\3r\3r\7r\u05e6\nr\fr\16r\u05e9\13"+
+ "r\3r\3r\3s\3s\3s\3s\5s\u05f1\ns\5s\u05f3\ns\3t\3t\3t\3t\5t\u05f9\nt\3"+
+ "u\3u\5u\u05fd\nu\3u\3u\3u\2\3\u00c0v\2\4\6\b\n\f\16\20\22\24\26\30\32"+
+ "\34\36 \"$&(*,.\60\62\64\668:<>@BDFHJLNPRTVXZ\\^`bdfhjlnprtvxz|~\u0080"+
+ "\u0082\u0084\u0086\u0088\u008a\u008c\u008e\u0090\u0092\u0094\u0096\u0098"+
+ "\u009a\u009c\u009e\u00a0\u00a2\u00a4\u00a6\u00a8\u00aa\u00ac\u00ae\u00b0"+
+ "\u00b2\u00b4\u00b6\u00b8\u00ba\u00bc\u00be\u00c0\u00c2\u00c4\u00c6\u00c8"+
+ "\u00ca\u00cc\u00ce\u00d0\u00d2\u00d4\u00d6\u00d8\u00da\u00dc\u00de\u00e0"+
+ "\u00e2\u00e4\u00e6\u00e8\2\16\b\2\3\3\13\13\r\r\20\20\34\34##\4\2\31\31"+
+ "\60\60\3\2\3\2@A\3\2\\_\3\2RS\4\2`aee\3\2^_\4\2PQWX\4\2VVYY\4\2OOfp"+
+ "\3\2\\]\2\u06b7\2\u00ed\3\2\2\2\4\u00f0\3\2\2\2\6\u0104\3\2\2\2\b\u010d"+
+ "\3\2\2\2\n\u0136\3\2\2\2\f\u0141\3\2\2\2\16\u0143\3\2\2\2\20\u0160\3\2"+
+ "\2\2\22\u0162\3\2\2\2\24\u0172\3\2\2\2\26\u0174\3\2\2\2\30\u0178\3\2\2"+
+ "\2\32\u018b\3\2\2\2\34\u018d\3\2\2\2\36\u0190\3\2\2\2 \u01a3\3\2\2\2\""+
+ "\u01aa\3\2\2\2$\u01c2\3\2\2\2&\u01c9\3\2\2\2(\u01d3\3\2\2\2*\u01d7\3\2"+
+ "\2\2,\u01d9\3\2\2\2.\u01e8\3\2\2\2\60\u01f6\3\2\2\2\62\u01fe\3\2\2\2\64"+
+ "\u0206\3\2\2\2\66\u0218\3\2\2\28\u0223\3\2\2\2:\u022d\3\2\2\2<\u0234\3"+
+ "\2\2\2>\u023f\3\2\2\2@\u0248\3\2\2\2B\u025e\3\2\2\2D\u0269\3\2\2\2F\u026b"+
+ "\3\2\2\2H\u027d\3\2\2\2J\u0281\3\2\2\2L\u0283\3\2\2\2N\u0286\3\2\2\2P"+
+ "\u0289\3\2\2\2R\u0291\3\2\2\2T\u029d\3\2\2\2V\u02a6\3\2\2\2X\u02a8\3\2"+
+ "\2\2Z\u02b3\3\2\2\2\\\u02c1\3\2\2\2^\u02e5\3\2\2\2`\u02e7\3\2\2\2b\u02ea"+
+ "\3\2\2\2d\u02f2\3\2\2\2f\u02f9\3\2\2\2h\u02fb\3\2\2\2j\u030b\3\2\2\2l"+
+ "\u031f\3\2\2\2n\u0321\3\2\2\2p\u0329\3\2\2\2r\u033c\3\2\2\2t\u0341\3\2"+
+ "\2\2v\u034a\3\2\2\2x\u0351\3\2\2\2z\u0353\3\2\2\2|\u0357\3\2\2\2~\u0359"+
+ "\3\2\2\2\u0080\u035b\3\2\2\2\u0082\u035d\3\2\2\2\u0084\u0367\3\2\2\2\u0086"+
+ "\u036f\3\2\2\2\u0088\u0376\3\2\2\2\u008a\u0378\3\2\2\2\u008c\u0388\3\2"+
+ "\2\2\u008e\u038d\3\2\2\2\u0090\u039e\3\2\2\2\u0092\u03b4\3\2\2\2\u0094"+
+ "\u03b8\3\2\2\2\u0096\u03ba\3\2\2\2\u0098\u03c0\3\2\2\2\u009a\u03c2\3\2"+
+ "\2\2\u009c\u03c5\3\2\2\2\u009e\u03d3\3\2\2\2\u00a0\u03d8\3\2\2\2\u00a2"+
+ "\u03e9\3\2\2\2\u00a4\u0453\3\2\2\2\u00a6\u0455\3\2\2\2\u00a8\u0462\3\2"+
+ "\2\2\u00aa\u046a\3\2\2\2\u00ac\u046d\3\2\2\2\u00ae\u0474\3\2\2\2\u00b0"+
+ "\u047f\3\2\2\2\u00b2\u0488\3\2\2\2\u00b4\u0499\3\2\2\2\u00b6\u04a7\3\2"+
+ "\2\2\u00b8\u04ab\3\2\2\2\u00ba\u04b0\3\2\2\2\u00bc\u04b8\3\2\2\2\u00be"+
+ "\u04bc\3\2\2\2\u00c0\u04e3\3\2\2\2\u00c2\u0538\3\2\2\2\u00c4\u054c\3\2"+
+ "\2\2\u00c6\u0550\3\2\2\2\u00c8\u0564\3\2\2\2\u00ca\u0569\3\2\2\2\u00cc"+
+ "\u057e\3\2\2\2\u00ce\u058f\3\2\2\2\u00d0\u0591\3\2\2\2\u00d2\u0597\3\2"+
+ "\2\2\u00d4\u05b5\3\2\2\2\u00d6\u05b9\3\2\2\2\u00d8\u05bf\3\2\2\2\u00da"+
+ "\u05c4\3\2\2\2\u00dc\u05c6\3\2\2\2\u00de\u05ca\3\2\2\2\u00e0\u05d3\3\2"+
+ "\2\2\u00e2\u05e1\3\2\2\2\u00e4\u05f2\3\2\2\2\u00e6\u05f8\3\2\2\2\u00e8"+
+ "\u05fa\3\2\2\2\u00ea\u00ee\5\6\4\2\u00eb\u00ee\5\4\3\2\u00ec\u00ee\5\b"+
+ "\5\2\u00ed\u00ea\3\2\2\2\u00ed\u00eb\3\2\2\2\u00ed\u00ec\3\2\2\2\u00ee"+
+ "\3\3\2\2\2\u00ef\u00f1\5 \21\2\u00f0\u00ef\3\2\2\2\u00f0\u00f1\3\2\2\2"+
+ "\u00f1\u00f5\3\2\2\2\u00f2\u00f4\5\"\22\2\u00f3\u00f2\3\2\2\2\u00f4\u00f7"+
+ "\3\2\2\2\u00f5\u00f3\3\2\2\2\u00f5\u00f6\3\2\2\2\u00f6\u00f9\3\2\2\2\u00f7"+
+ "\u00f5\3\2\2\2\u00f8\u00fa\5$\23\2\u00f9\u00f8\3\2\2\2\u00fa\u00fb\3\2"+
+ "\2\2\u00fb\u00f9\3\2\2\2\u00fb\u00fc\3\2\2\2\u00fc\u00fd\3\2\2\2\u00fd"+
+ "\u00fe\7\2\2\3\u00fe\5\3\2\2\2\u00ff\u0103\5\"\22\2\u0100\u0103\5\u009e"+
+ "P\2\u0101\u0103\5$\23\2\u0102\u00ff\3\2\2\2\u0102\u0100\3\2\2\2\u0102"+
+ "\u0101\3\2\2\2\u0103\u0106\3\2\2\2\u0104\u0102\3\2\2\2\u0104\u0105\3\2"+
+ "\2\2\u0105\u0107\3\2\2\2\u0106\u0104\3\2\2\2\u0107\u0108\7\2\2\3\u0108"+
+ "\7\3\2\2\2\u0109\u010c\5\"\22\2\u010a\u010c\5B\"\2\u010b\u0109\3\2\2\2"+
+ "\u010b\u010a\3\2\2\2\u010c\u010f\3\2\2\2\u010d\u010b\3\2\2\2\u010d\u010e"+
+ "\3\2\2\2\u010e\u0110\3\2\2\2\u010f\u010d\3\2\2\2\u0110\u0111\7\2\2\3\u0111"+
+ "\t\3\2\2\2\u0112\u0116\5\"\22\2\u0113\u0116\5B\"\2\u0114\u0116\5\u009e"+
+ "P\2\u0115\u0112\3\2\2\2\u0115\u0113\3\2\2\2\u0115\u0114\3\2\2\2\u0116"+
+ "\u0119\3\2\2\2\u0117\u0115\3\2\2\2\u0117\u0118\3\2\2\2\u0118\u011a\3\2"+
+ "\2\2\u0119\u0117\3\2\2\2\u011a\u011b\5\u009eP\2\u011b\u0121\5B\"\2\u011c"+
+ "\u0120\5\"\22\2\u011d\u0120\5B\"\2\u011e\u0120\5\u009eP\2\u011f\u011c"+
+ "\3\2\2\2\u011f\u011d\3\2\2\2\u011f\u011e\3\2\2\2\u0120\u0123\3\2\2\2\u0121"+
+ "\u011f\3\2\2\2\u0121\u0122\3\2\2\2\u0122\u0137\3\2\2\2\u0123\u0121\3\2"+
+ "\2\2\u0124\u0128\5\"\22\2\u0125\u0128\5B\"\2\u0126\u0128\5\u009eP\2\u0127"+
+ "\u0124\3\2\2\2\u0127\u0125\3\2\2\2\u0127\u0126\3\2\2\2\u0128\u012b\3\2"+
+ "\2\2\u0129\u0127\3\2\2\2\u0129\u012a\3\2\2\2\u012a\u012c\3\2\2\2\u012b"+
+ "\u0129\3\2\2\2\u012c\u012d\5B\"\2\u012d\u0133\5\u009eP\2\u012e\u0132\5"+
+ "\"\22\2\u012f\u0132\5B\"\2\u0130\u0132\5\u009eP\2\u0131\u012e\3\2\2\2"+
+ "\u0131\u012f\3\2\2\2\u0131\u0130\3\2\2\2\u0132\u0135\3\2\2\2\u0133\u0131"+
+ "\3\2\2\2\u0133\u0134\3\2\2\2\u0134\u0137\3\2\2\2\u0135\u0133\3\2\2\2\u0136"+
+ "\u0117\3\2\2\2\u0136\u0129\3\2\2\2\u0137\13\3\2\2\2\u0138\u0142\5\16\b"+
+ "\2\u0139\u013e\7u\2\2\u013a\u013b\7J\2\2\u013b\u013d\7K\2\2\u013c\u013a"+
+ "\3\2\2\2\u013d\u0140\3\2\2\2\u013e\u013c\3\2\2\2\u013e\u013f\3\2\2\2\u013f"+
+ "\u0142\3\2\2\2\u0140\u013e\3\2\2\2\u0141\u0138\3\2\2\2\u0141\u0139\3\2"+
+ "\2\2\u0142\r\3\2\2\2\u0143\u0148\5\24\13\2\u0144\u0145\7J\2\2\u0145\u0147"+
+ "\7K\2\2\u0146\u0144\3\2\2\2\u0147\u014a\3\2\2\2\u0148\u0146\3\2\2\2\u0148"+
+ "\u0149\3\2\2\2\u0149\u014b\3\2\2\2\u014a\u0148\3\2\2\2\u014b\u014c\b\b"+
+ "\1\2\u014c\17\3\2\2\2\u014d\u0161\5\22\n\2\u014e\u014f\7u\2\2\u014f\u0151"+
+ "\7F\2\2\u0150\u0152\5\u00be`\2\u0151\u0150\3\2\2\2\u0151\u0152\3\2\2\2"+
+ "\u0152\u0153\3\2\2\2\u0153\u0161\7G\2\2\u0154\u0155\7\63\2\2\u0155\u0157"+
+ "\7F\2\2\u0156\u0158\5\u00be`\2\u0157\u0156\3\2\2\2\u0157\u0158\3\2\2\2"+
+ "\u0158\u0159\3\2\2\2\u0159\u0161\7G\2\2\u015a\u015b\7\60\2\2\u015b\u015d"+
+ "\7F\2\2\u015c\u015e\5\u00be`\2\u015d\u015c\3\2\2\2\u015d\u015e\3\2\2\2"+
+ "\u015e\u015f\3\2\2\2\u015f\u0161\7G\2\2\u0160\u014d\3\2\2\2\u0160\u014e"+
+ "\3\2\2\2\u0160\u0154\3\2\2\2\u0160\u015a\3\2\2\2\u0161\21\3\2\2\2\u0162"+
+ "\u0163\t\2\2\2\u0163\u0165\7F\2\2\u0164\u0166\5\u00be`\2\u0165\u0164\3"+
+ "\2\2\2\u0165\u0166\3\2\2\2\u0166\u0167\3\2\2\2\u0167\u0168\7G\2\2\u0168"+
+ "\23\3\2\2\2\u0169\u0173\7\13\2\2\u016a\u0173\7\20\2\2\u016b\u0173\7\r"+
+ "\2\2\u016c\u0173\7-\2\2\u016d\u0173\7#\2\2\u016e\u0173\7%\2\2\u016f\u0173"+
+ "\7\34\2\2\u0170\u0173\7\26\2\2\u0171\u0173\5\26\f\2\u0172\u0169\3\2\2"+
+ "\2\u0172\u016a\3\2\2\2\u0172\u016b\3\2\2\2\u0172\u016c\3\2\2\2\u0172\u016d"+
+ "\3\2\2\2\u0172\u016e\3\2\2\2\u0172\u016f\3\2\2\2\u0172\u0170\3\2\2\2\u0172"+
+ "\u0171\3\2\2\2\u0173\25\3\2\2\2\u0174\u0175\7\3\2\2\u0175\27\3\2\2\2\u0176"+
+ "\u0179\7u\2\2\u0177\u0179\5\26\f\2\u0178\u0176\3\2\2\2\u0178\u0177\3\2"+
+ "\2\2\u0179\u0181\3\2\2\2\u017a\u017d\7N\2\2\u017b\u017e\7u\2\2\u017c\u017e"+
+ "\5\26\f\2\u017d\u017b\3\2\2\2\u017d\u017c\3\2\2\2\u017e\u0180\3\2\2\2"+
+ "\u017f\u017a\3\2\2\2\u0180\u0183\3\2\2\2\u0181\u017f\3\2\2\2\u0181\u0182"+
+ "\3\2\2\2\u0182\31\3\2\2\2\u0183\u0181\3\2\2\2\u0184\u018c\5~@\2\u0185"+
+ "\u018c\5\u0080A\2\u0186\u018c\7\b\2\2\u0187\u018c\5|?\2\u0188\u018c\7"+
+ "B\2\2\u0189\u018c\7E\2\2\u018a\u018c\5\34\17\2\u018b\u0184\3\2\2\2\u018b"+
+ "\u0185\3\2\2\2\u018b\u0186\3\2\2\2\u018b\u0187\3\2\2\2\u018b\u0188\3\2"+
+ "\2\2\u018b\u0189\3\2\2\2\u018b\u018a\3\2\2\2\u018c\33\3\2\2\2\u018d\u018e"+
+ "\7\4\2\2\u018e\35\3\2\2\2\u018f\u0191\5 \21\2\u0190\u018f\3\2\2\2\u0190"+
+ "\u0191\3\2\2\2\u0191\u0195\3\2\2\2\u0192\u0194\5\"\22\2\u0193\u0192\3"+
+ "\2\2\2\u0194\u0197\3\2\2\2\u0195\u0193\3\2\2\2\u0195\u0196\3\2\2\2\u0196"+
+ "\u019b\3\2\2\2\u0197\u0195\3\2\2\2\u0198\u019a\5$\23\2\u0199\u0198\3\2"+
+ "\2\2\u019a\u019d\3\2\2\2\u019b\u0199\3\2\2\2\u019b\u019c\3\2\2\2\u019c"+
+ "\u019e\3\2\2\2\u019d\u019b\3\2\2\2\u019e\u019f\7\2\2\3\u019f\37\3\2\2"+
+ "\2\u01a0\u01a2\5\u0082B\2\u01a1\u01a0\3\2\2\2\u01a2\u01a5\3\2\2\2\u01a3"+
+ "\u01a1\3\2\2\2\u01a3\u01a4\3\2\2\2\u01a4\u01a6\3\2\2\2\u01a5\u01a3\3\2"+
+ "\2\2\u01a6\u01a7\7(\2\2\u01a7\u01a8\5\30\r\2\u01a8\u01a9\7L\2\2\u01a9"+
+ "!\3\2\2\2\u01aa\u01ac\7!\2\2\u01ab\u01ad\7.\2\2\u01ac\u01ab\3\2\2\2\u01ac"+
+ "\u01ad\3\2\2\2\u01ad\u01ae\3\2\2\2\u01ae\u01b1\5\30\r\2\u01af\u01b0\7"+
+ "N\2\2\u01b0\u01b2\7`\2\2\u01b1\u01af\3\2\2\2\u01b1\u01b2\3\2\2\2\u01b2"+
+ "\u01b3\3\2\2\2\u01b3\u01b4\7L\2\2\u01b4#\3\2\2\2\u01b5\u01b7\5(\25\2\u01b6"+
+ "\u01b5\3\2\2\2\u01b7\u01ba\3\2\2\2\u01b8\u01b6\3\2\2\2\u01b8\u01b9\3\2"+
+ "\2\2\u01b9\u01bf\3\2\2\2\u01ba\u01b8\3\2\2\2\u01bb\u01c0\5,\27\2\u01bc"+
+ "\u01c0\5\64\33\2\u01bd\u01c0\5<\37\2\u01be\u01c0\5\u008cG\2\u01bf\u01bb"+
+ "\3\2\2\2\u01bf\u01bc\3\2\2\2\u01bf\u01bd\3\2\2\2\u01bf\u01be\3\2\2\2\u01c0"+
+ "\u01c3\3\2\2\2\u01c1\u01c3\7L\2\2\u01c2\u01b8\3\2\2\2\u01c2\u01c1\3\2"+
+ "\2\2\u01c3%\3\2\2\2\u01c4\u01ca\5(\25\2\u01c5\u01ca\7&\2\2\u01c6\u01ca"+
+ "\7\62\2\2\u01c7\u01ca\7\66\2\2\u01c8\u01ca\7:\2\2\u01c9\u01c4\3\2\2\2"+
+ "\u01c9\u01c5\3\2\2\2\u01c9\u01c6\3\2\2\2\u01c9\u01c7\3\2\2\2\u01c9\u01c8"+
+ "\3\2\2\2\u01ca\'\3\2\2\2\u01cb\u01d4\5\u0082B\2\u01cc\u01d4\7+\2\2\u01cd"+
+ "\u01d4\7*\2\2\u01ce\u01d4\7)\2\2\u01cf\u01d4\7.\2\2\u01d0\u01d4\7\t\2"+
+ "\2\u01d1\u01d4\7\32\2\2\u01d2\u01d4\7/\2\2\u01d3\u01cb\3\2\2\2\u01d3\u01cc"+
+ "\3\2\2\2\u01d3\u01cd\3\2\2\2\u01d3\u01ce\3\2\2\2\u01d3\u01cf\3\2\2\2\u01d3"+
+ "\u01d0\3\2\2\2\u01d3\u01d1\3\2\2\2\u01d3\u01d2\3\2\2\2\u01d4)\3\2\2\2"+
+ "\u01d5\u01d8\7\32\2\2\u01d6\u01d8\5\u0082B\2\u01d7\u01d5\3\2\2\2\u01d7"+
+ "\u01d6\3\2\2\2\u01d8+\3\2\2\2\u01d9\u01da\7\21\2\2\u01da\u01dc\7u\2\2"+
+ "\u01db\u01dd\5.\30\2\u01dc\u01db\3\2\2\2\u01dc\u01dd\3\2\2\2\u01dd\u01e0"+
+ "\3\2\2\2\u01de\u01df\7\31\2\2\u01df\u01e1\5\u00e0q\2\u01e0\u01de\3\2\2"+
+ "\2\u01e0\u01e1\3\2\2\2\u01e1\u01e4\3\2\2\2\u01e2\u01e3\7 \2\2\u01e3\u01e5"+
+ "\5\u00dep\2\u01e4\u01e2\3\2\2\2\u01e4\u01e5\3\2\2\2\u01e5\u01e6\3\2\2"+
+ "\2\u01e6\u01e7\5> \2\u01e7-\3\2\2\2\u01e8\u01e9\7Q\2\2\u01e9\u01ee\5\60"+
+ "\31\2\u01ea\u01eb\7M\2\2\u01eb\u01ed\5\60\31\2\u01ec\u01ea\3\2\2\2\u01ed"+
+ "\u01f0\3\2\2\2\u01ee\u01ec\3\2\2\2\u01ee\u01ef\3\2\2\2\u01ef\u01f1\3\2"+
+ "\2\2\u01f0\u01ee\3\2\2\2\u01f1\u01f2\7P\2\2\u01f2/\3\2\2\2\u01f3\u01f5"+
+ "\5\u0082B\2\u01f4\u01f3\3\2\2\2\u01f5\u01f8\3\2\2\2\u01f6\u01f4\3\2\2"+
+ "\2\u01f6\u01f7\3\2\2\2\u01f7\u01f9\3\2\2\2\u01f8\u01f6\3\2\2\2\u01f9\u01fc"+
+ "\7u\2\2\u01fa\u01fb\7\31\2\2\u01fb\u01fd\5\62\32\2\u01fc\u01fa\3\2\2\2"+
+ "\u01fc\u01fd\3\2\2\2\u01fd\61\3\2\2\2\u01fe\u0203\5\u00e0q\2\u01ff\u0200"+
+ "\7b\2\2\u0200\u0202\5\u00e0q\2\u0201\u01ff\3\2\2\2\u0202\u0205\3\2\2\2"+
+ "\u0203\u0201\3\2\2\2\u0203\u0204\3\2\2\2\u0204\63\3\2\2\2\u0205\u0203"+
+ "\3\2\2\2\u0206\u0207\7\30\2\2\u0207\u020a\7u\2\2\u0208\u0209\7 \2\2\u0209"+
+ "\u020b\5\u00dep\2\u020a\u0208\3\2\2\2\u020a\u020b\3\2\2\2\u020b\u020c"+
+ "\3\2\2\2\u020c\u020e\7H\2\2\u020d\u020f\5\66\34\2\u020e\u020d\3\2\2\2"+
+ "\u020e\u020f\3\2\2\2\u020f\u0211\3\2\2\2\u0210\u0212\7M\2\2\u0211\u0210"+
+ "\3\2\2\2\u0211\u0212\3\2\2\2\u0212\u0214\3\2\2\2\u0213\u0215\5:\36\2\u0214"+
+ "\u0213\3\2\2\2\u0214\u0215\3\2\2\2\u0215\u0216\3\2\2\2\u0216\u0217\7I"+
+ "\2\2\u0217\65\3\2\2\2\u0218\u021d\58\35\2\u0219\u021a\7M\2\2\u021a\u021c"+
+ "\58\35\2\u021b\u0219\3\2\2\2\u021c\u021f\3\2\2\2\u021d\u021b\3\2\2\2\u021d"+
+ "\u021e\3\2\2\2\u021e\67\3\2\2\2\u021f\u021d\3\2\2\2\u0220\u0222\5\u0082"+
+ "B\2\u0221\u0220\3\2\2\2\u0222\u0225\3\2\2\2\u0223\u0221\3\2\2\2\u0223"+
+ "\u0224\3\2\2\2\u0224\u0226\3\2\2\2\u0225\u0223\3\2\2\2\u0226\u0228\7u"+
+ "\2\2\u0227\u0229\5\u00e8u\2\u0228\u0227\3\2\2\2\u0228\u0229\3\2\2\2\u0229"+
+ "\u022b\3\2\2\2\u022a\u022c\5> \2\u022b\u022a\3\2\2\2\u022b\u022c\3\2\2"+
+ "\2\u022c9\3\2\2\2\u022d\u0231\7L\2\2\u022e\u0230\5B\"\2\u022f\u022e\3"+
+ "\2\2\2\u0230\u0233\3\2\2\2\u0231\u022f\3\2\2\2\u0231\u0232\3\2\2\2\u0232"+
+ ";\3\2\2\2\u0233\u0231\3\2\2\2\u0234\u0235\7$\2\2\u0235\u0237\7u\2\2\u0236"+
+ "\u0238\5.\30\2\u0237\u0236\3\2\2\2\u0237\u0238\3\2\2\2\u0238\u023b\3\2"+
+ "\2\2\u0239\u023a\7\31\2\2\u023a\u023c\5\u00dep\2\u023b\u0239\3\2\2\2\u023b"+
+ "\u023c\3\2\2\2\u023c\u023d\3\2\2\2\u023d\u023e\5@!\2\u023e=\3\2\2\2\u023f"+
+ "\u0243\7H\2\2\u0240\u0242\5B\"\2\u0241\u0240\3\2\2\2\u0242\u0245\3\2\2"+
+ "\2\u0243\u0241\3\2\2\2\u0243\u0244\3\2\2\2\u0244\u0246\3\2\2\2\u0245\u0243"+
+ "\3\2\2\2\u0246\u0247\7I\2\2\u0247?\3\2\2\2\u0248\u024c\7H\2\2\u0249\u024b"+
+ "\5T+\2\u024a\u0249\3\2\2\2\u024b\u024e\3\2\2\2\u024c\u024a\3\2\2\2\u024c"+
+ "\u024d\3\2\2\2\u024d\u024f\3\2\2\2\u024e\u024c\3\2\2\2\u024f\u0250\7I"+
+ "\2\2\u0250A\3\2\2\2\u0251\u025f\7L\2\2\u0252\u025f\5\"\22\2\u0253\u0255"+
+ "\7.\2\2\u0254\u0253\3\2\2\2\u0254\u0255\3\2\2\2\u0255\u0256\3\2\2\2\u0256"+
+ "\u025f\5\u009cO\2\u0257\u0259\5&\24\2\u0258\u0257\3\2\2\2\u0259\u025c"+
+ "\3\2\2\2\u025a\u0258\3\2\2\2\u025a\u025b\3\2\2\2\u025b\u025d\3\2\2\2\u025c"+
+ "\u025a\3\2\2\2\u025d\u025f\5D#\2\u025e\u0251\3\2\2\2\u025e\u0252\3\2\2"+
+ "\2\u025e\u0254\3\2\2\2\u025e\u025a\3\2\2\2\u025fC\3\2\2\2\u0260\u026a"+
+ "\5F$\2\u0261\u026a\5L\'\2\u0262\u026a\5R*\2\u0263\u026a\5P)\2\u0264\u026a"+
+ "\5N(\2\u0265\u026a\5<\37\2\u0266\u026a\5\u008cG\2\u0267\u026a\5,\27\2"+
+ "\u0268\u026a\5\64\33\2\u0269\u0260\3\2\2\2\u0269\u0261\3\2\2\2\u0269\u0262"+
+ "\3\2\2\2\u0269\u0263\3\2\2\2\u0269\u0264\3\2\2\2\u0269\u0265\3\2\2\2\u0269"+
+ "\u0266\3\2\2\2\u0269\u0267\3\2\2\2\u0269\u0268\3\2\2\2\u026aE\3\2\2\2"+
+ "\u026b\u026c\5J&\2\u026c\u026d\7u\2\2\u026d\u0272\5p9\2\u026e\u026f\7"+
+ "J\2\2\u026f\u0271\7K\2\2\u0270\u026e\3\2\2\2\u0271\u0274\3\2\2\2\u0272"+
+ "\u0270\3\2\2\2\u0272\u0273\3\2\2\2\u0273\u0277\3\2\2\2\u0274\u0272\3\2"+
+ "\2\2\u0275\u0276\7\65\2\2\u0276\u0278\5n8\2\u0277\u0275\3\2\2\2\u0277"+
+ "\u0278\3\2\2\2\u0278\u0279\3\2\2\2\u0279\u027a\5H%\2\u027aG\3\2\2\2\u027b"+
+ "\u027e\5\u009cO\2\u027c\u027e\7L\2\2\u027d\u027b\3\2\2\2\u027d\u027c\3"+
+ "\2\2\2\u027eI\3\2\2\2\u027f\u0282\5\u00e0q\2\u0280\u0282\79\2\2\u0281"+
+ "\u027f\3\2\2\2\u0281\u0280\3\2\2\2\u0282K\3\2\2\2\u0283\u0284\5.\30\2"+
+ "\u0284\u0285\5F$\2\u0285M\3\2\2\2\u0286\u0287\5.\30\2\u0287\u0288\5P)"+
+ "\2\u0288O\3\2\2\2\u0289\u028a\7u\2\2\u028a\u028d\5p9\2\u028b\u028c\7\65"+
+ "\2\2\u028c\u028e\5n8\2\u028d\u028b\3\2\2\2\u028d\u028e\3\2\2\2\u028e\u028f"+
+ "\3\2\2\2\u028f\u0290\5\u009cO\2\u0290Q\3\2\2\2\u0291\u0292\5\u00e0q\2"+
+ "\u0292\u0293\5b\62\2\u0293\u0294\7L\2\2\u0294S\3\2\2\2\u0295\u0297\5&"+
+ "\24\2\u0296\u0295\3\2\2\2\u0297\u029a\3\2\2\2\u0298\u0296\3\2\2\2\u0298"+
+ "\u0299\3\2\2\2\u0299\u029b\3\2\2\2\u029a\u0298\3\2\2\2\u029b\u029e\5V"+
+ ",\2\u029c\u029e\7L\2\2\u029d\u0298\3\2\2\2\u029d\u029c\3\2\2\2\u029eU"+
+ "\3\2\2\2\u029f\u02a7\5X-\2\u02a0\u02a7\5\\/\2\u02a1\u02a7\5`\61\2\u02a2"+
+ "\u02a7\5<\37\2\u02a3\u02a7\5\u008cG\2\u02a4\u02a7\5,\27\2\u02a5\u02a7"+
+ "\5\64\33\2\u02a6\u029f\3\2\2\2\u02a6\u02a0\3\2\2\2\u02a6\u02a1\3\2\2\2"+
+ "\u02a6\u02a2\3\2\2\2\u02a6\u02a3\3\2\2\2\u02a6\u02a4\3\2\2\2\u02a6\u02a5"+
+ "\3\2\2\2\u02a7W\3\2\2\2\u02a8\u02a9\5\u00e0q\2\u02a9\u02ae\5Z.\2\u02aa"+
+ "\u02ab\7M\2\2\u02ab\u02ad\5Z.\2\u02ac\u02aa\3\2\2\2\u02ad\u02b0\3\2\2"+
+ "\2\u02ae\u02ac\3\2\2\2\u02ae\u02af\3\2\2\2\u02af\u02b1\3\2\2\2\u02b0\u02ae"+
+ "\3\2\2\2\u02b1\u02b2\7L\2\2\u02b2Y\3\2\2\2\u02b3\u02b8\7u\2\2\u02b4\u02b5"+
+ "\7J\2\2\u02b5\u02b7\7K\2\2\u02b6\u02b4\3\2\2\2\u02b7\u02ba\3\2\2\2\u02b8"+
+ "\u02b6\3\2\2\2\u02b8\u02b9\3\2\2\2\u02b9\u02bb\3\2\2\2\u02ba\u02b8\3\2"+
+ "\2\2\u02bb\u02bc\7O\2\2\u02bc\u02bd\5f\64\2\u02bd[\3\2\2\2\u02be\u02c0"+
+ "\5^\60\2\u02bf\u02be\3\2\2\2\u02c0\u02c3\3\2\2\2\u02c1\u02bf\3\2\2\2\u02c1"+
+ "\u02c2\3\2\2\2\u02c2\u02ce\3\2\2\2\u02c3\u02c1\3\2\2\2\u02c4\u02cf\5J"+
+ "&\2\u02c5\u02c9\5.\30\2\u02c6\u02c8\5\u0082B\2\u02c7\u02c6\3\2\2\2\u02c8"+
+ "\u02cb\3\2\2\2\u02c9\u02c7\3\2\2\2\u02c9\u02ca\3\2\2\2\u02ca\u02cc\3\2"+
+ "\2\2\u02cb\u02c9\3\2\2\2\u02cc\u02cd\5J&\2\u02cd\u02cf\3\2\2\2\u02ce\u02c4"+
+ "\3\2\2\2\u02ce\u02c5\3\2\2\2\u02cf\u02d0\3\2\2\2\u02d0\u02d1\7u\2\2\u02d1"+
+ "\u02d6\5p9\2\u02d2\u02d3\7J\2\2\u02d3\u02d5\7K\2\2\u02d4\u02d2\3\2\2\2"+
+ "\u02d5\u02d8\3\2\2\2\u02d6\u02d4\3\2\2\2\u02d6\u02d7\3\2\2\2\u02d7\u02db"+
+ "\3\2\2\2\u02d8\u02d6\3\2\2\2\u02d9\u02da\7\65\2\2\u02da\u02dc\5n8\2\u02db"+
+ "\u02d9\3\2\2\2\u02db\u02dc\3\2\2\2\u02dc\u02dd\3\2\2\2\u02dd\u02de\5H"+
+ "%\2\u02de]\3\2\2\2\u02df\u02e6\5\u0082B\2\u02e0\u02e6\7+\2\2\u02e1\u02e6"+
+ "\7\t\2\2\u02e2\u02e6\7\24\2\2\u02e3\u02e6\7.\2\2\u02e4\u02e6\7/\2\2\u02e5"+
+ "\u02df\3\2\2\2\u02e5\u02e0\3\2\2\2\u02e5\u02e1\3\2\2\2\u02e5\u02e2\3\2"+
+ "\2\2\u02e5\u02e3\3\2\2\2\u02e5\u02e4\3\2\2\2\u02e6_\3\2\2\2\u02e7\u02e8"+
+ "\5.\30\2\u02e8\u02e9\5\\/\2\u02e9a\3\2\2\2\u02ea\u02ef\5d\63\2\u02eb\u02ec"+
+ "\7M\2\2\u02ec\u02ee\5d\63\2\u02ed\u02eb\3\2\2\2\u02ee\u02f1\3\2\2\2\u02ef"+
+ "\u02ed\3\2\2\2\u02ef\u02f0\3\2\2\2\u02f0c\3\2\2\2\u02f1\u02ef\3\2\2\2"+
+ "\u02f2\u02f5\5\f\7\2\u02f3\u02f4\7O\2\2\u02f4\u02f6\5f\64\2\u02f5\u02f3"+
+ "\3\2\2\2\u02f5\u02f6\3\2\2\2\u02f6e\3\2\2\2\u02f7\u02fa\5h\65\2\u02f8"+
+ "\u02fa\5\u00c0a\2\u02f9\u02f7\3\2\2\2\u02f9\u02f8\3\2\2\2\u02fag\3\2\2"+
+ "\2\u02fb\u0307\7H\2\2\u02fc\u0301\5f\64\2\u02fd\u02fe\7M\2\2\u02fe\u0300"+
+ "\5f\64\2\u02ff\u02fd\3\2\2\2\u0300\u0303\3\2\2\2\u0301\u02ff\3\2\2\2\u0301"+
+ "\u0302\3\2\2\2\u0302\u0305\3\2\2\2\u0303\u0301\3\2\2\2\u0304\u0306\7M"+
+ "\2\2\u0305\u0304\3\2\2\2\u0305\u0306\3\2\2\2\u0306\u0308\3\2\2\2\u0307"+
+ "\u02fc\3\2\2\2\u0307\u0308\3\2\2\2\u0308\u0309\3\2\2\2\u0309\u030a\7I"+
+ "\2\2\u030ai\3\2\2\2\u030b\u030d\7u\2\2\u030c\u030e\5\u00e2r\2\u030d\u030c"+
+ "\3\2\2\2\u030d\u030e\3\2\2\2\u030e\u0316\3\2\2\2\u030f\u0310\7N\2\2\u0310"+
+ "\u0312\7u\2\2\u0311\u0313\5\u00e2r\2\u0312\u0311\3\2\2\2\u0312\u0313\3"+
+ "\2\2\2\u0313\u0315\3\2\2\2\u0314\u030f\3\2\2\2\u0315\u0318\3\2\2\2\u0316"+
+ "\u0314\3\2\2\2\u0316\u0317\3\2\2\2\u0317k\3\2\2\2\u0318\u0316\3\2\2\2"+
+ "\u0319\u0320\5\u00e0q\2\u031a\u031d\7T\2\2\u031b\u031c\t\3\2\2\u031c\u031e"+
+ "\5\u00e0q\2\u031d\u031b\3\2\2\2\u031d\u031e\3\2\2\2\u031e\u0320\3\2\2"+
+ "\2\u031f\u0319\3\2\2\2\u031f\u031a\3\2\2\2\u0320m\3\2\2\2\u0321\u0326"+
+ "\5\30\r\2\u0322\u0323\7M\2\2\u0323\u0325\5\30\r\2\u0324\u0322\3\2\2\2"+
+ "\u0325\u0328\3\2\2\2\u0326\u0324\3\2\2\2\u0326\u0327\3\2\2\2\u0327o\3"+
+ "\2\2\2\u0328\u0326\3\2\2\2\u0329\u032b\7F\2\2\u032a\u032c\5r:\2\u032b"+
+ "\u032a\3\2\2\2\u032b\u032c\3\2\2\2\u032c\u032d\3\2\2\2\u032d\u032e\7G"+
+ "\2\2\u032eq\3\2\2\2\u032f\u0334\5t;\2\u0330\u0331\7M\2\2\u0331\u0333\5"+
+ "t;\2\u0332\u0330\3\2\2\2\u0333\u0336\3\2\2\2\u0334\u0332\3\2\2\2\u0334"+
+ "\u0335\3\2\2\2\u0335\u0339\3\2\2\2\u0336\u0334\3\2\2\2\u0337\u0338\7M"+
+ "\2\2\u0338\u033a\5v<\2\u0339\u0337\3\2\2\2\u0339\u033a\3\2\2\2\u033a\u033d"+
+ "\3\2\2\2\u033b\u033d\5v<\2\u033c\u032f\3\2\2\2\u033c\u033b\3\2\2\2\u033d"+
+ "s\3\2\2\2\u033e\u0340\5*\26\2\u033f\u033e\3\2\2\2\u0340\u0343\3\2\2\2"+
+ "\u0341\u033f\3\2\2\2\u0341\u0342\3\2\2\2\u0342\u0344\3\2\2\2\u0343\u0341"+
+ "\3\2\2\2\u0344\u0345\5\u00e0q\2\u0345\u0346\5\f\7\2\u0346u\3\2\2\2\u0347"+
+ "\u0349\5*\26\2\u0348\u0347\3\2\2\2\u0349\u034c\3\2\2\2\u034a\u0348\3\2"+
+ "\2\2\u034a\u034b\3\2\2\2\u034b\u034d\3\2\2\2\u034c\u034a\3\2\2\2\u034d"+
+ "\u034e\5\u00e0q\2\u034e\u034f\7t\2\2\u034f\u0350\5\f\7\2\u0350w\3\2\2"+
+ "\2\u0351\u0352\7C\2\2\u0352y\3\2\2\2\u0353\u0354\7D\2\2\u0354{\3\2\2\2"+
+ "\u0355\u0358\5x=\2\u0356\u0358\5z>\2\u0357\u0355\3\2\2\2\u0357\u0356\3"+
+ "\2\2\2\u0358}\3\2\2\2\u0359\u035a\t\4\2\2\u035a\177\3\2\2\2\u035b\u035c"+
+ "\t\5\2\2\u035c\u0081\3\2\2\2\u035d\u035e\7s\2\2\u035e\u0365\5\30\r\2\u035f"+
+ "\u0362\7F\2\2\u0360\u0363\5\u0084C\2\u0361\u0363\5\u0088E\2\u0362\u0360"+
+ "\3\2\2\2\u0362\u0361\3\2\2\2\u0362\u0363\3\2\2\2\u0363\u0364\3\2\2\2\u0364"+
+ "\u0366\7G\2\2\u0365\u035f\3\2\2\2\u0365\u0366\3\2\2\2\u0366\u0083\3\2"+
+ "\2\2\u0367\u036c\5\u0086D\2\u0368\u0369\7M\2\2\u0369\u036b\5\u0086D\2"+
+ "\u036a\u0368\3\2\2\2\u036b\u036e\3\2\2\2\u036c\u036a\3\2\2\2\u036c\u036d"+
+ "\3\2\2\2\u036d\u0085\3\2\2\2\u036e\u036c\3\2\2\2\u036f\u0370\7u\2\2\u0370"+
+ "\u0371\7O\2\2\u0371\u0372\5\u0088E\2\u0372\u0087\3\2\2\2\u0373\u0377\5"+
+ "\u00c0a\2\u0374\u0377\5\u0082B\2\u0375\u0377\5\u008aF\2\u0376\u0373\3"+
+ "\2\2\2\u0376\u0374\3\2\2\2\u0376\u0375\3\2\2\2\u0377\u0089\3\2\2\2\u0378"+
+ "\u0381\7H\2\2\u0379\u037e\5\u0088E\2\u037a\u037b\7M\2\2\u037b\u037d\5"+
+ "\u0088E\2\u037c\u037a\3\2\2\2\u037d\u0380\3\2\2\2\u037e\u037c\3\2\2\2"+
+ "\u037e\u037f\3\2\2\2\u037f\u0382\3\2\2\2\u0380\u037e\3\2\2\2\u0381\u0379"+
+ "\3\2\2\2\u0381\u0382\3\2\2\2\u0382\u0384\3\2\2\2\u0383\u0385\7M\2\2\u0384"+
+ "\u0383\3\2\2\2\u0384\u0385\3\2\2\2\u0385\u0386\3\2\2\2\u0386\u0387\7I"+
+ "\2\2\u0387\u008b\3\2\2\2\u0388\u0389\7s\2\2\u0389\u038a\7$\2\2\u038a\u038b"+
+ "\7u\2\2\u038b\u038c\5\u008eH\2\u038c\u008d\3\2\2\2\u038d\u0391\7H\2\2"+
+ "\u038e\u0390\5\u0090I\2\u038f\u038e\3\2\2\2\u0390\u0393\3\2\2\2\u0391"+
+ "\u038f\3\2\2\2\u0391\u0392\3\2\2\2\u0392\u0394\3\2\2\2\u0393\u0391\3\2"+
+ "\2\2\u0394\u0395\7I\2\2\u0395\u008f\3\2\2\2\u0396\u0398\5&\24\2\u0397"+
+ "\u0396\3\2\2\2\u0398\u039b\3\2\2\2\u0399\u0397\3\2\2\2\u0399\u039a\3\2"+
+ "\2\2\u039a\u039c\3\2\2\2\u039b\u0399\3\2\2\2\u039c\u039f\5\u0092J\2\u039d"+
+ "\u039f\7L\2\2\u039e\u0399\3\2\2\2\u039e\u039d\3\2\2\2\u039f\u0091\3\2"+
+ "\2\2\u03a0\u03a1\5\u00e0q\2\u03a1\u03a2\5\u0094K\2\u03a2\u03a3\7L\2\2"+
+ "\u03a3\u03b5\3\2\2\2\u03a4\u03a6\5,\27\2\u03a5\u03a7\7L\2\2\u03a6\u03a5"+
+ "\3\2\2\2\u03a6\u03a7\3\2\2\2\u03a7\u03b5\3\2\2\2\u03a8\u03aa\5<\37\2\u03a9"+
+ "\u03ab\7L\2\2\u03aa\u03a9\3\2\2\2\u03aa\u03ab\3\2\2\2\u03ab\u03b5\3\2"+
+ "\2\2\u03ac\u03ae\5\64\33\2\u03ad\u03af\7L\2\2\u03ae\u03ad\3\2\2\2\u03ae"+
+ "\u03af\3\2\2\2\u03af\u03b5\3\2\2\2\u03b0\u03b2\5\u008cG\2\u03b1\u03b3"+
+ "\7L\2\2\u03b2\u03b1\3\2\2\2\u03b2\u03b3\3\2\2\2\u03b3\u03b5\3\2\2\2\u03b4"+
+ "\u03a0\3\2\2\2\u03b4\u03a4\3\2\2\2\u03b4\u03a8\3\2\2\2\u03b4\u03ac\3\2"+
+ "\2\2\u03b4\u03b0\3\2\2\2\u03b5\u0093\3\2\2\2\u03b6\u03b9\5\u0096L\2\u03b7"+
+ "\u03b9\5\u0098M\2\u03b8\u03b6\3\2\2\2\u03b8\u03b7\3\2\2\2\u03b9\u0095"+
+ "\3\2\2\2\u03ba\u03bb\7u\2\2\u03bb\u03bc\7F\2\2\u03bc\u03be\7G\2\2\u03bd"+
+ "\u03bf\5\u009aN\2\u03be\u03bd\3\2\2\2\u03be\u03bf\3\2\2\2\u03bf\u0097"+
+ "\3\2\2\2\u03c0\u03c1\5b\62\2\u03c1\u0099\3\2\2\2\u03c2\u03c3\7\24\2\2"+
+ "\u03c3\u03c4\5\u0088E\2\u03c4\u009b\3\2\2\2\u03c5\u03c9\7H\2\2\u03c6\u03c8"+
+ "\5\u009eP\2\u03c7\u03c6\3\2\2\2\u03c8\u03cb\3\2\2\2\u03c9\u03c7\3\2\2"+
+ "\2\u03c9\u03ca\3\2\2\2\u03ca\u03cc\3\2\2\2\u03cb\u03c9\3\2\2\2\u03cc\u03cd"+
+ "\7I\2\2\u03cd\u009d\3\2\2\2\u03ce\u03cf\5\u00a0Q\2\u03cf\u03d0\7L\2\2"+
+ "\u03d0\u03d4\3\2\2\2\u03d1\u03d4\5\u00a4S\2\u03d2\u03d4\5\u00a2R\2\u03d3"+
+ "\u03ce\3\2\2\2\u03d3\u03d1\3\2\2\2\u03d3\u03d2\3\2\2\2\u03d4\u009f\3\2"+
+ "\2\2\u03d5\u03d7\5*\26\2\u03d6\u03d5\3\2\2\2\u03d7\u03da\3\2\2\2\u03d8"+
+ "\u03d6\3\2\2\2\u03d8\u03d9\3\2\2\2\u03d9\u03db\3\2\2\2\u03da\u03d8\3\2"+
+ "\2\2\u03db\u03dc\5\u00e0q\2\u03dc\u03dd\5b\62\2\u03dd\u00a1\3\2\2\2\u03de"+
+ "\u03e0\5(\25\2\u03df\u03de\3\2\2\2\u03e0\u03e3\3\2\2\2\u03e1\u03df\3\2"+
+ "\2\2\u03e1\u03e2\3\2\2\2\u03e2\u03e6\3\2\2\2\u03e3\u03e1\3\2\2\2\u03e4"+
+ "\u03e7\5,\27\2\u03e5\u03e7\5<\37\2\u03e6\u03e4\3\2\2\2\u03e6\u03e5\3\2"+
+ "\2\2\u03e7\u03ea\3\2\2\2\u03e8\u03ea\7L\2\2\u03e9\u03e1\3\2\2\2\u03e9"+
+ "\u03e8\3\2\2\2\u03ea\u00a3\3\2\2\2\u03eb\u0454\5\u009cO\2\u03ec\u03ed"+
+ "\7\n\2\2\u03ed\u03f0\5\u00c0a\2\u03ee\u03ef\7U\2\2\u03ef\u03f1\5\u00c0"+
+ "a\2\u03f0\u03ee\3\2\2\2\u03f0\u03f1\3\2\2\2\u03f1\u03f2\3\2\2\2\u03f2"+
+ "\u03f3\7L\2\2\u03f3\u0454\3\2\2\2\u03f4\u03f5\7\36\2\2\u03f5\u03f6\5\u00bc"+
+ "_\2\u03f6\u03f9\5\u00a4S\2\u03f7\u03f8\7\27\2\2\u03f8\u03fa\5\u00a4S\2"+
+ "\u03f9\u03f7\3\2\2\2\u03f9\u03fa\3\2\2\2\u03fa\u0454\3\2\2\2\u03fb\u03fc"+
+ "\7\35\2\2\u03fc\u03fd\7F\2\2\u03fd\u03fe\5\u00b6\\\2\u03fe\u03ff\7G\2"+
+ "\2\u03ff\u0400\5\u00a4S\2\u0400\u0454\3\2\2\2\u0401\u0402\7;\2\2\u0402"+
+ "\u0403\5\u00bc_\2\u0403\u0404\5\u00a4S\2\u0404\u0454\3\2\2\2\u0405\u0406"+
+ "\7\25\2\2\u0406\u0407\5\u00a4S\2\u0407\u0408\7;\2\2\u0408\u0409\5\u00bc"+
+ "_\2\u0409\u040a\7L\2\2\u040a\u0454\3\2\2\2\u040b\u040c\7\67\2\2\u040c"+
+ "\u0416\5\u009cO\2\u040d\u040f\5\u00a6T\2\u040e\u040d\3\2\2\2\u040f\u0410"+
+ "\3\2\2\2\u0410\u040e\3\2\2\2\u0410\u0411\3\2\2\2\u0411\u0413\3\2\2\2\u0412"+
+ "\u0414\5\u00aaV\2\u0413\u0412\3\2\2\2\u0413\u0414\3\2\2\2\u0414\u0417"+
+ "\3\2\2\2\u0415\u0417\5\u00aaV\2\u0416\u040e\3\2\2\2\u0416\u0415\3\2\2"+
+ "\2\u0417\u0454\3\2\2\2\u0418\u0419\7\67\2\2\u0419\u041a\5\u00acW\2\u041a"+
+ "\u041e\5\u009cO\2\u041b\u041d\5\u00a6T\2\u041c\u041b\3\2\2\2\u041d\u0420"+
+ "\3\2\2\2\u041e\u041c\3\2\2\2\u041e\u041f\3\2\2\2\u041f\u0422\3\2\2\2\u0420"+
+ "\u041e\3\2\2\2\u0421\u0423\5\u00aaV\2\u0422\u0421\3\2\2\2\u0422\u0423"+
+ "\3\2\2\2\u0423\u0454\3\2\2\2\u0424\u0425\7\61\2\2\u0425\u0426\5\u00bc"+
+ "_\2\u0426\u042a\7H\2\2\u0427\u0429\5\u00b2Z\2\u0428\u0427\3\2\2\2\u0429"+
+ "\u042c\3\2\2\2\u042a\u0428\3\2\2\2\u042a\u042b\3\2\2\2\u042b\u0430\3\2"+
+ "\2\2\u042c\u042a\3\2\2\2\u042d\u042f\5\u00b4[\2\u042e\u042d\3\2\2\2\u042f"+
+ "\u0432\3\2\2\2\u0430\u042e\3\2\2\2\u0430\u0431\3\2\2\2\u0431\u0433\3\2"+
+ "\2\2\u0432\u0430\3\2\2\2\u0433\u0434\7I\2\2\u0434\u0454\3\2\2\2\u0435"+
+ "\u0436\7\62\2\2\u0436\u0437\5\u00bc_\2\u0437\u0438\5\u009cO\2\u0438\u0454"+
+ "\3\2\2\2\u0439\u043b\7,\2\2\u043a\u043c\5\u00c0a\2\u043b\u043a\3\2\2\2"+
+ "\u043b\u043c\3\2\2\2\u043c\u043d\3\2\2\2\u043d\u0454\7L\2\2\u043e\u043f"+
+ "\7\64\2\2\u043f\u0440\5\u00c0a\2\u0440\u0441\7L\2\2\u0441\u0454\3\2\2"+
+ "\2\u0442\u0444\7\f\2\2\u0443\u0445\7u\2\2\u0444\u0443\3\2\2\2\u0444\u0445"+
+ "\3\2\2\2\u0445\u0446\3\2\2\2\u0446\u0454\7L\2\2\u0447\u0449\7\23\2\2\u0448"+
+ "\u044a\7u\2\2\u0449\u0448\3\2\2\2\u0449\u044a\3\2\2\2\u044a\u044b\3\2"+
+ "\2\2\u044b\u0454\7L\2\2\u044c\u0454\7L\2\2\u044d\u044e\5\u00c0a\2\u044e"+
+ "\u044f\7L\2\2\u044f\u0454\3\2\2\2\u0450\u0451\7u\2\2\u0451\u0452\7U\2"+
+ "\2\u0452\u0454\5\u00a4S\2\u0453\u03eb\3\2\2\2\u0453\u03ec\3\2\2\2\u0453"+
+ "\u03f4\3\2\2\2\u0453\u03fb\3\2\2\2\u0453\u0401\3\2\2\2\u0453\u0405\3\2"+
+ "\2\2\u0453\u040b\3\2\2\2\u0453\u0418\3\2\2\2\u0453\u0424\3\2\2\2\u0453"+
+ "\u0435\3\2\2\2\u0453\u0439\3\2\2\2\u0453\u043e\3\2\2\2\u0453\u0442\3\2"+
+ "\2\2\u0453\u0447\3\2\2\2\u0453\u044c\3\2\2\2\u0453\u044d\3\2\2\2\u0453"+
+ "\u0450\3\2\2\2\u0454\u00a5\3\2\2\2\u0455\u0456\7\17\2\2\u0456\u045a\7"+
+ "F\2\2\u0457\u0459\5*\26\2\u0458\u0457\3\2\2\2\u0459\u045c\3\2\2\2\u045a"+
+ "\u0458\3\2\2\2\u045a\u045b\3\2\2\2\u045b\u045d\3\2\2\2\u045c\u045a\3\2"+
+ "\2\2\u045d\u045e\5\u00a8U\2\u045e\u045f\7u\2\2\u045f\u0460\7G\2\2\u0460"+
+ "\u0461\5\u009cO\2\u0461\u00a7\3\2\2\2\u0462\u0467\5\30\r\2\u0463\u0464"+
+ "\7c\2\2\u0464\u0466\5\30\r\2\u0465\u0463\3\2\2\2\u0466\u0469\3\2\2\2\u0467"+
+ "\u0465\3\2\2\2\u0467\u0468\3\2\2\2\u0468\u00a9\3\2\2\2\u0469\u0467\3\2"+
+ "\2\2\u046a\u046b\7\33\2\2\u046b\u046c\5\u009cO\2\u046c\u00ab\3\2\2\2\u046d"+
+ "\u046e\7F\2\2\u046e\u0470\5\u00aeX\2\u046f\u0471\7L\2\2\u0470\u046f\3"+
+ "\2\2\2\u0470\u0471\3\2\2\2\u0471\u0472\3\2\2\2\u0472\u0473\7G\2\2\u0473"+
+ "\u00ad\3\2\2\2\u0474\u0479\5\u00b0Y\2\u0475\u0476\7L\2\2\u0476\u0478\5"+
+ "\u00b0Y\2\u0477\u0475\3\2\2\2\u0478\u047b\3\2\2\2\u0479\u0477\3\2\2\2"+
+ "\u0479\u047a\3\2\2\2\u047a\u00af\3\2\2\2\u047b\u0479\3\2\2\2\u047c\u047e"+
+ "\5*\26\2\u047d\u047c\3\2\2\2\u047e\u0481\3\2\2\2\u047f\u047d\3\2\2\2\u047f"+
+ "\u0480\3\2\2\2\u0480\u0482\3\2\2\2\u0481\u047f\3\2\2\2\u0482\u0483\5j"+
+ "\66\2\u0483\u0484\5\f\7\2\u0484\u0485\7O\2\2\u0485\u0486\5\u00c0a\2\u0486"+
+ "\u00b1\3\2\2\2\u0487\u0489\5\u00b4[\2\u0488\u0487\3\2\2\2\u0489\u048a"+
+ "\3\2\2\2\u048a\u0488\3\2\2\2\u048a\u048b\3\2\2\2\u048b\u048d\3\2\2\2\u048c"+
+ "\u048e\5\u009eP\2\u048d\u048c\3\2\2\2\u048e\u048f\3\2\2\2\u048f\u048d"+
+ "\3\2\2\2\u048f\u0490\3\2\2\2\u0490\u00b3\3\2\2\2\u0491\u0494\7\16\2\2"+
+ "\u0492\u0495\5\u00c0a\2\u0493\u0495\7u\2\2\u0494\u0492\3\2\2\2\u0494\u0493"+
+ "\3\2\2\2\u0495\u0496\3\2\2\2\u0496\u049a\7U\2\2\u0497\u0498\7\24\2\2\u0498"+
+ "\u049a\7U\2\2\u0499\u0491\3\2\2\2\u0499\u0497\3\2\2\2\u049a\u00b5\3\2"+
+ "\2\2\u049b\u04a8\5\u00ba^\2\u049c\u049e\5\u00b8]\2\u049d\u049c\3\2\2\2"+
+ "\u049d\u049e\3\2\2\2\u049e\u049f\3\2\2\2\u049f\u04a1\7L\2\2\u04a0\u04a2"+
+ "\5\u00c0a\2\u04a1\u04a0\3\2\2\2\u04a1\u04a2\3\2\2\2\u04a2\u04a3\3\2\2"+
+ "\2\u04a3\u04a5\7L\2\2\u04a4\u04a6\5\u00be`\2\u04a5\u04a4\3\2\2\2\u04a5"+
+ "\u04a6\3\2\2\2\u04a6\u04a8\3\2\2\2\u04a7\u049b\3\2\2\2\u04a7\u049d\3\2"+
+ "\2\2\u04a8\u00b7\3\2\2\2\u04a9\u04ac\5\u00a0Q\2\u04aa\u04ac\5\u00be`\2"+
+ "\u04ab\u04a9\3\2\2\2\u04ab\u04aa\3\2\2\2\u04ac\u00b9\3\2\2\2\u04ad\u04af"+
+ "\5*\26\2\u04ae\u04ad\3\2\2\2\u04af\u04b2\3\2\2\2\u04b0\u04ae\3\2\2\2\u04b0"+
+ "\u04b1\3\2\2\2\u04b1\u04b3\3\2\2\2\u04b2\u04b0\3\2\2\2\u04b3\u04b4\5\u00e0"+
+ "q\2\u04b4\u04b5\5\f\7\2\u04b5\u04b6\7U\2\2\u04b6\u04b7\5\u00c0a\2\u04b7"+
+ "\u00bb\3\2\2\2\u04b8\u04b9\7F\2\2\u04b9\u04ba\5\u00c0a\2\u04ba\u04bb\7"+
+ "G\2\2\u04bb\u00bd\3\2\2\2\u04bc\u04c1\5\u00c0a\2\u04bd\u04be\7M\2\2\u04be"+
+ "\u04c0\5\u00c0a\2\u04bf\u04bd\3\2\2\2\u04c0\u04c3\3\2\2\2\u04c1\u04bf"+
+ "\3\2\2\2\u04c1\u04c2\3\2\2\2\u04c2\u00bf\3\2\2\2\u04c3\u04c1\3\2\2\2\u04c4"+
+ "\u04c5\ba\1\2\u04c5\u04e4\5\u00c8e\2\u04c6\u04e4\5\20\t\2\u04c7\u04c8"+
+ "\7\'\2\2\u04c8\u04e4\5\u00ccg\2\u04c9\u04ca\7F\2\2\u04ca\u04cb\5\u00e0"+
+ "q\2\u04cb\u04cc\7G\2\2\u04cc\u04cd\5\u00c0a\27\u04cd\u04e4\3\2\2\2\u04ce"+
+ "\u04cf\t\6\2\2\u04cf\u04e4\5\u00c0a\25\u04d0\u04d1\t\7\2\2\u04d1\u04e4"+
+ "\5\u00c0a\24\u04d2\u04e4\5\u00c2b\2\u04d3\u04d4\5\u00e0q\2\u04d4\u04da"+
+ "\7r\2\2\u04d5\u04d7\5\u00e2r\2\u04d6\u04d5\3\2\2\2\u04d6\u04d7\3\2\2\2"+
+ "\u04d7\u04d8\3\2\2\2\u04d8\u04db\7u\2\2\u04d9\u04db\7\'\2\2\u04da\u04d6"+
+ "\3\2\2\2\u04da\u04d9\3\2\2\2\u04db\u04e4\3\2\2\2\u04dc\u04dd\5\u00caf"+
+ "\2\u04dd\u04df\7r\2\2\u04de\u04e0\5\u00e2r\2\u04df\u04de\3\2\2\2\u04df"+
+ "\u04e0\3\2\2\2\u04e0\u04e1\3\2\2\2\u04e1\u04e2\7\'\2\2\u04e2\u04e4\3\2"+
+ "\2\2\u04e3\u04c4\3\2\2\2\u04e3\u04c6\3\2\2\2\u04e3\u04c7\3\2\2\2\u04e3"+
+ "\u04c9\3\2\2\2\u04e3\u04ce\3\2\2\2\u04e3\u04d0\3\2\2\2\u04e3\u04d2\3\2"+
+ "\2\2\u04e3\u04d3\3\2\2\2\u04e3\u04dc\3\2\2\2\u04e4\u0535\3\2\2\2\u04e5"+
+ "\u04e6\f\23\2\2\u04e6\u04e7\t\b\2\2\u04e7\u0534\5\u00c0a\24\u04e8\u04e9"+
+ "\f\22\2\2\u04e9\u04ea\t\t\2\2\u04ea\u0534\5\u00c0a\23\u04eb\u04f3\f\21"+
+ "\2\2\u04ec\u04ed\7Q\2\2\u04ed\u04f4\7Q\2\2\u04ee\u04ef\7P\2\2\u04ef\u04f0"+
+ "\7P\2\2\u04f0\u04f4\7P\2\2\u04f1\u04f2\7P\2\2\u04f2\u04f4\7P\2\2\u04f3"+
+ "\u04ec\3\2\2\2\u04f3\u04ee\3\2\2\2\u04f3\u04f1\3\2\2\2\u04f4\u04f5\3\2"+
+ "\2\2\u04f5\u0534\5\u00c0a\22\u04f6\u04f7\f\20\2\2\u04f7\u04f8\t\n\2\2"+
+ "\u04f8\u0534\5\u00c0a\21\u04f9\u04fa\f\16\2\2\u04fa\u04fb\t\13\2\2\u04fb"+
+ "\u0534\5\u00c0a\17\u04fc\u04fd\f\r\2\2\u04fd\u04fe\7b\2\2\u04fe\u0534"+
+ "\5\u00c0a\16\u04ff\u0500\f\f\2\2\u0500\u0501\7d\2\2\u0501\u0534\5\u00c0"+
+ "a\r\u0502\u0503\f\13\2\2\u0503\u0504\7c\2\2\u0504\u0534\5\u00c0a\f\u0505"+
+ "\u0506\f\n\2\2\u0506\u0507\7Z\2\2\u0507\u0534\5\u00c0a\13\u0508\u0509"+
+ "\f\t\2\2\u0509\u050a\7[\2\2\u050a\u0534\5\u00c0a\n\u050b\u050c\f\b\2\2"+
+ "\u050c\u050d\7T\2\2\u050d\u050e\5\u00c0a\2\u050e\u050f\7U\2\2\u050f\u0510"+
+ "\5\u00c0a\t\u0510\u0534\3\2\2\2\u0511\u0512\f\7\2\2\u0512\u0513\t\f\2"+
+ "\2\u0513\u0534\5\u00c0a\7\u0514\u0515\f\33\2\2\u0515\u0521\7N\2\2\u0516"+
+ "\u0522\7u\2\2\u0517\u0522\5\20\t\2\u0518\u0522\7\63\2\2\u0519\u051b\7"+
+ "\'\2\2\u051a\u051c\5\u00dco\2\u051b\u051a\3\2\2\2\u051b\u051c\3\2\2\2"+
+ "\u051c\u051d\3\2\2\2\u051d\u0522\5\u00d0i\2\u051e\u051f\7\60\2\2\u051f"+
+ "\u0522\5\u00e4s\2\u0520\u0522\5\u00d6l\2\u0521\u0516\3\2\2\2\u0521\u0517"+
+ "\3\2\2\2\u0521\u0518\3\2\2\2\u0521\u0519\3\2\2\2\u0521\u051e\3\2\2\2\u0521"+
+ "\u0520\3\2\2\2\u0522\u0534\3\2\2\2\u0523\u0524\f\32\2\2\u0524\u0525\7"+
+ "J\2\2\u0525\u0526\5\u00c0a\2\u0526\u0527\7K\2\2\u0527\u0534\3\2\2\2\u0528"+
+ "\u0529\f\26\2\2\u0529\u0534\t\r\2\2\u052a\u052b\f\17\2\2\u052b\u052c\7"+
+ "\"\2\2\u052c\u0534\5\u00e0q\2\u052d\u052e\f\5\2\2\u052e\u0530\7r\2\2\u052f"+
+ "\u0531\5\u00e2r\2\u0530\u052f\3\2\2\2\u0530\u0531\3\2\2\2\u0531\u0532"+
+ "\3\2\2\2\u0532\u0534\7u\2\2\u0533\u04e5\3\2\2\2\u0533\u04e8\3\2\2\2\u0533"+
+ "\u04eb\3\2\2\2\u0533\u04f6\3\2\2\2\u0533\u04f9\3\2\2\2\u0533\u04fc\3\2"+
+ "\2\2\u0533\u04ff\3\2\2\2\u0533\u0502\3\2\2\2\u0533\u0505\3\2\2\2\u0533"+
+ "\u0508\3\2\2\2\u0533\u050b\3\2\2\2\u0533\u0511\3\2\2\2\u0533\u0514\3\2"+
+ "\2\2\u0533\u0523\3\2\2\2\u0533\u0528\3\2\2\2\u0533\u052a\3\2\2\2\u0533"+
+ "\u052d\3\2\2\2\u0534\u0537\3\2\2\2\u0535\u0533\3\2\2\2\u0535\u0536\3\2"+
+ "\2\2\u0536\u00c1\3\2\2\2\u0537\u0535\3\2\2\2\u0538\u0539\5\u00c4c\2\u0539"+
+ "\u053a\7q\2\2\u053a\u053b\5\u00c6d\2\u053b\u00c3\3\2\2\2\u053c\u054d\7"+
+ "u\2\2\u053d\u053f\7F\2\2\u053e\u0540\5r:\2\u053f\u053e\3\2\2\2\u053f\u0540"+
+ "\3\2\2\2\u0540\u0541\3\2\2\2\u0541\u054d\7G\2\2\u0542\u0543\7F\2\2\u0543"+
+ "\u0548\7u\2\2\u0544\u0545\7M\2\2\u0545\u0547\7u\2\2\u0546\u0544\3\2\2"+
+ "\2\u0547\u054a\3\2\2\2\u0548\u0546\3\2\2\2\u0548\u0549\3\2\2\2\u0549\u054b"+
+ "\3\2\2\2\u054a\u0548\3\2\2\2\u054b\u054d\7G\2\2\u054c\u053c\3\2\2\2\u054c"+
+ "\u053d\3\2\2\2\u054c\u0542\3\2\2\2\u054d\u00c5\3\2\2\2\u054e\u0551\5\u00c0"+
+ "a\2\u054f\u0551\5\u009cO\2\u0550\u054e\3\2\2\2\u0550\u054f\3\2\2\2\u0551"+
+ "\u00c7\3\2\2\2\u0552\u0553\7F\2\2\u0553\u0554\5\u00c0a\2\u0554\u0555\7"+
+ "G\2\2\u0555\u0565\3\2\2\2\u0556\u0565\7\63\2\2\u0557\u0565\7\60\2\2\u0558"+
+ "\u0565\5\32\16\2\u0559\u0565\7u\2\2\u055a\u055b\5J&\2\u055b\u055c\7N\2"+
+ "\2\u055c\u055d\7\21\2\2\u055d\u0565\3\2\2\2\u055e\u0562\5\u00dco\2\u055f"+
+ "\u0563\5\u00e6t\2\u0560\u0561\7\63\2\2\u0561\u0563\5\u00e8u\2\u0562\u055f"+
+ "\3\2\2\2\u0562\u0560\3\2\2\2\u0563\u0565\3\2\2\2\u0564\u0552\3\2\2\2\u0564"+
+ "\u0556\3\2\2\2\u0564\u0557\3\2\2\2\u0564\u0558\3\2\2\2\u0564\u0559\3\2"+
+ "\2\2\u0564\u055a\3\2\2\2\u0564\u055e\3\2\2\2\u0565\u00c9\3\2\2\2\u0566"+
+ "\u0567\5j\66\2\u0567\u0568\7N\2\2\u0568\u056a\3\2\2\2\u0569\u0566\3\2"+
+ "\2\2\u0569\u056a\3\2\2\2\u056a\u056e\3\2\2\2\u056b\u056d\5\u0082B\2\u056c"+
+ "\u056b\3\2\2\2\u056d\u0570\3\2\2\2\u056e\u056c\3\2\2\2\u056e\u056f\3\2"+
+ "\2\2\u056f\u0571\3\2\2\2\u0570\u056e\3\2\2\2\u0571\u0573\7u\2\2\u0572"+
+ "\u0574\5\u00e2r\2\u0573\u0572\3\2\2\2\u0573\u0574\3\2\2\2\u0574\u00cb"+
+ "\3\2\2\2\u0575\u0576\5\u00dco\2\u0576\u0577\5\u00ceh\2\u0577\u0578\5\u00d4"+
+ "k\2\u0578\u057f\3\2\2\2\u0579\u057c\5\u00ceh\2\u057a\u057d\5\u00d2j\2"+
+ "\u057b\u057d\5\u00d4k\2\u057c\u057a\3\2\2\2\u057c\u057b\3\2\2\2\u057d"+
+ "\u057f\3\2\2\2\u057e\u0575\3\2\2\2\u057e\u0579\3\2\2\2\u057f\u00cd\3\2"+
+ "\2\2\u0580\u0582\7u\2\2\u0581\u0583\5\u00d8m\2\u0582\u0581\3\2\2\2\u0582"+
+ "\u0583\3\2\2\2\u0583\u058b\3\2\2\2\u0584\u0585\7N\2\2\u0585\u0587\7u\2"+
+ "\2\u0586\u0588\5\u00d8m\2\u0587\u0586\3\2\2\2\u0587\u0588\3\2\2\2\u0588"+
+ "\u058a\3\2\2\2\u0589\u0584\3\2\2\2\u058a\u058d\3\2\2\2\u058b\u0589\3\2"+
+ "\2\2\u058b\u058c\3\2\2\2\u058c\u0590\3\2\2\2\u058d\u058b\3\2\2\2\u058e"+
+ "\u0590\5\24\13\2\u058f\u0580\3\2\2\2\u058f\u058e\3\2\2\2\u0590\u00cf\3"+
+ "\2\2\2\u0591\u0593\7u\2\2\u0592\u0594\5\u00dan\2\u0593\u0592\3\2\2\2\u0593"+
+ "\u0594\3\2\2\2\u0594\u0595\3\2\2\2\u0595\u0596\5\u00d4k\2\u0596\u00d1"+
+ "\3\2\2\2\u0597\u05b3\7J\2\2\u0598\u059d\7K\2\2\u0599\u059a\7J\2\2\u059a"+
+ "\u059c\7K\2\2\u059b\u0599\3\2\2\2\u059c\u059f\3\2\2\2\u059d\u059b\3\2"+
+ "\2\2\u059d\u059e\3\2\2\2\u059e\u05a0\3\2\2\2\u059f\u059d\3\2\2\2\u05a0"+
+ "\u05b4\5h\65\2\u05a1\u05a2\5\u00c0a\2\u05a2\u05a9\7K\2\2\u05a3\u05a4\7"+
+ "J\2\2\u05a4\u05a5\5\u00c0a\2\u05a5\u05a6\7K\2\2\u05a6\u05a8\3\2\2\2\u05a7"+
+ "\u05a3\3\2\2\2\u05a8\u05ab\3\2\2\2\u05a9\u05a7\3\2\2\2\u05a9\u05aa\3\2"+
+ "\2\2\u05aa\u05b0\3\2\2\2\u05ab\u05a9\3\2\2\2\u05ac\u05ad\7J\2\2\u05ad"+
+ "\u05af\7K\2\2\u05ae\u05ac\3\2\2\2\u05af\u05b2\3\2\2\2\u05b0\u05ae\3\2"+
+ "\2\2\u05b0\u05b1\3\2\2\2\u05b1\u05b4\3\2\2\2\u05b2\u05b0\3\2\2\2\u05b3"+
+ "\u0598\3\2\2\2\u05b3\u05a1\3\2\2\2\u05b4\u00d3\3\2\2\2\u05b5\u05b7\5\u00e8"+
+ "u\2\u05b6\u05b8\5> \2\u05b7\u05b6\3\2\2\2\u05b7\u05b8\3\2\2\2\u05b8\u00d5"+
+ "\3\2\2\2\u05b9\u05ba\5\u00dco\2\u05ba\u05bb\5\u00e6t\2\u05bb\u00d7\3\2"+
+ "\2\2\u05bc\u05bd\7Q\2\2\u05bd\u05c0\7P\2\2\u05be\u05c0\5\u00e2r\2\u05bf"+
+ "\u05bc\3\2\2\2\u05bf\u05be\3\2\2\2\u05c0\u00d9\3\2\2\2\u05c1\u05c2\7Q"+
+ "\2\2\u05c2\u05c5\7P\2\2\u05c3\u05c5\5\u00dco\2\u05c4\u05c1\3\2\2\2\u05c4"+
+ "\u05c3\3\2\2\2\u05c5\u00db\3\2\2\2\u05c6\u05c7\7Q\2\2\u05c7\u05c8\5\u00de"+
+ "p\2\u05c8\u05c9\7P\2\2\u05c9\u00dd\3\2\2\2\u05ca\u05cf\5\u00e0q\2\u05cb"+
+ "\u05cc\7M\2\2\u05cc\u05ce\5\u00e0q\2\u05cd\u05cb\3\2\2\2\u05ce\u05d1\3"+
+ "\2\2\2\u05cf\u05cd\3\2\2\2\u05cf\u05d0\3\2\2\2\u05d0\u00df\3\2\2\2\u05d1"+
+ "\u05cf\3\2\2\2\u05d2\u05d4\5\u0082B\2\u05d3\u05d2\3\2\2\2\u05d3\u05d4"+
+ "\3\2\2\2\u05d4\u05d8\3\2\2\2\u05d5\u05d9\5j\66\2\u05d6\u05d9\5\24\13\2"+
+ "\u05d7\u05d9\78\2\2\u05d8\u05d5\3\2\2\2\u05d8\u05d6\3\2\2\2\u05d8\u05d7"+
+ "\3\2\2\2\u05d9\u05de\3\2\2\2\u05da\u05db\7J\2\2\u05db\u05dd\7K\2\2\u05dc"+
+ "\u05da\3\2\2\2\u05dd\u05e0\3\2\2\2\u05de\u05dc\3\2\2\2\u05de\u05df\3\2"+
+ "\2\2\u05df\u00e1\3\2\2\2\u05e0\u05de\3\2\2\2\u05e1\u05e2\7Q\2\2\u05e2"+
+ "\u05e7\5l\67\2\u05e3\u05e4\7M\2\2\u05e4\u05e6\5l\67\2\u05e5\u05e3\3\2"+
+ "\2\2\u05e6\u05e9\3\2\2\2\u05e7\u05e5\3\2\2\2\u05e7\u05e8\3\2\2\2\u05e8"+
+ "\u05ea\3\2\2\2\u05e9\u05e7\3\2\2\2\u05ea\u05eb\7P\2\2\u05eb\u00e3\3\2"+
+ "\2\2\u05ec\u05f3\5\u00e8u\2\u05ed\u05ee\7N\2\2\u05ee\u05f0\7u\2\2\u05ef"+
+ "\u05f1\5\u00e8u\2\u05f0\u05ef\3\2\2\2\u05f0\u05f1\3\2\2\2\u05f1\u05f3"+
+ "\3\2\2\2\u05f2\u05ec\3\2\2\2\u05f2\u05ed\3\2\2\2\u05f3\u00e5\3\2\2\2\u05f4"+
+ "\u05f5\7\60\2\2\u05f5\u05f9\5\u00e4s\2\u05f6\u05f7\7u\2\2\u05f7\u05f9"+
+ "\5\u00e8u\2\u05f8\u05f4\3\2\2\2\u05f8\u05f6\3\2\2\2\u05f9\u00e7\3\2\2"+
+ "\2\u05fa\u05fc\7F\2\2\u05fb\u05fd\5\u00be`\2\u05fc\u05fb\3\2\2\2\u05fc"+
+ "\u05fd\3\2\2\2\u05fd\u05fe\3\2\2\2\u05fe\u05ff\7G\2\2\u05ff\u00e9\3\2"+
+ "\2\2\u00c5\u00ed\u00f0\u00f5\u00fb\u0102\u0104\u010b\u010d\u0115\u0117"+
+ "\u011f\u0121\u0127\u0129\u0131\u0133\u0136\u013e\u0141\u0148\u0151\u0157"+
+ "\u015d\u0160\u0165\u0172\u0178\u017d\u0181\u018b\u0190\u0195\u019b\u01a3"+
+ "\u01ac\u01b1\u01b8\u01bf\u01c2\u01c9\u01d3\u01d7\u01dc\u01e0\u01e4\u01ee"+
+ "\u01f6\u01fc\u0203\u020a\u020e\u0211\u0214\u021d\u0223\u0228\u022b\u0231"+
+ "\u0237\u023b\u0243\u024c\u0254\u025a\u025e\u0269\u0272\u0277\u027d\u0281"+
+ "\u028d\u0298\u029d\u02a6\u02ae\u02b8\u02c1\u02c9\u02ce\u02d6\u02db\u02e5"+
+ "\u02ef\u02f5\u02f9\u0301\u0305\u0307\u030d\u0312\u0316\u031d\u031f\u0326"+
+ "\u032b\u0334\u0339\u033c\u0341\u034a\u0357\u0362\u0365\u036c\u0376\u037e"+
+ "\u0381\u0384\u0391\u0399\u039e\u03a6\u03aa\u03ae\u03b2\u03b4\u03b8\u03be"+
+ "\u03c9\u03d3\u03d8\u03e1\u03e6\u03e9\u03f0\u03f9\u0410\u0413\u0416\u041e"+
+ "\u0422\u042a\u0430\u043b\u0444\u0449\u0453\u045a\u0467\u0470\u0479\u047f"+
+ "\u048a\u048f\u0494\u0499\u049d\u04a1\u04a5\u04a7\u04ab\u04b0\u04c1\u04d6"+
+ "\u04da\u04df\u04e3\u04f3\u051b\u0521\u0530\u0533\u0535\u053f\u0548\u054c"+
+ "\u0550\u0562\u0564\u0569\u056e\u0573\u057c\u057e\u0582\u0587\u058b\u058f"+
+ "\u0593\u059d\u05a9\u05b0\u05b3\u05b7\u05bf\u05c4\u05cf\u05d3\u05d8\u05de"+
+ "\u05e7\u05f0\u05f2\u05f8\u05fc";
+ public static final ATN _ATN =
+ new ATNDeserializer().deserialize(_serializedATN.toCharArray());
+ static {
+ _decisionToDFA = new DFA[_ATN.getNumberOfDecisions()];
+ for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) {
+ _decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i);
+ }
+ }
+}
\ No newline at end of file