diff --git a/benchmarks/src/main/java/org/antlr/Java8.interp b/benchmarks/src/main/java/org/antlr/Java8.interp new file mode 100644 index 000000000..66cb8d7f9 --- /dev/null +++ b/benchmarks/src/main/java/org/antlr/Java8.interp @@ -0,0 +1,462 @@ +token literal names: +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' +'void' +'volatile' +'while' +null +null +null +null +null +'null' +'(' +')' +'{' +'}' +'[' +']' +';' +',' +'.' +'=' +'>' +'<' +'!' +'~' +'?' +':' +'==' +'<=' +'>=' +'!=' +'&&' +'||' +'++' +'--' +'+' +'-' +'*' +'/' +'&' +'|' +'^' +'%' +'->' +'::' +'+=' +'-=' +'*=' +'/=' +'&=' +'|=' +'^=' +'%=' +'<<=' +'>>=' +'>>>=' +null +'@' +'...' +null +null +null + +token symbolic names: +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 +VOID +VOLATILE +WHILE +IntegerLiteral +FloatingPointLiteral +BooleanLiteral +CharacterLiteral +StringLiteral +NullLiteral +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 +ARROW +COLONCOLON +ADD_ASSIGN +SUB_ASSIGN +MUL_ASSIGN +DIV_ASSIGN +AND_ASSIGN +OR_ASSIGN +XOR_ASSIGN +MOD_ASSIGN +LSHIFT_ASSIGN +RSHIFT_ASSIGN +URSHIFT_ASSIGN +Identifier +AT +ELLIPSIS +WS +COMMENT +LINE_COMMENT + +rule names: +literal +type +primitiveType +numericType +integralType +floatingPointType +referenceType +classOrInterfaceType +classType +classType_lf_classOrInterfaceType +classType_lfno_classOrInterfaceType +interfaceType +interfaceType_lf_classOrInterfaceType +interfaceType_lfno_classOrInterfaceType +typeVariable +arrayType +dims +typeParameter +typeParameterModifier +typeBound +additionalBound +typeArguments +typeArgumentList +typeArgument +wildcard +wildcardBounds +packageName +typeName +packageOrTypeName +expressionName +methodName +ambiguousName +compilationUnit +packageDeclaration +packageModifier +importDeclaration +singleTypeImportDeclaration +typeImportOnDemandDeclaration +singleStaticImportDeclaration +staticImportOnDemandDeclaration +typeDeclaration +classDeclaration +normalClassDeclaration +classModifier +typeParameters +typeParameterList +superclass +superinterfaces +interfaceTypeList +classBody +classBodyDeclaration +classMemberDeclaration +fieldDeclaration +fieldModifier +variableDeclaratorList +variableDeclarator +variableDeclaratorId +variableInitializer +unannType +unannPrimitiveType +unannReferenceType +unannClassOrInterfaceType +unannClassType +unannClassType_lf_unannClassOrInterfaceType +unannClassType_lfno_unannClassOrInterfaceType +unannInterfaceType +unannInterfaceType_lf_unannClassOrInterfaceType +unannInterfaceType_lfno_unannClassOrInterfaceType +unannTypeVariable +unannArrayType +methodDeclaration +methodModifier +methodHeader +result +methodDeclarator +formalParameterList +formalParameters +formalParameter +variableModifier +lastFormalParameter +receiverParameter +throws_ +exceptionTypeList +exceptionType +methodBody +instanceInitializer +staticInitializer +constructorDeclaration +constructorModifier +constructorDeclarator +simpleTypeName +constructorBody +explicitConstructorInvocation +enumDeclaration +enumBody +enumConstantList +enumConstant +enumConstantModifier +enumBodyDeclarations +interfaceDeclaration +normalInterfaceDeclaration +interfaceModifier +extendsInterfaces +interfaceBody +interfaceMemberDeclaration +constantDeclaration +constantModifier +interfaceMethodDeclaration +interfaceMethodModifier +annotationTypeDeclaration +annotationTypeBody +annotationTypeMemberDeclaration +annotationTypeElementDeclaration +annotationTypeElementModifier +defaultValue +annotation +normalAnnotation +elementValuePairList +elementValuePair +elementValue +elementValueArrayInitializer +elementValueList +markerAnnotation +singleElementAnnotation +arrayInitializer +variableInitializerList +block +blockStatements +blockStatement +localVariableDeclarationStatement +localVariableDeclaration +statement +statementNoShortIf +statementWithoutTrailingSubstatement +emptyStatement +labeledStatement +labeledStatementNoShortIf +expressionStatement +statementExpression +ifThenStatement +ifThenElseStatement +ifThenElseStatementNoShortIf +assertStatement +switchStatement +switchBlock +switchBlockStatementGroup +switchLabels +switchLabel +enumConstantName +whileStatement +whileStatementNoShortIf +doStatement +forStatement +forStatementNoShortIf +basicForStatement +basicForStatementNoShortIf +forInit +forUpdate +statementExpressionList +enhancedForStatement +enhancedForStatementNoShortIf +breakStatement +continueStatement +returnStatement +throwStatement +synchronizedStatement +tryStatement +catches +catchClause +catchFormalParameter +catchType +finally_ +tryWithResourcesStatement +resourceSpecification +resourceList +resource +primary +primaryNoNewArray +primaryNoNewArray_lf_arrayAccess +primaryNoNewArray_lfno_arrayAccess +primaryNoNewArray_lf_primary +primaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary +primaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary +primaryNoNewArray_lfno_primary +primaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary +primaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary +classInstanceCreationExpression +classInstanceCreationExpression_lf_primary +classInstanceCreationExpression_lfno_primary +typeArgumentsOrDiamond +fieldAccess +fieldAccess_lf_primary +fieldAccess_lfno_primary +arrayAccess +arrayAccess_lf_primary +arrayAccess_lfno_primary +methodInvocation +methodInvocation_lf_primary +methodInvocation_lfno_primary +argumentList +methodReference +methodReference_lf_primary +methodReference_lfno_primary +arrayCreationExpression +dimExprs +dimExpr +constantExpression +expression +lambdaExpression +lambdaParameters +inferredFormalParameterList +lambdaBody +assignmentExpression +assignment +leftHandSide +assignmentOperator +conditionalExpression +conditionalOrExpression +conditionalAndExpression +inclusiveOrExpression +exclusiveOrExpression +andExpression +equalityExpression +relationalExpression +shiftExpression +additiveExpression +multiplicativeExpression +unaryExpression +preIncrementExpression +preDecrementExpression +unaryExpressionNotPlusMinus +postfixExpression +postIncrementExpression +postIncrementExpression_lf_postfixExpression +postDecrementExpression +postDecrementExpression_lf_postfixExpression +castExpression + + +atn: +[4, 1, 107, 2858, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 2, 179, 7, 179, 2, 180, 7, 180, 2, 181, 7, 181, 2, 182, 7, 182, 2, 183, 7, 183, 2, 184, 7, 184, 2, 185, 7, 185, 2, 186, 7, 186, 2, 187, 7, 187, 2, 188, 7, 188, 2, 189, 7, 189, 2, 190, 7, 190, 2, 191, 7, 191, 2, 192, 7, 192, 2, 193, 7, 193, 2, 194, 7, 194, 2, 195, 7, 195, 2, 196, 7, 196, 2, 197, 7, 197, 2, 198, 7, 198, 2, 199, 7, 199, 2, 200, 7, 200, 2, 201, 7, 201, 2, 202, 7, 202, 2, 203, 7, 203, 2, 204, 7, 204, 2, 205, 7, 205, 2, 206, 7, 206, 2, 207, 7, 207, 2, 208, 7, 208, 2, 209, 7, 209, 2, 210, 7, 210, 2, 211, 7, 211, 2, 212, 7, 212, 2, 213, 7, 213, 2, 214, 7, 214, 2, 215, 7, 215, 2, 216, 7, 216, 2, 217, 7, 217, 2, 218, 7, 218, 2, 219, 7, 219, 2, 220, 7, 220, 2, 221, 7, 221, 2, 222, 7, 222, 2, 223, 7, 223, 2, 224, 7, 224, 2, 225, 7, 225, 2, 226, 7, 226, 2, 227, 7, 227, 2, 228, 7, 228, 2, 229, 7, 229, 2, 230, 7, 230, 2, 231, 7, 231, 2, 232, 7, 232, 2, 233, 7, 233, 2, 234, 7, 234, 2, 235, 7, 235, 2, 236, 7, 236, 1, 0, 1, 0, 1, 1, 1, 1, 3, 1, 479, 8, 1, 1, 2, 5, 2, 482, 8, 2, 10, 2, 12, 2, 485, 9, 2, 1, 2, 1, 2, 5, 2, 489, 8, 2, 10, 2, 12, 2, 492, 9, 2, 1, 2, 3, 2, 495, 8, 2, 1, 3, 1, 3, 3, 3, 499, 8, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 3, 6, 508, 8, 6, 1, 7, 1, 7, 3, 7, 512, 8, 7, 1, 7, 1, 7, 5, 7, 516, 8, 7, 10, 7, 12, 7, 519, 9, 7, 1, 8, 5, 8, 522, 8, 8, 10, 8, 12, 8, 525, 9, 8, 1, 8, 1, 8, 3, 8, 529, 8, 8, 1, 8, 1, 8, 1, 8, 5, 8, 534, 8, 8, 10, 8, 12, 8, 537, 9, 8, 1, 8, 1, 8, 3, 8, 541, 8, 8, 3, 8, 543, 8, 8, 1, 9, 1, 9, 5, 9, 547, 8, 9, 10, 9, 12, 9, 550, 9, 9, 1, 9, 1, 9, 3, 9, 554, 8, 9, 1, 10, 5, 10, 557, 8, 10, 10, 10, 12, 10, 560, 9, 10, 1, 10, 1, 10, 3, 10, 564, 8, 10, 1, 11, 1, 11, 1, 12, 1, 12, 1, 13, 1, 13, 1, 14, 5, 14, 573, 8, 14, 10, 14, 12, 14, 576, 9, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 3, 15, 589, 8, 15, 1, 16, 5, 16, 592, 8, 16, 10, 16, 12, 16, 595, 9, 16, 1, 16, 1, 16, 1, 16, 5, 16, 600, 8, 16, 10, 16, 12, 16, 603, 9, 16, 1, 16, 1, 16, 5, 16, 607, 8, 16, 10, 16, 12, 16, 610, 9, 16, 1, 17, 5, 17, 613, 8, 17, 10, 17, 12, 17, 616, 9, 17, 1, 17, 1, 17, 3, 17, 620, 8, 17, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 5, 19, 629, 8, 19, 10, 19, 12, 19, 632, 9, 19, 3, 19, 634, 8, 19, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 5, 22, 646, 8, 22, 10, 22, 12, 22, 649, 9, 22, 1, 23, 1, 23, 3, 23, 653, 8, 23, 1, 24, 5, 24, 656, 8, 24, 10, 24, 12, 24, 659, 9, 24, 1, 24, 1, 24, 3, 24, 663, 8, 24, 1, 25, 1, 25, 1, 25, 1, 25, 3, 25, 669, 8, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 5, 26, 677, 8, 26, 10, 26, 12, 26, 680, 9, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 3, 27, 687, 8, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 5, 28, 695, 8, 28, 10, 28, 12, 28, 698, 9, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 3, 29, 705, 8, 29, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 5, 31, 715, 8, 31, 10, 31, 12, 31, 718, 9, 31, 1, 32, 3, 32, 721, 8, 32, 1, 32, 5, 32, 724, 8, 32, 10, 32, 12, 32, 727, 9, 32, 1, 32, 5, 32, 730, 8, 32, 10, 32, 12, 32, 733, 9, 32, 1, 32, 1, 32, 1, 33, 5, 33, 738, 8, 33, 10, 33, 12, 33, 741, 9, 33, 1, 33, 1, 33, 1, 33, 1, 33, 5, 33, 747, 8, 33, 10, 33, 12, 33, 750, 9, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 3, 35, 760, 8, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 3, 40, 789, 8, 40, 1, 41, 1, 41, 3, 41, 793, 8, 41, 1, 42, 5, 42, 796, 8, 42, 10, 42, 12, 42, 799, 9, 42, 1, 42, 1, 42, 1, 42, 3, 42, 804, 8, 42, 1, 42, 3, 42, 807, 8, 42, 1, 42, 3, 42, 810, 8, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 3, 43, 822, 8, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 5, 45, 831, 8, 45, 10, 45, 12, 45, 834, 9, 45, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 5, 48, 845, 8, 48, 10, 48, 12, 48, 848, 9, 48, 1, 49, 1, 49, 5, 49, 852, 8, 49, 10, 49, 12, 49, 855, 9, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 3, 50, 863, 8, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 3, 51, 870, 8, 51, 1, 52, 5, 52, 873, 8, 52, 10, 52, 12, 52, 876, 9, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 3, 53, 890, 8, 53, 1, 54, 1, 54, 1, 54, 5, 54, 895, 8, 54, 10, 54, 12, 54, 898, 9, 54, 1, 55, 1, 55, 1, 55, 3, 55, 903, 8, 55, 1, 56, 1, 56, 3, 56, 907, 8, 56, 1, 57, 1, 57, 3, 57, 911, 8, 57, 1, 58, 1, 58, 3, 58, 915, 8, 58, 1, 59, 1, 59, 3, 59, 919, 8, 59, 1, 60, 1, 60, 1, 60, 3, 60, 924, 8, 60, 1, 61, 1, 61, 3, 61, 928, 8, 61, 1, 61, 1, 61, 5, 61, 932, 8, 61, 10, 61, 12, 61, 935, 9, 61, 1, 62, 1, 62, 3, 62, 939, 8, 62, 1, 62, 1, 62, 1, 62, 5, 62, 944, 8, 62, 10, 62, 12, 62, 947, 9, 62, 1, 62, 1, 62, 3, 62, 951, 8, 62, 3, 62, 953, 8, 62, 1, 63, 1, 63, 5, 63, 957, 8, 63, 10, 63, 12, 63, 960, 9, 63, 1, 63, 1, 63, 3, 63, 964, 8, 63, 1, 64, 1, 64, 3, 64, 968, 8, 64, 1, 65, 1, 65, 1, 66, 1, 66, 1, 67, 1, 67, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 3, 69, 987, 8, 69, 1, 70, 5, 70, 990, 8, 70, 10, 70, 12, 70, 993, 9, 70, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 1008, 8, 71, 1, 72, 1, 72, 1, 72, 3, 72, 1013, 8, 72, 1, 72, 1, 72, 5, 72, 1017, 8, 72, 10, 72, 12, 72, 1020, 9, 72, 1, 72, 1, 72, 1, 72, 3, 72, 1025, 8, 72, 3, 72, 1027, 8, 72, 1, 73, 1, 73, 3, 73, 1031, 8, 73, 1, 74, 1, 74, 1, 74, 3, 74, 1036, 8, 74, 1, 74, 1, 74, 3, 74, 1040, 8, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 1047, 8, 75, 1, 76, 1, 76, 1, 76, 5, 76, 1052, 8, 76, 10, 76, 12, 76, 1055, 9, 76, 1, 76, 1, 76, 1, 76, 5, 76, 1060, 8, 76, 10, 76, 12, 76, 1063, 9, 76, 3, 76, 1065, 8, 76, 1, 77, 5, 77, 1068, 8, 77, 10, 77, 12, 77, 1071, 9, 77, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 3, 78, 1078, 8, 78, 1, 79, 5, 79, 1081, 8, 79, 10, 79, 12, 79, 1084, 9, 79, 1, 79, 1, 79, 5, 79, 1088, 8, 79, 10, 79, 12, 79, 1091, 9, 79, 1, 79, 1, 79, 1, 79, 1, 79, 3, 79, 1097, 8, 79, 1, 80, 5, 80, 1100, 8, 80, 10, 80, 12, 80, 1103, 9, 80, 1, 80, 1, 80, 1, 80, 3, 80, 1108, 8, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 5, 82, 1118, 8, 82, 10, 82, 12, 82, 1121, 9, 82, 1, 83, 1, 83, 3, 83, 1125, 8, 83, 1, 84, 1, 84, 3, 84, 1129, 8, 84, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 87, 5, 87, 1137, 8, 87, 10, 87, 12, 87, 1140, 9, 87, 1, 87, 1, 87, 3, 87, 1144, 8, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 88, 3, 88, 1152, 8, 88, 1, 89, 3, 89, 1155, 8, 89, 1, 89, 1, 89, 1, 89, 3, 89, 1160, 8, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 91, 1, 91, 3, 91, 1168, 8, 91, 1, 91, 3, 91, 1171, 8, 91, 1, 91, 1, 91, 1, 92, 3, 92, 1176, 8, 92, 1, 92, 1, 92, 1, 92, 3, 92, 1181, 8, 92, 1, 92, 1, 92, 1, 92, 3, 92, 1186, 8, 92, 1, 92, 1, 92, 1, 92, 3, 92, 1191, 8, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 3, 92, 1198, 8, 92, 1, 92, 1, 92, 1, 92, 3, 92, 1203, 8, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 3, 92, 1211, 8, 92, 1, 92, 1, 92, 1, 92, 3, 92, 1216, 8, 92, 1, 92, 1, 92, 1, 92, 3, 92, 1221, 8, 92, 1, 93, 5, 93, 1224, 8, 93, 10, 93, 12, 93, 1227, 9, 93, 1, 93, 1, 93, 1, 93, 3, 93, 1232, 8, 93, 1, 93, 1, 93, 1, 94, 1, 94, 3, 94, 1238, 8, 94, 1, 94, 3, 94, 1241, 8, 94, 1, 94, 3, 94, 1244, 8, 94, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 5, 95, 1251, 8, 95, 10, 95, 12, 95, 1254, 9, 95, 1, 96, 5, 96, 1257, 8, 96, 10, 96, 12, 96, 1260, 9, 96, 1, 96, 1, 96, 1, 96, 3, 96, 1265, 8, 96, 1, 96, 3, 96, 1268, 8, 96, 1, 96, 3, 96, 1271, 8, 96, 1, 97, 1, 97, 1, 98, 1, 98, 5, 98, 1277, 8, 98, 10, 98, 12, 98, 1280, 9, 98, 1, 99, 1, 99, 3, 99, 1284, 8, 99, 1, 100, 5, 100, 1287, 8, 100, 10, 100, 12, 100, 1290, 9, 100, 1, 100, 1, 100, 1, 100, 3, 100, 1295, 8, 100, 1, 100, 3, 100, 1298, 8, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 3, 101, 1309, 8, 101, 1, 102, 1, 102, 1, 102, 1, 103, 1, 103, 5, 103, 1316, 8, 103, 10, 103, 12, 103, 1319, 9, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 3, 104, 1328, 8, 104, 1, 105, 5, 105, 1331, 8, 105, 10, 105, 12, 105, 1334, 9, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 106, 3, 106, 1344, 8, 106, 1, 107, 5, 107, 1347, 8, 107, 10, 107, 12, 107, 1350, 9, 107, 1, 107, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 3, 108, 1361, 8, 108, 1, 109, 5, 109, 1364, 8, 109, 10, 109, 12, 109, 1367, 9, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 110, 1, 110, 5, 110, 1376, 8, 110, 10, 110, 12, 110, 1379, 9, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 3, 111, 1388, 8, 111, 1, 112, 5, 112, 1391, 8, 112, 10, 112, 12, 112, 1394, 9, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 3, 112, 1401, 8, 112, 1, 112, 3, 112, 1404, 8, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 3, 113, 1411, 8, 113, 1, 114, 1, 114, 1, 114, 1, 115, 1, 115, 1, 115, 3, 115, 1419, 8, 115, 1, 116, 1, 116, 1, 116, 1, 116, 3, 116, 1425, 8, 116, 1, 116, 1, 116, 1, 117, 1, 117, 1, 117, 5, 117, 1432, 8, 117, 10, 117, 12, 117, 1435, 9, 117, 1, 118, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 3, 119, 1444, 8, 119, 1, 120, 1, 120, 3, 120, 1448, 8, 120, 1, 120, 3, 120, 1451, 8, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 5, 121, 1458, 8, 121, 10, 121, 12, 121, 1461, 9, 121, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 124, 1, 124, 3, 124, 1474, 8, 124, 1, 124, 3, 124, 1477, 8, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 5, 125, 1484, 8, 125, 10, 125, 12, 125, 1487, 9, 125, 1, 126, 1, 126, 3, 126, 1491, 8, 126, 1, 126, 1, 126, 1, 127, 1, 127, 5, 127, 1497, 8, 127, 10, 127, 12, 127, 1500, 9, 127, 1, 128, 1, 128, 1, 128, 3, 128, 1505, 8, 128, 1, 129, 1, 129, 1, 129, 1, 130, 5, 130, 1511, 8, 130, 10, 130, 12, 130, 1514, 9, 130, 1, 130, 1, 130, 1, 130, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 3, 131, 1525, 8, 131, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 3, 132, 1532, 8, 132, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 3, 133, 1546, 8, 133, 1, 134, 1, 134, 1, 135, 1, 135, 1, 135, 1, 135, 1, 136, 1, 136, 1, 136, 1, 136, 1, 137, 1, 137, 1, 137, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 3, 138, 1568, 8, 138, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 3, 142, 1602, 8, 142, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 144, 1, 144, 5, 144, 1612, 8, 144, 10, 144, 12, 144, 1615, 9, 144, 1, 144, 5, 144, 1618, 8, 144, 10, 144, 12, 144, 1621, 9, 144, 1, 144, 1, 144, 1, 145, 1, 145, 1, 145, 1, 146, 1, 146, 5, 146, 1630, 8, 146, 10, 146, 12, 146, 1633, 9, 146, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 3, 147, 1645, 8, 147, 1, 148, 1, 148, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 152, 1, 152, 3, 152, 1671, 8, 152, 1, 153, 1, 153, 3, 153, 1675, 8, 153, 1, 154, 1, 154, 1, 154, 3, 154, 1680, 8, 154, 1, 154, 1, 154, 3, 154, 1684, 8, 154, 1, 154, 1, 154, 3, 154, 1688, 8, 154, 1, 154, 1, 154, 1, 154, 1, 155, 1, 155, 1, 155, 3, 155, 1696, 8, 155, 1, 155, 1, 155, 3, 155, 1700, 8, 155, 1, 155, 1, 155, 3, 155, 1704, 8, 155, 1, 155, 1, 155, 1, 155, 1, 156, 1, 156, 3, 156, 1711, 8, 156, 1, 157, 1, 157, 1, 158, 1, 158, 1, 158, 5, 158, 1718, 8, 158, 10, 158, 12, 158, 1721, 9, 158, 1, 159, 1, 159, 1, 159, 5, 159, 1726, 8, 159, 10, 159, 12, 159, 1729, 9, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 160, 1, 160, 1, 160, 5, 160, 1741, 8, 160, 10, 160, 12, 160, 1744, 9, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 161, 1, 161, 3, 161, 1755, 8, 161, 1, 161, 1, 161, 1, 162, 1, 162, 3, 162, 1761, 8, 162, 1, 162, 1, 162, 1, 163, 1, 163, 3, 163, 1767, 8, 163, 1, 163, 1, 163, 1, 164, 1, 164, 1, 164, 1, 164, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 3, 166, 1788, 8, 166, 1, 166, 1, 166, 1, 166, 3, 166, 1793, 8, 166, 1, 167, 1, 167, 5, 167, 1797, 8, 167, 10, 167, 12, 167, 1800, 9, 167, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 169, 5, 169, 1809, 8, 169, 10, 169, 12, 169, 1812, 9, 169, 1, 169, 1, 169, 1, 169, 1, 170, 1, 170, 1, 170, 5, 170, 1820, 8, 170, 10, 170, 12, 170, 1823, 9, 170, 1, 171, 1, 171, 1, 171, 1, 172, 1, 172, 1, 172, 1, 172, 3, 172, 1832, 8, 172, 1, 172, 3, 172, 1835, 8, 172, 1, 173, 1, 173, 1, 173, 3, 173, 1840, 8, 173, 1, 173, 1, 173, 1, 174, 1, 174, 1, 174, 5, 174, 1847, 8, 174, 10, 174, 12, 174, 1850, 9, 174, 1, 175, 5, 175, 1853, 8, 175, 10, 175, 12, 175, 1856, 9, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 176, 1, 176, 3, 176, 1865, 8, 176, 1, 176, 5, 176, 1868, 8, 176, 10, 176, 12, 176, 1871, 9, 176, 1, 177, 1, 177, 1, 177, 1, 177, 5, 177, 1877, 8, 177, 10, 177, 12, 177, 1880, 9, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 3, 177, 1902, 8, 177, 1, 178, 1, 178, 1, 179, 1, 179, 1, 179, 1, 179, 5, 179, 1910, 8, 179, 10, 179, 12, 179, 1913, 9, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 3, 179, 1934, 8, 179, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 3, 180, 1941, 8, 180, 1, 181, 1, 181, 1, 182, 1, 182, 1, 182, 1, 182, 3, 182, 1949, 8, 182, 1, 183, 1, 183, 1, 183, 1, 183, 5, 183, 1955, 8, 183, 10, 183, 12, 183, 1958, 9, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 5, 183, 1966, 8, 183, 10, 183, 12, 183, 1969, 9, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 3, 183, 1991, 8, 183, 1, 184, 1, 184, 1, 185, 1, 185, 1, 185, 1, 185, 5, 185, 1999, 8, 185, 10, 185, 12, 185, 2002, 9, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 5, 185, 2010, 8, 185, 10, 185, 12, 185, 2013, 9, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 3, 185, 2034, 8, 185, 1, 186, 1, 186, 3, 186, 2038, 8, 186, 1, 186, 5, 186, 2041, 8, 186, 10, 186, 12, 186, 2044, 9, 186, 1, 186, 1, 186, 1, 186, 5, 186, 2049, 8, 186, 10, 186, 12, 186, 2052, 9, 186, 1, 186, 5, 186, 2055, 8, 186, 10, 186, 12, 186, 2058, 9, 186, 1, 186, 3, 186, 2061, 8, 186, 1, 186, 1, 186, 3, 186, 2065, 8, 186, 1, 186, 1, 186, 3, 186, 2069, 8, 186, 1, 186, 1, 186, 1, 186, 1, 186, 3, 186, 2075, 8, 186, 1, 186, 5, 186, 2078, 8, 186, 10, 186, 12, 186, 2081, 9, 186, 1, 186, 1, 186, 3, 186, 2085, 8, 186, 1, 186, 1, 186, 3, 186, 2089, 8, 186, 1, 186, 1, 186, 3, 186, 2093, 8, 186, 1, 186, 1, 186, 1, 186, 1, 186, 3, 186, 2099, 8, 186, 1, 186, 5, 186, 2102, 8, 186, 10, 186, 12, 186, 2105, 9, 186, 1, 186, 1, 186, 3, 186, 2109, 8, 186, 1, 186, 1, 186, 3, 186, 2113, 8, 186, 1, 186, 1, 186, 3, 186, 2117, 8, 186, 3, 186, 2119, 8, 186, 1, 187, 1, 187, 1, 187, 3, 187, 2124, 8, 187, 1, 187, 5, 187, 2127, 8, 187, 10, 187, 12, 187, 2130, 9, 187, 1, 187, 1, 187, 3, 187, 2134, 8, 187, 1, 187, 1, 187, 3, 187, 2138, 8, 187, 1, 187, 1, 187, 3, 187, 2142, 8, 187, 1, 188, 1, 188, 3, 188, 2146, 8, 188, 1, 188, 5, 188, 2149, 8, 188, 10, 188, 12, 188, 2152, 9, 188, 1, 188, 1, 188, 1, 188, 5, 188, 2157, 8, 188, 10, 188, 12, 188, 2160, 9, 188, 1, 188, 5, 188, 2163, 8, 188, 10, 188, 12, 188, 2166, 9, 188, 1, 188, 3, 188, 2169, 8, 188, 1, 188, 1, 188, 3, 188, 2173, 8, 188, 1, 188, 1, 188, 3, 188, 2177, 8, 188, 1, 188, 1, 188, 1, 188, 1, 188, 3, 188, 2183, 8, 188, 1, 188, 5, 188, 2186, 8, 188, 10, 188, 12, 188, 2189, 9, 188, 1, 188, 1, 188, 3, 188, 2193, 8, 188, 1, 188, 1, 188, 3, 188, 2197, 8, 188, 1, 188, 1, 188, 3, 188, 2201, 8, 188, 3, 188, 2203, 8, 188, 1, 189, 1, 189, 1, 189, 3, 189, 2208, 8, 189, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 3, 190, 2223, 8, 190, 1, 191, 1, 191, 1, 191, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 3, 192, 2237, 8, 192, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 3, 193, 2249, 8, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 5, 193, 2256, 8, 193, 10, 193, 12, 193, 2259, 9, 193, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 5, 194, 2271, 8, 194, 10, 194, 12, 194, 2274, 9, 194, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 3, 195, 2286, 8, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 5, 195, 2293, 8, 195, 10, 195, 12, 195, 2296, 9, 195, 1, 196, 1, 196, 1, 196, 3, 196, 2301, 8, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 3, 196, 2308, 8, 196, 1, 196, 1, 196, 1, 196, 3, 196, 2313, 8, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 3, 196, 2320, 8, 196, 1, 196, 1, 196, 1, 196, 3, 196, 2325, 8, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 3, 196, 2332, 8, 196, 1, 196, 1, 196, 1, 196, 3, 196, 2337, 8, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 3, 196, 2344, 8, 196, 1, 196, 1, 196, 1, 196, 3, 196, 2349, 8, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 3, 196, 2357, 8, 196, 1, 196, 1, 196, 1, 196, 3, 196, 2362, 8, 196, 1, 196, 1, 196, 3, 196, 2366, 8, 196, 1, 197, 1, 197, 3, 197, 2370, 8, 197, 1, 197, 1, 197, 1, 197, 3, 197, 2375, 8, 197, 1, 197, 1, 197, 1, 198, 1, 198, 1, 198, 3, 198, 2382, 8, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 3, 198, 2389, 8, 198, 1, 198, 1, 198, 1, 198, 3, 198, 2394, 8, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 3, 198, 2401, 8, 198, 1, 198, 1, 198, 1, 198, 3, 198, 2406, 8, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 3, 198, 2413, 8, 198, 1, 198, 1, 198, 1, 198, 3, 198, 2418, 8, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 3, 198, 2426, 8, 198, 1, 198, 1, 198, 1, 198, 3, 198, 2431, 8, 198, 1, 198, 1, 198, 3, 198, 2435, 8, 198, 1, 199, 1, 199, 1, 199, 5, 199, 2440, 8, 199, 10, 199, 12, 199, 2443, 9, 199, 1, 200, 1, 200, 1, 200, 3, 200, 2448, 8, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 3, 200, 2455, 8, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 3, 200, 2462, 8, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 3, 200, 2469, 8, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 3, 200, 2477, 8, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 3, 200, 2484, 8, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 3, 200, 2492, 8, 200, 1, 201, 1, 201, 3, 201, 2496, 8, 201, 1, 201, 1, 201, 1, 202, 1, 202, 1, 202, 3, 202, 2503, 8, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 3, 202, 2510, 8, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 3, 202, 2517, 8, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 3, 202, 2525, 8, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 3, 202, 2532, 8, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 3, 202, 2540, 8, 202, 1, 203, 1, 203, 1, 203, 1, 203, 3, 203, 2546, 8, 203, 1, 203, 1, 203, 1, 203, 1, 203, 3, 203, 2552, 8, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 3, 203, 2564, 8, 203, 1, 204, 1, 204, 5, 204, 2568, 8, 204, 10, 204, 12, 204, 2571, 9, 204, 1, 205, 5, 205, 2574, 8, 205, 10, 205, 12, 205, 2577, 9, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 206, 1, 206, 1, 207, 1, 207, 3, 207, 2587, 8, 207, 1, 208, 1, 208, 1, 208, 1, 208, 1, 209, 1, 209, 1, 209, 3, 209, 2596, 8, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 3, 209, 2603, 8, 209, 1, 210, 1, 210, 1, 210, 5, 210, 2608, 8, 210, 10, 210, 12, 210, 2611, 9, 210, 1, 211, 1, 211, 3, 211, 2615, 8, 211, 1, 212, 1, 212, 3, 212, 2619, 8, 212, 1, 213, 1, 213, 1, 213, 1, 213, 1, 214, 1, 214, 1, 214, 3, 214, 2628, 8, 214, 1, 215, 1, 215, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 3, 216, 2639, 8, 216, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 5, 217, 2647, 8, 217, 10, 217, 12, 217, 2650, 9, 217, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 5, 218, 2658, 8, 218, 10, 218, 12, 218, 2661, 9, 218, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 5, 219, 2669, 8, 219, 10, 219, 12, 219, 2672, 9, 219, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 5, 220, 2680, 8, 220, 10, 220, 12, 220, 2683, 9, 220, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 5, 221, 2691, 8, 221, 10, 221, 12, 221, 2694, 9, 221, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 5, 222, 2705, 8, 222, 10, 222, 12, 222, 2708, 9, 222, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 5, 223, 2728, 8, 223, 10, 223, 12, 223, 2731, 9, 223, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 5, 224, 2749, 8, 224, 10, 224, 12, 224, 2752, 9, 224, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 5, 225, 2763, 8, 225, 10, 225, 12, 225, 2766, 9, 225, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 5, 226, 2780, 8, 226, 10, 226, 12, 226, 2783, 9, 226, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 3, 227, 2792, 8, 227, 1, 228, 1, 228, 1, 228, 1, 229, 1, 229, 1, 229, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 3, 230, 2806, 8, 230, 1, 231, 1, 231, 3, 231, 2810, 8, 231, 1, 231, 1, 231, 5, 231, 2814, 8, 231, 10, 231, 12, 231, 2817, 9, 231, 1, 232, 1, 232, 1, 232, 1, 233, 1, 233, 1, 234, 1, 234, 1, 234, 1, 235, 1, 235, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 5, 236, 2837, 8, 236, 10, 236, 12, 236, 2840, 9, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 5, 236, 2848, 8, 236, 10, 236, 12, 236, 2851, 9, 236, 1, 236, 1, 236, 1, 236, 3, 236, 2856, 8, 236, 1, 236, 0, 13, 52, 56, 62, 434, 436, 438, 440, 442, 444, 446, 448, 450, 452, 237, 0, 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, 234, 236, 238, 240, 242, 244, 246, 248, 250, 252, 254, 256, 258, 260, 262, 264, 266, 268, 270, 272, 274, 276, 278, 280, 282, 284, 286, 288, 290, 292, 294, 296, 298, 300, 302, 304, 306, 308, 310, 312, 314, 316, 318, 320, 322, 324, 326, 328, 330, 332, 334, 336, 338, 340, 342, 344, 346, 348, 350, 352, 354, 356, 358, 360, 362, 364, 366, 368, 370, 372, 374, 376, 378, 380, 382, 384, 386, 388, 390, 392, 394, 396, 398, 400, 402, 404, 406, 408, 410, 412, 414, 416, 418, 420, 422, 424, 426, 428, 430, 432, 434, 436, 438, 440, 442, 444, 446, 448, 450, 452, 454, 456, 458, 460, 462, 464, 466, 468, 470, 472, 0, 4, 1, 0, 51, 56, 5, 0, 5, 5, 8, 8, 27, 27, 29, 29, 37, 37, 2, 0, 14, 14, 20, 20, 2, 0, 66, 66, 91, 101, 3099, 0, 474, 1, 0, 0, 0, 2, 478, 1, 0, 0, 0, 4, 494, 1, 0, 0, 0, 6, 498, 1, 0, 0, 0, 8, 500, 1, 0, 0, 0, 10, 502, 1, 0, 0, 0, 12, 507, 1, 0, 0, 0, 14, 511, 1, 0, 0, 0, 16, 542, 1, 0, 0, 0, 18, 544, 1, 0, 0, 0, 20, 558, 1, 0, 0, 0, 22, 565, 1, 0, 0, 0, 24, 567, 1, 0, 0, 0, 26, 569, 1, 0, 0, 0, 28, 574, 1, 0, 0, 0, 30, 588, 1, 0, 0, 0, 32, 593, 1, 0, 0, 0, 34, 614, 1, 0, 0, 0, 36, 621, 1, 0, 0, 0, 38, 633, 1, 0, 0, 0, 40, 635, 1, 0, 0, 0, 42, 638, 1, 0, 0, 0, 44, 642, 1, 0, 0, 0, 46, 652, 1, 0, 0, 0, 48, 657, 1, 0, 0, 0, 50, 668, 1, 0, 0, 0, 52, 670, 1, 0, 0, 0, 54, 686, 1, 0, 0, 0, 56, 688, 1, 0, 0, 0, 58, 704, 1, 0, 0, 0, 60, 706, 1, 0, 0, 0, 62, 708, 1, 0, 0, 0, 64, 720, 1, 0, 0, 0, 66, 739, 1, 0, 0, 0, 68, 753, 1, 0, 0, 0, 70, 759, 1, 0, 0, 0, 72, 761, 1, 0, 0, 0, 74, 765, 1, 0, 0, 0, 76, 771, 1, 0, 0, 0, 78, 778, 1, 0, 0, 0, 80, 788, 1, 0, 0, 0, 82, 792, 1, 0, 0, 0, 84, 797, 1, 0, 0, 0, 86, 821, 1, 0, 0, 0, 88, 823, 1, 0, 0, 0, 90, 827, 1, 0, 0, 0, 92, 835, 1, 0, 0, 0, 94, 838, 1, 0, 0, 0, 96, 841, 1, 0, 0, 0, 98, 849, 1, 0, 0, 0, 100, 862, 1, 0, 0, 0, 102, 869, 1, 0, 0, 0, 104, 874, 1, 0, 0, 0, 106, 889, 1, 0, 0, 0, 108, 891, 1, 0, 0, 0, 110, 899, 1, 0, 0, 0, 112, 904, 1, 0, 0, 0, 114, 910, 1, 0, 0, 0, 116, 914, 1, 0, 0, 0, 118, 918, 1, 0, 0, 0, 120, 923, 1, 0, 0, 0, 122, 927, 1, 0, 0, 0, 124, 952, 1, 0, 0, 0, 126, 954, 1, 0, 0, 0, 128, 965, 1, 0, 0, 0, 130, 969, 1, 0, 0, 0, 132, 971, 1, 0, 0, 0, 134, 973, 1, 0, 0, 0, 136, 975, 1, 0, 0, 0, 138, 986, 1, 0, 0, 0, 140, 991, 1, 0, 0, 0, 142, 1007, 1, 0, 0, 0, 144, 1026, 1, 0, 0, 0, 146, 1030, 1, 0, 0, 0, 148, 1032, 1, 0, 0, 0, 150, 1046, 1, 0, 0, 0, 152, 1064, 1, 0, 0, 0, 154, 1069, 1, 0, 0, 0, 156, 1077, 1, 0, 0, 0, 158, 1096, 1, 0, 0, 0, 160, 1101, 1, 0, 0, 0, 162, 1111, 1, 0, 0, 0, 164, 1114, 1, 0, 0, 0, 166, 1124, 1, 0, 0, 0, 168, 1128, 1, 0, 0, 0, 170, 1130, 1, 0, 0, 0, 172, 1132, 1, 0, 0, 0, 174, 1138, 1, 0, 0, 0, 176, 1151, 1, 0, 0, 0, 178, 1154, 1, 0, 0, 0, 180, 1163, 1, 0, 0, 0, 182, 1165, 1, 0, 0, 0, 184, 1220, 1, 0, 0, 0, 186, 1225, 1, 0, 0, 0, 188, 1235, 1, 0, 0, 0, 190, 1247, 1, 0, 0, 0, 192, 1258, 1, 0, 0, 0, 194, 1272, 1, 0, 0, 0, 196, 1274, 1, 0, 0, 0, 198, 1283, 1, 0, 0, 0, 200, 1288, 1, 0, 0, 0, 202, 1308, 1, 0, 0, 0, 204, 1310, 1, 0, 0, 0, 206, 1313, 1, 0, 0, 0, 208, 1327, 1, 0, 0, 0, 210, 1332, 1, 0, 0, 0, 212, 1343, 1, 0, 0, 0, 214, 1348, 1, 0, 0, 0, 216, 1360, 1, 0, 0, 0, 218, 1365, 1, 0, 0, 0, 220, 1373, 1, 0, 0, 0, 222, 1387, 1, 0, 0, 0, 224, 1392, 1, 0, 0, 0, 226, 1410, 1, 0, 0, 0, 228, 1412, 1, 0, 0, 0, 230, 1418, 1, 0, 0, 0, 232, 1420, 1, 0, 0, 0, 234, 1428, 1, 0, 0, 0, 236, 1436, 1, 0, 0, 0, 238, 1443, 1, 0, 0, 0, 240, 1445, 1, 0, 0, 0, 242, 1454, 1, 0, 0, 0, 244, 1462, 1, 0, 0, 0, 246, 1465, 1, 0, 0, 0, 248, 1471, 1, 0, 0, 0, 250, 1480, 1, 0, 0, 0, 252, 1488, 1, 0, 0, 0, 254, 1494, 1, 0, 0, 0, 256, 1504, 1, 0, 0, 0, 258, 1506, 1, 0, 0, 0, 260, 1512, 1, 0, 0, 0, 262, 1524, 1, 0, 0, 0, 264, 1531, 1, 0, 0, 0, 266, 1545, 1, 0, 0, 0, 268, 1547, 1, 0, 0, 0, 270, 1549, 1, 0, 0, 0, 272, 1553, 1, 0, 0, 0, 274, 1557, 1, 0, 0, 0, 276, 1567, 1, 0, 0, 0, 278, 1569, 1, 0, 0, 0, 280, 1575, 1, 0, 0, 0, 282, 1583, 1, 0, 0, 0, 284, 1601, 1, 0, 0, 0, 286, 1603, 1, 0, 0, 0, 288, 1609, 1, 0, 0, 0, 290, 1624, 1, 0, 0, 0, 292, 1627, 1, 0, 0, 0, 294, 1644, 1, 0, 0, 0, 296, 1646, 1, 0, 0, 0, 298, 1648, 1, 0, 0, 0, 300, 1654, 1, 0, 0, 0, 302, 1660, 1, 0, 0, 0, 304, 1670, 1, 0, 0, 0, 306, 1674, 1, 0, 0, 0, 308, 1676, 1, 0, 0, 0, 310, 1692, 1, 0, 0, 0, 312, 1710, 1, 0, 0, 0, 314, 1712, 1, 0, 0, 0, 316, 1714, 1, 0, 0, 0, 318, 1722, 1, 0, 0, 0, 320, 1737, 1, 0, 0, 0, 322, 1752, 1, 0, 0, 0, 324, 1758, 1, 0, 0, 0, 326, 1764, 1, 0, 0, 0, 328, 1770, 1, 0, 0, 0, 330, 1774, 1, 0, 0, 0, 332, 1792, 1, 0, 0, 0, 334, 1794, 1, 0, 0, 0, 336, 1801, 1, 0, 0, 0, 338, 1810, 1, 0, 0, 0, 340, 1816, 1, 0, 0, 0, 342, 1824, 1, 0, 0, 0, 344, 1827, 1, 0, 0, 0, 346, 1836, 1, 0, 0, 0, 348, 1843, 1, 0, 0, 0, 350, 1854, 1, 0, 0, 0, 352, 1864, 1, 0, 0, 0, 354, 1901, 1, 0, 0, 0, 356, 1903, 1, 0, 0, 0, 358, 1933, 1, 0, 0, 0, 360, 1940, 1, 0, 0, 0, 362, 1942, 1, 0, 0, 0, 364, 1948, 1, 0, 0, 0, 366, 1990, 1, 0, 0, 0, 368, 1992, 1, 0, 0, 0, 370, 2033, 1, 0, 0, 0, 372, 2118, 1, 0, 0, 0, 374, 2120, 1, 0, 0, 0, 376, 2202, 1, 0, 0, 0, 378, 2207, 1, 0, 0, 0, 380, 2222, 1, 0, 0, 0, 382, 2224, 1, 0, 0, 0, 384, 2236, 1, 0, 0, 0, 386, 2248, 1, 0, 0, 0, 388, 2260, 1, 0, 0, 0, 390, 2285, 1, 0, 0, 0, 392, 2365, 1, 0, 0, 0, 394, 2367, 1, 0, 0, 0, 396, 2434, 1, 0, 0, 0, 398, 2436, 1, 0, 0, 0, 400, 2491, 1, 0, 0, 0, 402, 2493, 1, 0, 0, 0, 404, 2539, 1, 0, 0, 0, 406, 2563, 1, 0, 0, 0, 408, 2565, 1, 0, 0, 0, 410, 2575, 1, 0, 0, 0, 412, 2582, 1, 0, 0, 0, 414, 2586, 1, 0, 0, 0, 416, 2588, 1, 0, 0, 0, 418, 2602, 1, 0, 0, 0, 420, 2604, 1, 0, 0, 0, 422, 2614, 1, 0, 0, 0, 424, 2618, 1, 0, 0, 0, 426, 2620, 1, 0, 0, 0, 428, 2627, 1, 0, 0, 0, 430, 2629, 1, 0, 0, 0, 432, 2638, 1, 0, 0, 0, 434, 2640, 1, 0, 0, 0, 436, 2651, 1, 0, 0, 0, 438, 2662, 1, 0, 0, 0, 440, 2673, 1, 0, 0, 0, 442, 2684, 1, 0, 0, 0, 444, 2695, 1, 0, 0, 0, 446, 2709, 1, 0, 0, 0, 448, 2732, 1, 0, 0, 0, 450, 2753, 1, 0, 0, 0, 452, 2767, 1, 0, 0, 0, 454, 2791, 1, 0, 0, 0, 456, 2793, 1, 0, 0, 0, 458, 2796, 1, 0, 0, 0, 460, 2805, 1, 0, 0, 0, 462, 2809, 1, 0, 0, 0, 464, 2818, 1, 0, 0, 0, 466, 2821, 1, 0, 0, 0, 468, 2823, 1, 0, 0, 0, 470, 2826, 1, 0, 0, 0, 472, 2855, 1, 0, 0, 0, 474, 475, 7, 0, 0, 0, 475, 1, 1, 0, 0, 0, 476, 479, 3, 4, 2, 0, 477, 479, 3, 12, 6, 0, 478, 476, 1, 0, 0, 0, 478, 477, 1, 0, 0, 0, 479, 3, 1, 0, 0, 0, 480, 482, 3, 230, 115, 0, 481, 480, 1, 0, 0, 0, 482, 485, 1, 0, 0, 0, 483, 481, 1, 0, 0, 0, 483, 484, 1, 0, 0, 0, 484, 486, 1, 0, 0, 0, 485, 483, 1, 0, 0, 0, 486, 495, 3, 6, 3, 0, 487, 489, 3, 230, 115, 0, 488, 487, 1, 0, 0, 0, 489, 492, 1, 0, 0, 0, 490, 488, 1, 0, 0, 0, 490, 491, 1, 0, 0, 0, 491, 493, 1, 0, 0, 0, 492, 490, 1, 0, 0, 0, 493, 495, 5, 3, 0, 0, 494, 483, 1, 0, 0, 0, 494, 490, 1, 0, 0, 0, 495, 5, 1, 0, 0, 0, 496, 499, 3, 8, 4, 0, 497, 499, 3, 10, 5, 0, 498, 496, 1, 0, 0, 0, 498, 497, 1, 0, 0, 0, 499, 7, 1, 0, 0, 0, 500, 501, 7, 1, 0, 0, 501, 9, 1, 0, 0, 0, 502, 503, 7, 2, 0, 0, 503, 11, 1, 0, 0, 0, 504, 508, 3, 14, 7, 0, 505, 508, 3, 28, 14, 0, 506, 508, 3, 30, 15, 0, 507, 504, 1, 0, 0, 0, 507, 505, 1, 0, 0, 0, 507, 506, 1, 0, 0, 0, 508, 13, 1, 0, 0, 0, 509, 512, 3, 20, 10, 0, 510, 512, 3, 26, 13, 0, 511, 509, 1, 0, 0, 0, 511, 510, 1, 0, 0, 0, 512, 517, 1, 0, 0, 0, 513, 516, 3, 18, 9, 0, 514, 516, 3, 24, 12, 0, 515, 513, 1, 0, 0, 0, 515, 514, 1, 0, 0, 0, 516, 519, 1, 0, 0, 0, 517, 515, 1, 0, 0, 0, 517, 518, 1, 0, 0, 0, 518, 15, 1, 0, 0, 0, 519, 517, 1, 0, 0, 0, 520, 522, 3, 230, 115, 0, 521, 520, 1, 0, 0, 0, 522, 525, 1, 0, 0, 0, 523, 521, 1, 0, 0, 0, 523, 524, 1, 0, 0, 0, 524, 526, 1, 0, 0, 0, 525, 523, 1, 0, 0, 0, 526, 528, 5, 102, 0, 0, 527, 529, 3, 42, 21, 0, 528, 527, 1, 0, 0, 0, 528, 529, 1, 0, 0, 0, 529, 543, 1, 0, 0, 0, 530, 531, 3, 14, 7, 0, 531, 535, 5, 65, 0, 0, 532, 534, 3, 230, 115, 0, 533, 532, 1, 0, 0, 0, 534, 537, 1, 0, 0, 0, 535, 533, 1, 0, 0, 0, 535, 536, 1, 0, 0, 0, 536, 538, 1, 0, 0, 0, 537, 535, 1, 0, 0, 0, 538, 540, 5, 102, 0, 0, 539, 541, 3, 42, 21, 0, 540, 539, 1, 0, 0, 0, 540, 541, 1, 0, 0, 0, 541, 543, 1, 0, 0, 0, 542, 523, 1, 0, 0, 0, 542, 530, 1, 0, 0, 0, 543, 17, 1, 0, 0, 0, 544, 548, 5, 65, 0, 0, 545, 547, 3, 230, 115, 0, 546, 545, 1, 0, 0, 0, 547, 550, 1, 0, 0, 0, 548, 546, 1, 0, 0, 0, 548, 549, 1, 0, 0, 0, 549, 551, 1, 0, 0, 0, 550, 548, 1, 0, 0, 0, 551, 553, 5, 102, 0, 0, 552, 554, 3, 42, 21, 0, 553, 552, 1, 0, 0, 0, 553, 554, 1, 0, 0, 0, 554, 19, 1, 0, 0, 0, 555, 557, 3, 230, 115, 0, 556, 555, 1, 0, 0, 0, 557, 560, 1, 0, 0, 0, 558, 556, 1, 0, 0, 0, 558, 559, 1, 0, 0, 0, 559, 561, 1, 0, 0, 0, 560, 558, 1, 0, 0, 0, 561, 563, 5, 102, 0, 0, 562, 564, 3, 42, 21, 0, 563, 562, 1, 0, 0, 0, 563, 564, 1, 0, 0, 0, 564, 21, 1, 0, 0, 0, 565, 566, 3, 16, 8, 0, 566, 23, 1, 0, 0, 0, 567, 568, 3, 18, 9, 0, 568, 25, 1, 0, 0, 0, 569, 570, 3, 20, 10, 0, 570, 27, 1, 0, 0, 0, 571, 573, 3, 230, 115, 0, 572, 571, 1, 0, 0, 0, 573, 576, 1, 0, 0, 0, 574, 572, 1, 0, 0, 0, 574, 575, 1, 0, 0, 0, 575, 577, 1, 0, 0, 0, 576, 574, 1, 0, 0, 0, 577, 578, 5, 102, 0, 0, 578, 29, 1, 0, 0, 0, 579, 580, 3, 4, 2, 0, 580, 581, 3, 32, 16, 0, 581, 589, 1, 0, 0, 0, 582, 583, 3, 14, 7, 0, 583, 584, 3, 32, 16, 0, 584, 589, 1, 0, 0, 0, 585, 586, 3, 28, 14, 0, 586, 587, 3, 32, 16, 0, 587, 589, 1, 0, 0, 0, 588, 579, 1, 0, 0, 0, 588, 582, 1, 0, 0, 0, 588, 585, 1, 0, 0, 0, 589, 31, 1, 0, 0, 0, 590, 592, 3, 230, 115, 0, 591, 590, 1, 0, 0, 0, 592, 595, 1, 0, 0, 0, 593, 591, 1, 0, 0, 0, 593, 594, 1, 0, 0, 0, 594, 596, 1, 0, 0, 0, 595, 593, 1, 0, 0, 0, 596, 597, 5, 61, 0, 0, 597, 608, 5, 62, 0, 0, 598, 600, 3, 230, 115, 0, 599, 598, 1, 0, 0, 0, 600, 603, 1, 0, 0, 0, 601, 599, 1, 0, 0, 0, 601, 602, 1, 0, 0, 0, 602, 604, 1, 0, 0, 0, 603, 601, 1, 0, 0, 0, 604, 605, 5, 61, 0, 0, 605, 607, 5, 62, 0, 0, 606, 601, 1, 0, 0, 0, 607, 610, 1, 0, 0, 0, 608, 606, 1, 0, 0, 0, 608, 609, 1, 0, 0, 0, 609, 33, 1, 0, 0, 0, 610, 608, 1, 0, 0, 0, 611, 613, 3, 36, 18, 0, 612, 611, 1, 0, 0, 0, 613, 616, 1, 0, 0, 0, 614, 612, 1, 0, 0, 0, 614, 615, 1, 0, 0, 0, 615, 617, 1, 0, 0, 0, 616, 614, 1, 0, 0, 0, 617, 619, 5, 102, 0, 0, 618, 620, 3, 38, 19, 0, 619, 618, 1, 0, 0, 0, 619, 620, 1, 0, 0, 0, 620, 35, 1, 0, 0, 0, 621, 622, 3, 230, 115, 0, 622, 37, 1, 0, 0, 0, 623, 624, 5, 17, 0, 0, 624, 634, 3, 28, 14, 0, 625, 626, 5, 17, 0, 0, 626, 630, 3, 14, 7, 0, 627, 629, 3, 40, 20, 0, 628, 627, 1, 0, 0, 0, 629, 632, 1, 0, 0, 0, 630, 628, 1, 0, 0, 0, 630, 631, 1, 0, 0, 0, 631, 634, 1, 0, 0, 0, 632, 630, 1, 0, 0, 0, 633, 623, 1, 0, 0, 0, 633, 625, 1, 0, 0, 0, 634, 39, 1, 0, 0, 0, 635, 636, 5, 85, 0, 0, 636, 637, 3, 22, 11, 0, 637, 41, 1, 0, 0, 0, 638, 639, 5, 68, 0, 0, 639, 640, 3, 44, 22, 0, 640, 641, 5, 67, 0, 0, 641, 43, 1, 0, 0, 0, 642, 647, 3, 46, 23, 0, 643, 644, 5, 64, 0, 0, 644, 646, 3, 46, 23, 0, 645, 643, 1, 0, 0, 0, 646, 649, 1, 0, 0, 0, 647, 645, 1, 0, 0, 0, 647, 648, 1, 0, 0, 0, 648, 45, 1, 0, 0, 0, 649, 647, 1, 0, 0, 0, 650, 653, 3, 12, 6, 0, 651, 653, 3, 48, 24, 0, 652, 650, 1, 0, 0, 0, 652, 651, 1, 0, 0, 0, 653, 47, 1, 0, 0, 0, 654, 656, 3, 230, 115, 0, 655, 654, 1, 0, 0, 0, 656, 659, 1, 0, 0, 0, 657, 655, 1, 0, 0, 0, 657, 658, 1, 0, 0, 0, 658, 660, 1, 0, 0, 0, 659, 657, 1, 0, 0, 0, 660, 662, 5, 71, 0, 0, 661, 663, 3, 50, 25, 0, 662, 661, 1, 0, 0, 0, 662, 663, 1, 0, 0, 0, 663, 49, 1, 0, 0, 0, 664, 665, 5, 17, 0, 0, 665, 669, 3, 12, 6, 0, 666, 667, 5, 40, 0, 0, 667, 669, 3, 12, 6, 0, 668, 664, 1, 0, 0, 0, 668, 666, 1, 0, 0, 0, 669, 51, 1, 0, 0, 0, 670, 671, 6, 26, -1, 0, 671, 672, 5, 102, 0, 0, 672, 678, 1, 0, 0, 0, 673, 674, 10, 1, 0, 0, 674, 675, 5, 65, 0, 0, 675, 677, 5, 102, 0, 0, 676, 673, 1, 0, 0, 0, 677, 680, 1, 0, 0, 0, 678, 676, 1, 0, 0, 0, 678, 679, 1, 0, 0, 0, 679, 53, 1, 0, 0, 0, 680, 678, 1, 0, 0, 0, 681, 687, 5, 102, 0, 0, 682, 683, 3, 56, 28, 0, 683, 684, 5, 65, 0, 0, 684, 685, 5, 102, 0, 0, 685, 687, 1, 0, 0, 0, 686, 681, 1, 0, 0, 0, 686, 682, 1, 0, 0, 0, 687, 55, 1, 0, 0, 0, 688, 689, 6, 28, -1, 0, 689, 690, 5, 102, 0, 0, 690, 696, 1, 0, 0, 0, 691, 692, 10, 1, 0, 0, 692, 693, 5, 65, 0, 0, 693, 695, 5, 102, 0, 0, 694, 691, 1, 0, 0, 0, 695, 698, 1, 0, 0, 0, 696, 694, 1, 0, 0, 0, 696, 697, 1, 0, 0, 0, 697, 57, 1, 0, 0, 0, 698, 696, 1, 0, 0, 0, 699, 705, 5, 102, 0, 0, 700, 701, 3, 62, 31, 0, 701, 702, 5, 65, 0, 0, 702, 703, 5, 102, 0, 0, 703, 705, 1, 0, 0, 0, 704, 699, 1, 0, 0, 0, 704, 700, 1, 0, 0, 0, 705, 59, 1, 0, 0, 0, 706, 707, 5, 102, 0, 0, 707, 61, 1, 0, 0, 0, 708, 709, 6, 31, -1, 0, 709, 710, 5, 102, 0, 0, 710, 716, 1, 0, 0, 0, 711, 712, 10, 1, 0, 0, 712, 713, 5, 65, 0, 0, 713, 715, 5, 102, 0, 0, 714, 711, 1, 0, 0, 0, 715, 718, 1, 0, 0, 0, 716, 714, 1, 0, 0, 0, 716, 717, 1, 0, 0, 0, 717, 63, 1, 0, 0, 0, 718, 716, 1, 0, 0, 0, 719, 721, 3, 66, 33, 0, 720, 719, 1, 0, 0, 0, 720, 721, 1, 0, 0, 0, 721, 725, 1, 0, 0, 0, 722, 724, 3, 70, 35, 0, 723, 722, 1, 0, 0, 0, 724, 727, 1, 0, 0, 0, 725, 723, 1, 0, 0, 0, 725, 726, 1, 0, 0, 0, 726, 731, 1, 0, 0, 0, 727, 725, 1, 0, 0, 0, 728, 730, 3, 80, 40, 0, 729, 728, 1, 0, 0, 0, 730, 733, 1, 0, 0, 0, 731, 729, 1, 0, 0, 0, 731, 732, 1, 0, 0, 0, 732, 734, 1, 0, 0, 0, 733, 731, 1, 0, 0, 0, 734, 735, 5, 0, 0, 1, 735, 65, 1, 0, 0, 0, 736, 738, 3, 68, 34, 0, 737, 736, 1, 0, 0, 0, 738, 741, 1, 0, 0, 0, 739, 737, 1, 0, 0, 0, 739, 740, 1, 0, 0, 0, 740, 742, 1, 0, 0, 0, 741, 739, 1, 0, 0, 0, 742, 743, 5, 32, 0, 0, 743, 748, 5, 102, 0, 0, 744, 745, 5, 65, 0, 0, 745, 747, 5, 102, 0, 0, 746, 744, 1, 0, 0, 0, 747, 750, 1, 0, 0, 0, 748, 746, 1, 0, 0, 0, 748, 749, 1, 0, 0, 0, 749, 751, 1, 0, 0, 0, 750, 748, 1, 0, 0, 0, 751, 752, 5, 63, 0, 0, 752, 67, 1, 0, 0, 0, 753, 754, 3, 230, 115, 0, 754, 69, 1, 0, 0, 0, 755, 760, 3, 72, 36, 0, 756, 760, 3, 74, 37, 0, 757, 760, 3, 76, 38, 0, 758, 760, 3, 78, 39, 0, 759, 755, 1, 0, 0, 0, 759, 756, 1, 0, 0, 0, 759, 757, 1, 0, 0, 0, 759, 758, 1, 0, 0, 0, 760, 71, 1, 0, 0, 0, 761, 762, 5, 25, 0, 0, 762, 763, 3, 54, 27, 0, 763, 764, 5, 63, 0, 0, 764, 73, 1, 0, 0, 0, 765, 766, 5, 25, 0, 0, 766, 767, 3, 56, 28, 0, 767, 768, 5, 65, 0, 0, 768, 769, 5, 83, 0, 0, 769, 770, 5, 63, 0, 0, 770, 75, 1, 0, 0, 0, 771, 772, 5, 25, 0, 0, 772, 773, 5, 38, 0, 0, 773, 774, 3, 54, 27, 0, 774, 775, 5, 65, 0, 0, 775, 776, 5, 102, 0, 0, 776, 777, 5, 63, 0, 0, 777, 77, 1, 0, 0, 0, 778, 779, 5, 25, 0, 0, 779, 780, 5, 38, 0, 0, 780, 781, 3, 54, 27, 0, 781, 782, 5, 65, 0, 0, 782, 783, 5, 83, 0, 0, 783, 784, 5, 63, 0, 0, 784, 79, 1, 0, 0, 0, 785, 789, 3, 82, 41, 0, 786, 789, 3, 198, 99, 0, 787, 789, 5, 63, 0, 0, 788, 785, 1, 0, 0, 0, 788, 786, 1, 0, 0, 0, 788, 787, 1, 0, 0, 0, 789, 81, 1, 0, 0, 0, 790, 793, 3, 84, 42, 0, 791, 793, 3, 186, 93, 0, 792, 790, 1, 0, 0, 0, 792, 791, 1, 0, 0, 0, 793, 83, 1, 0, 0, 0, 794, 796, 3, 86, 43, 0, 795, 794, 1, 0, 0, 0, 796, 799, 1, 0, 0, 0, 797, 795, 1, 0, 0, 0, 797, 798, 1, 0, 0, 0, 798, 800, 1, 0, 0, 0, 799, 797, 1, 0, 0, 0, 800, 801, 5, 9, 0, 0, 801, 803, 5, 102, 0, 0, 802, 804, 3, 88, 44, 0, 803, 802, 1, 0, 0, 0, 803, 804, 1, 0, 0, 0, 804, 806, 1, 0, 0, 0, 805, 807, 3, 92, 46, 0, 806, 805, 1, 0, 0, 0, 806, 807, 1, 0, 0, 0, 807, 809, 1, 0, 0, 0, 808, 810, 3, 94, 47, 0, 809, 808, 1, 0, 0, 0, 809, 810, 1, 0, 0, 0, 810, 811, 1, 0, 0, 0, 811, 812, 3, 98, 49, 0, 812, 85, 1, 0, 0, 0, 813, 822, 3, 230, 115, 0, 814, 822, 5, 35, 0, 0, 815, 822, 5, 34, 0, 0, 816, 822, 5, 33, 0, 0, 817, 822, 5, 1, 0, 0, 818, 822, 5, 38, 0, 0, 819, 822, 5, 18, 0, 0, 820, 822, 5, 39, 0, 0, 821, 813, 1, 0, 0, 0, 821, 814, 1, 0, 0, 0, 821, 815, 1, 0, 0, 0, 821, 816, 1, 0, 0, 0, 821, 817, 1, 0, 0, 0, 821, 818, 1, 0, 0, 0, 821, 819, 1, 0, 0, 0, 821, 820, 1, 0, 0, 0, 822, 87, 1, 0, 0, 0, 823, 824, 5, 68, 0, 0, 824, 825, 3, 90, 45, 0, 825, 826, 5, 67, 0, 0, 826, 89, 1, 0, 0, 0, 827, 832, 3, 34, 17, 0, 828, 829, 5, 64, 0, 0, 829, 831, 3, 34, 17, 0, 830, 828, 1, 0, 0, 0, 831, 834, 1, 0, 0, 0, 832, 830, 1, 0, 0, 0, 832, 833, 1, 0, 0, 0, 833, 91, 1, 0, 0, 0, 834, 832, 1, 0, 0, 0, 835, 836, 5, 17, 0, 0, 836, 837, 3, 16, 8, 0, 837, 93, 1, 0, 0, 0, 838, 839, 5, 24, 0, 0, 839, 840, 3, 96, 48, 0, 840, 95, 1, 0, 0, 0, 841, 846, 3, 22, 11, 0, 842, 843, 5, 64, 0, 0, 843, 845, 3, 22, 11, 0, 844, 842, 1, 0, 0, 0, 845, 848, 1, 0, 0, 0, 846, 844, 1, 0, 0, 0, 846, 847, 1, 0, 0, 0, 847, 97, 1, 0, 0, 0, 848, 846, 1, 0, 0, 0, 849, 853, 5, 59, 0, 0, 850, 852, 3, 100, 50, 0, 851, 850, 1, 0, 0, 0, 852, 855, 1, 0, 0, 0, 853, 851, 1, 0, 0, 0, 853, 854, 1, 0, 0, 0, 854, 856, 1, 0, 0, 0, 855, 853, 1, 0, 0, 0, 856, 857, 5, 60, 0, 0, 857, 99, 1, 0, 0, 0, 858, 863, 3, 102, 51, 0, 859, 863, 3, 170, 85, 0, 860, 863, 3, 172, 86, 0, 861, 863, 3, 174, 87, 0, 862, 858, 1, 0, 0, 0, 862, 859, 1, 0, 0, 0, 862, 860, 1, 0, 0, 0, 862, 861, 1, 0, 0, 0, 863, 101, 1, 0, 0, 0, 864, 870, 3, 104, 52, 0, 865, 870, 3, 140, 70, 0, 866, 870, 3, 82, 41, 0, 867, 870, 3, 198, 99, 0, 868, 870, 5, 63, 0, 0, 869, 864, 1, 0, 0, 0, 869, 865, 1, 0, 0, 0, 869, 866, 1, 0, 0, 0, 869, 867, 1, 0, 0, 0, 869, 868, 1, 0, 0, 0, 870, 103, 1, 0, 0, 0, 871, 873, 3, 106, 53, 0, 872, 871, 1, 0, 0, 0, 873, 876, 1, 0, 0, 0, 874, 872, 1, 0, 0, 0, 874, 875, 1, 0, 0, 0, 875, 877, 1, 0, 0, 0, 876, 874, 1, 0, 0, 0, 877, 878, 3, 116, 58, 0, 878, 879, 3, 108, 54, 0, 879, 880, 5, 63, 0, 0, 880, 105, 1, 0, 0, 0, 881, 890, 3, 230, 115, 0, 882, 890, 5, 35, 0, 0, 883, 890, 5, 34, 0, 0, 884, 890, 5, 33, 0, 0, 885, 890, 5, 38, 0, 0, 886, 890, 5, 18, 0, 0, 887, 890, 5, 46, 0, 0, 888, 890, 5, 49, 0, 0, 889, 881, 1, 0, 0, 0, 889, 882, 1, 0, 0, 0, 889, 883, 1, 0, 0, 0, 889, 884, 1, 0, 0, 0, 889, 885, 1, 0, 0, 0, 889, 886, 1, 0, 0, 0, 889, 887, 1, 0, 0, 0, 889, 888, 1, 0, 0, 0, 890, 107, 1, 0, 0, 0, 891, 896, 3, 110, 55, 0, 892, 893, 5, 64, 0, 0, 893, 895, 3, 110, 55, 0, 894, 892, 1, 0, 0, 0, 895, 898, 1, 0, 0, 0, 896, 894, 1, 0, 0, 0, 896, 897, 1, 0, 0, 0, 897, 109, 1, 0, 0, 0, 898, 896, 1, 0, 0, 0, 899, 902, 3, 112, 56, 0, 900, 901, 5, 66, 0, 0, 901, 903, 3, 114, 57, 0, 902, 900, 1, 0, 0, 0, 902, 903, 1, 0, 0, 0, 903, 111, 1, 0, 0, 0, 904, 906, 5, 102, 0, 0, 905, 907, 3, 32, 16, 0, 906, 905, 1, 0, 0, 0, 906, 907, 1, 0, 0, 0, 907, 113, 1, 0, 0, 0, 908, 911, 3, 414, 207, 0, 909, 911, 3, 248, 124, 0, 910, 908, 1, 0, 0, 0, 910, 909, 1, 0, 0, 0, 911, 115, 1, 0, 0, 0, 912, 915, 3, 118, 59, 0, 913, 915, 3, 120, 60, 0, 914, 912, 1, 0, 0, 0, 914, 913, 1, 0, 0, 0, 915, 117, 1, 0, 0, 0, 916, 919, 3, 6, 3, 0, 917, 919, 5, 3, 0, 0, 918, 916, 1, 0, 0, 0, 918, 917, 1, 0, 0, 0, 919, 119, 1, 0, 0, 0, 920, 924, 3, 122, 61, 0, 921, 924, 3, 136, 68, 0, 922, 924, 3, 138, 69, 0, 923, 920, 1, 0, 0, 0, 923, 921, 1, 0, 0, 0, 923, 922, 1, 0, 0, 0, 924, 121, 1, 0, 0, 0, 925, 928, 3, 128, 64, 0, 926, 928, 3, 134, 67, 0, 927, 925, 1, 0, 0, 0, 927, 926, 1, 0, 0, 0, 928, 933, 1, 0, 0, 0, 929, 932, 3, 126, 63, 0, 930, 932, 3, 132, 66, 0, 931, 929, 1, 0, 0, 0, 931, 930, 1, 0, 0, 0, 932, 935, 1, 0, 0, 0, 933, 931, 1, 0, 0, 0, 933, 934, 1, 0, 0, 0, 934, 123, 1, 0, 0, 0, 935, 933, 1, 0, 0, 0, 936, 938, 5, 102, 0, 0, 937, 939, 3, 42, 21, 0, 938, 937, 1, 0, 0, 0, 938, 939, 1, 0, 0, 0, 939, 953, 1, 0, 0, 0, 940, 941, 3, 122, 61, 0, 941, 945, 5, 65, 0, 0, 942, 944, 3, 230, 115, 0, 943, 942, 1, 0, 0, 0, 944, 947, 1, 0, 0, 0, 945, 943, 1, 0, 0, 0, 945, 946, 1, 0, 0, 0, 946, 948, 1, 0, 0, 0, 947, 945, 1, 0, 0, 0, 948, 950, 5, 102, 0, 0, 949, 951, 3, 42, 21, 0, 950, 949, 1, 0, 0, 0, 950, 951, 1, 0, 0, 0, 951, 953, 1, 0, 0, 0, 952, 936, 1, 0, 0, 0, 952, 940, 1, 0, 0, 0, 953, 125, 1, 0, 0, 0, 954, 958, 5, 65, 0, 0, 955, 957, 3, 230, 115, 0, 956, 955, 1, 0, 0, 0, 957, 960, 1, 0, 0, 0, 958, 956, 1, 0, 0, 0, 958, 959, 1, 0, 0, 0, 959, 961, 1, 0, 0, 0, 960, 958, 1, 0, 0, 0, 961, 963, 5, 102, 0, 0, 962, 964, 3, 42, 21, 0, 963, 962, 1, 0, 0, 0, 963, 964, 1, 0, 0, 0, 964, 127, 1, 0, 0, 0, 965, 967, 5, 102, 0, 0, 966, 968, 3, 42, 21, 0, 967, 966, 1, 0, 0, 0, 967, 968, 1, 0, 0, 0, 968, 129, 1, 0, 0, 0, 969, 970, 3, 124, 62, 0, 970, 131, 1, 0, 0, 0, 971, 972, 3, 126, 63, 0, 972, 133, 1, 0, 0, 0, 973, 974, 3, 128, 64, 0, 974, 135, 1, 0, 0, 0, 975, 976, 5, 102, 0, 0, 976, 137, 1, 0, 0, 0, 977, 978, 3, 118, 59, 0, 978, 979, 3, 32, 16, 0, 979, 987, 1, 0, 0, 0, 980, 981, 3, 122, 61, 0, 981, 982, 3, 32, 16, 0, 982, 987, 1, 0, 0, 0, 983, 984, 3, 136, 68, 0, 984, 985, 3, 32, 16, 0, 985, 987, 1, 0, 0, 0, 986, 977, 1, 0, 0, 0, 986, 980, 1, 0, 0, 0, 986, 983, 1, 0, 0, 0, 987, 139, 1, 0, 0, 0, 988, 990, 3, 142, 71, 0, 989, 988, 1, 0, 0, 0, 990, 993, 1, 0, 0, 0, 991, 989, 1, 0, 0, 0, 991, 992, 1, 0, 0, 0, 992, 994, 1, 0, 0, 0, 993, 991, 1, 0, 0, 0, 994, 995, 3, 144, 72, 0, 995, 996, 3, 168, 84, 0, 996, 141, 1, 0, 0, 0, 997, 1008, 3, 230, 115, 0, 998, 1008, 5, 35, 0, 0, 999, 1008, 5, 34, 0, 0, 1000, 1008, 5, 33, 0, 0, 1001, 1008, 5, 1, 0, 0, 1002, 1008, 5, 38, 0, 0, 1003, 1008, 5, 18, 0, 0, 1004, 1008, 5, 42, 0, 0, 1005, 1008, 5, 30, 0, 0, 1006, 1008, 5, 39, 0, 0, 1007, 997, 1, 0, 0, 0, 1007, 998, 1, 0, 0, 0, 1007, 999, 1, 0, 0, 0, 1007, 1000, 1, 0, 0, 0, 1007, 1001, 1, 0, 0, 0, 1007, 1002, 1, 0, 0, 0, 1007, 1003, 1, 0, 0, 0, 1007, 1004, 1, 0, 0, 0, 1007, 1005, 1, 0, 0, 0, 1007, 1006, 1, 0, 0, 0, 1008, 143, 1, 0, 0, 0, 1009, 1010, 3, 146, 73, 0, 1010, 1012, 3, 148, 74, 0, 1011, 1013, 3, 162, 81, 0, 1012, 1011, 1, 0, 0, 0, 1012, 1013, 1, 0, 0, 0, 1013, 1027, 1, 0, 0, 0, 1014, 1018, 3, 88, 44, 0, 1015, 1017, 3, 230, 115, 0, 1016, 1015, 1, 0, 0, 0, 1017, 1020, 1, 0, 0, 0, 1018, 1016, 1, 0, 0, 0, 1018, 1019, 1, 0, 0, 0, 1019, 1021, 1, 0, 0, 0, 1020, 1018, 1, 0, 0, 0, 1021, 1022, 3, 146, 73, 0, 1022, 1024, 3, 148, 74, 0, 1023, 1025, 3, 162, 81, 0, 1024, 1023, 1, 0, 0, 0, 1024, 1025, 1, 0, 0, 0, 1025, 1027, 1, 0, 0, 0, 1026, 1009, 1, 0, 0, 0, 1026, 1014, 1, 0, 0, 0, 1027, 145, 1, 0, 0, 0, 1028, 1031, 3, 116, 58, 0, 1029, 1031, 5, 48, 0, 0, 1030, 1028, 1, 0, 0, 0, 1030, 1029, 1, 0, 0, 0, 1031, 147, 1, 0, 0, 0, 1032, 1033, 5, 102, 0, 0, 1033, 1035, 5, 57, 0, 0, 1034, 1036, 3, 150, 75, 0, 1035, 1034, 1, 0, 0, 0, 1035, 1036, 1, 0, 0, 0, 1036, 1037, 1, 0, 0, 0, 1037, 1039, 5, 58, 0, 0, 1038, 1040, 3, 32, 16, 0, 1039, 1038, 1, 0, 0, 0, 1039, 1040, 1, 0, 0, 0, 1040, 149, 1, 0, 0, 0, 1041, 1042, 3, 152, 76, 0, 1042, 1043, 5, 64, 0, 0, 1043, 1044, 3, 158, 79, 0, 1044, 1047, 1, 0, 0, 0, 1045, 1047, 3, 158, 79, 0, 1046, 1041, 1, 0, 0, 0, 1046, 1045, 1, 0, 0, 0, 1047, 151, 1, 0, 0, 0, 1048, 1053, 3, 154, 77, 0, 1049, 1050, 5, 64, 0, 0, 1050, 1052, 3, 154, 77, 0, 1051, 1049, 1, 0, 0, 0, 1052, 1055, 1, 0, 0, 0, 1053, 1051, 1, 0, 0, 0, 1053, 1054, 1, 0, 0, 0, 1054, 1065, 1, 0, 0, 0, 1055, 1053, 1, 0, 0, 0, 1056, 1061, 3, 160, 80, 0, 1057, 1058, 5, 64, 0, 0, 1058, 1060, 3, 154, 77, 0, 1059, 1057, 1, 0, 0, 0, 1060, 1063, 1, 0, 0, 0, 1061, 1059, 1, 0, 0, 0, 1061, 1062, 1, 0, 0, 0, 1062, 1065, 1, 0, 0, 0, 1063, 1061, 1, 0, 0, 0, 1064, 1048, 1, 0, 0, 0, 1064, 1056, 1, 0, 0, 0, 1065, 153, 1, 0, 0, 0, 1066, 1068, 3, 156, 78, 0, 1067, 1066, 1, 0, 0, 0, 1068, 1071, 1, 0, 0, 0, 1069, 1067, 1, 0, 0, 0, 1069, 1070, 1, 0, 0, 0, 1070, 1072, 1, 0, 0, 0, 1071, 1069, 1, 0, 0, 0, 1072, 1073, 3, 116, 58, 0, 1073, 1074, 3, 112, 56, 0, 1074, 155, 1, 0, 0, 0, 1075, 1078, 3, 230, 115, 0, 1076, 1078, 5, 18, 0, 0, 1077, 1075, 1, 0, 0, 0, 1077, 1076, 1, 0, 0, 0, 1078, 157, 1, 0, 0, 0, 1079, 1081, 3, 156, 78, 0, 1080, 1079, 1, 0, 0, 0, 1081, 1084, 1, 0, 0, 0, 1082, 1080, 1, 0, 0, 0, 1082, 1083, 1, 0, 0, 0, 1083, 1085, 1, 0, 0, 0, 1084, 1082, 1, 0, 0, 0, 1085, 1089, 3, 116, 58, 0, 1086, 1088, 3, 230, 115, 0, 1087, 1086, 1, 0, 0, 0, 1088, 1091, 1, 0, 0, 0, 1089, 1087, 1, 0, 0, 0, 1089, 1090, 1, 0, 0, 0, 1090, 1092, 1, 0, 0, 0, 1091, 1089, 1, 0, 0, 0, 1092, 1093, 5, 104, 0, 0, 1093, 1094, 3, 112, 56, 0, 1094, 1097, 1, 0, 0, 0, 1095, 1097, 3, 154, 77, 0, 1096, 1082, 1, 0, 0, 0, 1096, 1095, 1, 0, 0, 0, 1097, 159, 1, 0, 0, 0, 1098, 1100, 3, 230, 115, 0, 1099, 1098, 1, 0, 0, 0, 1100, 1103, 1, 0, 0, 0, 1101, 1099, 1, 0, 0, 0, 1101, 1102, 1, 0, 0, 0, 1102, 1104, 1, 0, 0, 0, 1103, 1101, 1, 0, 0, 0, 1104, 1107, 3, 116, 58, 0, 1105, 1106, 5, 102, 0, 0, 1106, 1108, 5, 65, 0, 0, 1107, 1105, 1, 0, 0, 0, 1107, 1108, 1, 0, 0, 0, 1108, 1109, 1, 0, 0, 0, 1109, 1110, 5, 43, 0, 0, 1110, 161, 1, 0, 0, 0, 1111, 1112, 5, 45, 0, 0, 1112, 1113, 3, 164, 82, 0, 1113, 163, 1, 0, 0, 0, 1114, 1119, 3, 166, 83, 0, 1115, 1116, 5, 64, 0, 0, 1116, 1118, 3, 166, 83, 0, 1117, 1115, 1, 0, 0, 0, 1118, 1121, 1, 0, 0, 0, 1119, 1117, 1, 0, 0, 0, 1119, 1120, 1, 0, 0, 0, 1120, 165, 1, 0, 0, 0, 1121, 1119, 1, 0, 0, 0, 1122, 1125, 3, 16, 8, 0, 1123, 1125, 3, 28, 14, 0, 1124, 1122, 1, 0, 0, 0, 1124, 1123, 1, 0, 0, 0, 1125, 167, 1, 0, 0, 0, 1126, 1129, 3, 252, 126, 0, 1127, 1129, 5, 63, 0, 0, 1128, 1126, 1, 0, 0, 0, 1128, 1127, 1, 0, 0, 0, 1129, 169, 1, 0, 0, 0, 1130, 1131, 3, 252, 126, 0, 1131, 171, 1, 0, 0, 0, 1132, 1133, 5, 38, 0, 0, 1133, 1134, 3, 252, 126, 0, 1134, 173, 1, 0, 0, 0, 1135, 1137, 3, 176, 88, 0, 1136, 1135, 1, 0, 0, 0, 1137, 1140, 1, 0, 0, 0, 1138, 1136, 1, 0, 0, 0, 1138, 1139, 1, 0, 0, 0, 1139, 1141, 1, 0, 0, 0, 1140, 1138, 1, 0, 0, 0, 1141, 1143, 3, 178, 89, 0, 1142, 1144, 3, 162, 81, 0, 1143, 1142, 1, 0, 0, 0, 1143, 1144, 1, 0, 0, 0, 1144, 1145, 1, 0, 0, 0, 1145, 1146, 3, 182, 91, 0, 1146, 175, 1, 0, 0, 0, 1147, 1152, 3, 230, 115, 0, 1148, 1152, 5, 35, 0, 0, 1149, 1152, 5, 34, 0, 0, 1150, 1152, 5, 33, 0, 0, 1151, 1147, 1, 0, 0, 0, 1151, 1148, 1, 0, 0, 0, 1151, 1149, 1, 0, 0, 0, 1151, 1150, 1, 0, 0, 0, 1152, 177, 1, 0, 0, 0, 1153, 1155, 3, 88, 44, 0, 1154, 1153, 1, 0, 0, 0, 1154, 1155, 1, 0, 0, 0, 1155, 1156, 1, 0, 0, 0, 1156, 1157, 3, 180, 90, 0, 1157, 1159, 5, 57, 0, 0, 1158, 1160, 3, 150, 75, 0, 1159, 1158, 1, 0, 0, 0, 1159, 1160, 1, 0, 0, 0, 1160, 1161, 1, 0, 0, 0, 1161, 1162, 5, 58, 0, 0, 1162, 179, 1, 0, 0, 0, 1163, 1164, 5, 102, 0, 0, 1164, 181, 1, 0, 0, 0, 1165, 1167, 5, 59, 0, 0, 1166, 1168, 3, 184, 92, 0, 1167, 1166, 1, 0, 0, 0, 1167, 1168, 1, 0, 0, 0, 1168, 1170, 1, 0, 0, 0, 1169, 1171, 3, 254, 127, 0, 1170, 1169, 1, 0, 0, 0, 1170, 1171, 1, 0, 0, 0, 1171, 1172, 1, 0, 0, 0, 1172, 1173, 5, 60, 0, 0, 1173, 183, 1, 0, 0, 0, 1174, 1176, 3, 42, 21, 0, 1175, 1174, 1, 0, 0, 0, 1175, 1176, 1, 0, 0, 0, 1176, 1177, 1, 0, 0, 0, 1177, 1178, 5, 43, 0, 0, 1178, 1180, 5, 57, 0, 0, 1179, 1181, 3, 398, 199, 0, 1180, 1179, 1, 0, 0, 0, 1180, 1181, 1, 0, 0, 0, 1181, 1182, 1, 0, 0, 0, 1182, 1183, 5, 58, 0, 0, 1183, 1221, 5, 63, 0, 0, 1184, 1186, 3, 42, 21, 0, 1185, 1184, 1, 0, 0, 0, 1185, 1186, 1, 0, 0, 0, 1186, 1187, 1, 0, 0, 0, 1187, 1188, 5, 40, 0, 0, 1188, 1190, 5, 57, 0, 0, 1189, 1191, 3, 398, 199, 0, 1190, 1189, 1, 0, 0, 0, 1190, 1191, 1, 0, 0, 0, 1191, 1192, 1, 0, 0, 0, 1192, 1193, 5, 58, 0, 0, 1193, 1221, 5, 63, 0, 0, 1194, 1195, 3, 58, 29, 0, 1195, 1197, 5, 65, 0, 0, 1196, 1198, 3, 42, 21, 0, 1197, 1196, 1, 0, 0, 0, 1197, 1198, 1, 0, 0, 0, 1198, 1199, 1, 0, 0, 0, 1199, 1200, 5, 40, 0, 0, 1200, 1202, 5, 57, 0, 0, 1201, 1203, 3, 398, 199, 0, 1202, 1201, 1, 0, 0, 0, 1202, 1203, 1, 0, 0, 0, 1203, 1204, 1, 0, 0, 0, 1204, 1205, 5, 58, 0, 0, 1205, 1206, 5, 63, 0, 0, 1206, 1221, 1, 0, 0, 0, 1207, 1208, 3, 352, 176, 0, 1208, 1210, 5, 65, 0, 0, 1209, 1211, 3, 42, 21, 0, 1210, 1209, 1, 0, 0, 0, 1210, 1211, 1, 0, 0, 0, 1211, 1212, 1, 0, 0, 0, 1212, 1213, 5, 40, 0, 0, 1213, 1215, 5, 57, 0, 0, 1214, 1216, 3, 398, 199, 0, 1215, 1214, 1, 0, 0, 0, 1215, 1216, 1, 0, 0, 0, 1216, 1217, 1, 0, 0, 0, 1217, 1218, 5, 58, 0, 0, 1218, 1219, 5, 63, 0, 0, 1219, 1221, 1, 0, 0, 0, 1220, 1175, 1, 0, 0, 0, 1220, 1185, 1, 0, 0, 0, 1220, 1194, 1, 0, 0, 0, 1220, 1207, 1, 0, 0, 0, 1221, 185, 1, 0, 0, 0, 1222, 1224, 3, 86, 43, 0, 1223, 1222, 1, 0, 0, 0, 1224, 1227, 1, 0, 0, 0, 1225, 1223, 1, 0, 0, 0, 1225, 1226, 1, 0, 0, 0, 1226, 1228, 1, 0, 0, 0, 1227, 1225, 1, 0, 0, 0, 1228, 1229, 5, 16, 0, 0, 1229, 1231, 5, 102, 0, 0, 1230, 1232, 3, 94, 47, 0, 1231, 1230, 1, 0, 0, 0, 1231, 1232, 1, 0, 0, 0, 1232, 1233, 1, 0, 0, 0, 1233, 1234, 3, 188, 94, 0, 1234, 187, 1, 0, 0, 0, 1235, 1237, 5, 59, 0, 0, 1236, 1238, 3, 190, 95, 0, 1237, 1236, 1, 0, 0, 0, 1237, 1238, 1, 0, 0, 0, 1238, 1240, 1, 0, 0, 0, 1239, 1241, 5, 64, 0, 0, 1240, 1239, 1, 0, 0, 0, 1240, 1241, 1, 0, 0, 0, 1241, 1243, 1, 0, 0, 0, 1242, 1244, 3, 196, 98, 0, 1243, 1242, 1, 0, 0, 0, 1243, 1244, 1, 0, 0, 0, 1244, 1245, 1, 0, 0, 0, 1245, 1246, 5, 60, 0, 0, 1246, 189, 1, 0, 0, 0, 1247, 1252, 3, 192, 96, 0, 1248, 1249, 5, 64, 0, 0, 1249, 1251, 3, 192, 96, 0, 1250, 1248, 1, 0, 0, 0, 1251, 1254, 1, 0, 0, 0, 1252, 1250, 1, 0, 0, 0, 1252, 1253, 1, 0, 0, 0, 1253, 191, 1, 0, 0, 0, 1254, 1252, 1, 0, 0, 0, 1255, 1257, 3, 194, 97, 0, 1256, 1255, 1, 0, 0, 0, 1257, 1260, 1, 0, 0, 0, 1258, 1256, 1, 0, 0, 0, 1258, 1259, 1, 0, 0, 0, 1259, 1261, 1, 0, 0, 0, 1260, 1258, 1, 0, 0, 0, 1261, 1267, 5, 102, 0, 0, 1262, 1264, 5, 57, 0, 0, 1263, 1265, 3, 398, 199, 0, 1264, 1263, 1, 0, 0, 0, 1264, 1265, 1, 0, 0, 0, 1265, 1266, 1, 0, 0, 0, 1266, 1268, 5, 58, 0, 0, 1267, 1262, 1, 0, 0, 0, 1267, 1268, 1, 0, 0, 0, 1268, 1270, 1, 0, 0, 0, 1269, 1271, 3, 98, 49, 0, 1270, 1269, 1, 0, 0, 0, 1270, 1271, 1, 0, 0, 0, 1271, 193, 1, 0, 0, 0, 1272, 1273, 3, 230, 115, 0, 1273, 195, 1, 0, 0, 0, 1274, 1278, 5, 63, 0, 0, 1275, 1277, 3, 100, 50, 0, 1276, 1275, 1, 0, 0, 0, 1277, 1280, 1, 0, 0, 0, 1278, 1276, 1, 0, 0, 0, 1278, 1279, 1, 0, 0, 0, 1279, 197, 1, 0, 0, 0, 1280, 1278, 1, 0, 0, 0, 1281, 1284, 3, 200, 100, 0, 1282, 1284, 3, 218, 109, 0, 1283, 1281, 1, 0, 0, 0, 1283, 1282, 1, 0, 0, 0, 1284, 199, 1, 0, 0, 0, 1285, 1287, 3, 202, 101, 0, 1286, 1285, 1, 0, 0, 0, 1287, 1290, 1, 0, 0, 0, 1288, 1286, 1, 0, 0, 0, 1288, 1289, 1, 0, 0, 0, 1289, 1291, 1, 0, 0, 0, 1290, 1288, 1, 0, 0, 0, 1291, 1292, 5, 28, 0, 0, 1292, 1294, 5, 102, 0, 0, 1293, 1295, 3, 88, 44, 0, 1294, 1293, 1, 0, 0, 0, 1294, 1295, 1, 0, 0, 0, 1295, 1297, 1, 0, 0, 0, 1296, 1298, 3, 204, 102, 0, 1297, 1296, 1, 0, 0, 0, 1297, 1298, 1, 0, 0, 0, 1298, 1299, 1, 0, 0, 0, 1299, 1300, 3, 206, 103, 0, 1300, 201, 1, 0, 0, 0, 1301, 1309, 3, 230, 115, 0, 1302, 1309, 5, 35, 0, 0, 1303, 1309, 5, 34, 0, 0, 1304, 1309, 5, 33, 0, 0, 1305, 1309, 5, 1, 0, 0, 1306, 1309, 5, 38, 0, 0, 1307, 1309, 5, 39, 0, 0, 1308, 1301, 1, 0, 0, 0, 1308, 1302, 1, 0, 0, 0, 1308, 1303, 1, 0, 0, 0, 1308, 1304, 1, 0, 0, 0, 1308, 1305, 1, 0, 0, 0, 1308, 1306, 1, 0, 0, 0, 1308, 1307, 1, 0, 0, 0, 1309, 203, 1, 0, 0, 0, 1310, 1311, 5, 17, 0, 0, 1311, 1312, 3, 96, 48, 0, 1312, 205, 1, 0, 0, 0, 1313, 1317, 5, 59, 0, 0, 1314, 1316, 3, 208, 104, 0, 1315, 1314, 1, 0, 0, 0, 1316, 1319, 1, 0, 0, 0, 1317, 1315, 1, 0, 0, 0, 1317, 1318, 1, 0, 0, 0, 1318, 1320, 1, 0, 0, 0, 1319, 1317, 1, 0, 0, 0, 1320, 1321, 5, 60, 0, 0, 1321, 207, 1, 0, 0, 0, 1322, 1328, 3, 210, 105, 0, 1323, 1328, 3, 214, 107, 0, 1324, 1328, 3, 82, 41, 0, 1325, 1328, 3, 198, 99, 0, 1326, 1328, 5, 63, 0, 0, 1327, 1322, 1, 0, 0, 0, 1327, 1323, 1, 0, 0, 0, 1327, 1324, 1, 0, 0, 0, 1327, 1325, 1, 0, 0, 0, 1327, 1326, 1, 0, 0, 0, 1328, 209, 1, 0, 0, 0, 1329, 1331, 3, 212, 106, 0, 1330, 1329, 1, 0, 0, 0, 1331, 1334, 1, 0, 0, 0, 1332, 1330, 1, 0, 0, 0, 1332, 1333, 1, 0, 0, 0, 1333, 1335, 1, 0, 0, 0, 1334, 1332, 1, 0, 0, 0, 1335, 1336, 3, 116, 58, 0, 1336, 1337, 3, 108, 54, 0, 1337, 1338, 5, 63, 0, 0, 1338, 211, 1, 0, 0, 0, 1339, 1344, 3, 230, 115, 0, 1340, 1344, 5, 35, 0, 0, 1341, 1344, 5, 38, 0, 0, 1342, 1344, 5, 18, 0, 0, 1343, 1339, 1, 0, 0, 0, 1343, 1340, 1, 0, 0, 0, 1343, 1341, 1, 0, 0, 0, 1343, 1342, 1, 0, 0, 0, 1344, 213, 1, 0, 0, 0, 1345, 1347, 3, 216, 108, 0, 1346, 1345, 1, 0, 0, 0, 1347, 1350, 1, 0, 0, 0, 1348, 1346, 1, 0, 0, 0, 1348, 1349, 1, 0, 0, 0, 1349, 1351, 1, 0, 0, 0, 1350, 1348, 1, 0, 0, 0, 1351, 1352, 3, 144, 72, 0, 1352, 1353, 3, 168, 84, 0, 1353, 215, 1, 0, 0, 0, 1354, 1361, 3, 230, 115, 0, 1355, 1361, 5, 35, 0, 0, 1356, 1361, 5, 1, 0, 0, 1357, 1361, 5, 12, 0, 0, 1358, 1361, 5, 38, 0, 0, 1359, 1361, 5, 39, 0, 0, 1360, 1354, 1, 0, 0, 0, 1360, 1355, 1, 0, 0, 0, 1360, 1356, 1, 0, 0, 0, 1360, 1357, 1, 0, 0, 0, 1360, 1358, 1, 0, 0, 0, 1360, 1359, 1, 0, 0, 0, 1361, 217, 1, 0, 0, 0, 1362, 1364, 3, 202, 101, 0, 1363, 1362, 1, 0, 0, 0, 1364, 1367, 1, 0, 0, 0, 1365, 1363, 1, 0, 0, 0, 1365, 1366, 1, 0, 0, 0, 1366, 1368, 1, 0, 0, 0, 1367, 1365, 1, 0, 0, 0, 1368, 1369, 5, 103, 0, 0, 1369, 1370, 5, 28, 0, 0, 1370, 1371, 5, 102, 0, 0, 1371, 1372, 3, 220, 110, 0, 1372, 219, 1, 0, 0, 0, 1373, 1377, 5, 59, 0, 0, 1374, 1376, 3, 222, 111, 0, 1375, 1374, 1, 0, 0, 0, 1376, 1379, 1, 0, 0, 0, 1377, 1375, 1, 0, 0, 0, 1377, 1378, 1, 0, 0, 0, 1378, 1380, 1, 0, 0, 0, 1379, 1377, 1, 0, 0, 0, 1380, 1381, 5, 60, 0, 0, 1381, 221, 1, 0, 0, 0, 1382, 1388, 3, 224, 112, 0, 1383, 1388, 3, 210, 105, 0, 1384, 1388, 3, 82, 41, 0, 1385, 1388, 3, 198, 99, 0, 1386, 1388, 5, 63, 0, 0, 1387, 1382, 1, 0, 0, 0, 1387, 1383, 1, 0, 0, 0, 1387, 1384, 1, 0, 0, 0, 1387, 1385, 1, 0, 0, 0, 1387, 1386, 1, 0, 0, 0, 1388, 223, 1, 0, 0, 0, 1389, 1391, 3, 226, 113, 0, 1390, 1389, 1, 0, 0, 0, 1391, 1394, 1, 0, 0, 0, 1392, 1390, 1, 0, 0, 0, 1392, 1393, 1, 0, 0, 0, 1393, 1395, 1, 0, 0, 0, 1394, 1392, 1, 0, 0, 0, 1395, 1396, 3, 116, 58, 0, 1396, 1397, 5, 102, 0, 0, 1397, 1398, 5, 57, 0, 0, 1398, 1400, 5, 58, 0, 0, 1399, 1401, 3, 32, 16, 0, 1400, 1399, 1, 0, 0, 0, 1400, 1401, 1, 0, 0, 0, 1401, 1403, 1, 0, 0, 0, 1402, 1404, 3, 228, 114, 0, 1403, 1402, 1, 0, 0, 0, 1403, 1404, 1, 0, 0, 0, 1404, 1405, 1, 0, 0, 0, 1405, 1406, 5, 63, 0, 0, 1406, 225, 1, 0, 0, 0, 1407, 1411, 3, 230, 115, 0, 1408, 1411, 5, 35, 0, 0, 1409, 1411, 5, 1, 0, 0, 1410, 1407, 1, 0, 0, 0, 1410, 1408, 1, 0, 0, 0, 1410, 1409, 1, 0, 0, 0, 1411, 227, 1, 0, 0, 0, 1412, 1413, 5, 12, 0, 0, 1413, 1414, 3, 238, 119, 0, 1414, 229, 1, 0, 0, 0, 1415, 1419, 3, 232, 116, 0, 1416, 1419, 3, 244, 122, 0, 1417, 1419, 3, 246, 123, 0, 1418, 1415, 1, 0, 0, 0, 1418, 1416, 1, 0, 0, 0, 1418, 1417, 1, 0, 0, 0, 1419, 231, 1, 0, 0, 0, 1420, 1421, 5, 103, 0, 0, 1421, 1422, 3, 54, 27, 0, 1422, 1424, 5, 57, 0, 0, 1423, 1425, 3, 234, 117, 0, 1424, 1423, 1, 0, 0, 0, 1424, 1425, 1, 0, 0, 0, 1425, 1426, 1, 0, 0, 0, 1426, 1427, 5, 58, 0, 0, 1427, 233, 1, 0, 0, 0, 1428, 1433, 3, 236, 118, 0, 1429, 1430, 5, 64, 0, 0, 1430, 1432, 3, 236, 118, 0, 1431, 1429, 1, 0, 0, 0, 1432, 1435, 1, 0, 0, 0, 1433, 1431, 1, 0, 0, 0, 1433, 1434, 1, 0, 0, 0, 1434, 235, 1, 0, 0, 0, 1435, 1433, 1, 0, 0, 0, 1436, 1437, 5, 102, 0, 0, 1437, 1438, 5, 66, 0, 0, 1438, 1439, 3, 238, 119, 0, 1439, 237, 1, 0, 0, 0, 1440, 1444, 3, 432, 216, 0, 1441, 1444, 3, 240, 120, 0, 1442, 1444, 3, 230, 115, 0, 1443, 1440, 1, 0, 0, 0, 1443, 1441, 1, 0, 0, 0, 1443, 1442, 1, 0, 0, 0, 1444, 239, 1, 0, 0, 0, 1445, 1447, 5, 59, 0, 0, 1446, 1448, 3, 242, 121, 0, 1447, 1446, 1, 0, 0, 0, 1447, 1448, 1, 0, 0, 0, 1448, 1450, 1, 0, 0, 0, 1449, 1451, 5, 64, 0, 0, 1450, 1449, 1, 0, 0, 0, 1450, 1451, 1, 0, 0, 0, 1451, 1452, 1, 0, 0, 0, 1452, 1453, 5, 60, 0, 0, 1453, 241, 1, 0, 0, 0, 1454, 1459, 3, 238, 119, 0, 1455, 1456, 5, 64, 0, 0, 1456, 1458, 3, 238, 119, 0, 1457, 1455, 1, 0, 0, 0, 1458, 1461, 1, 0, 0, 0, 1459, 1457, 1, 0, 0, 0, 1459, 1460, 1, 0, 0, 0, 1460, 243, 1, 0, 0, 0, 1461, 1459, 1, 0, 0, 0, 1462, 1463, 5, 103, 0, 0, 1463, 1464, 3, 54, 27, 0, 1464, 245, 1, 0, 0, 0, 1465, 1466, 5, 103, 0, 0, 1466, 1467, 3, 54, 27, 0, 1467, 1468, 5, 57, 0, 0, 1468, 1469, 3, 238, 119, 0, 1469, 1470, 5, 58, 0, 0, 1470, 247, 1, 0, 0, 0, 1471, 1473, 5, 59, 0, 0, 1472, 1474, 3, 250, 125, 0, 1473, 1472, 1, 0, 0, 0, 1473, 1474, 1, 0, 0, 0, 1474, 1476, 1, 0, 0, 0, 1475, 1477, 5, 64, 0, 0, 1476, 1475, 1, 0, 0, 0, 1476, 1477, 1, 0, 0, 0, 1477, 1478, 1, 0, 0, 0, 1478, 1479, 5, 60, 0, 0, 1479, 249, 1, 0, 0, 0, 1480, 1485, 3, 114, 57, 0, 1481, 1482, 5, 64, 0, 0, 1482, 1484, 3, 114, 57, 0, 1483, 1481, 1, 0, 0, 0, 1484, 1487, 1, 0, 0, 0, 1485, 1483, 1, 0, 0, 0, 1485, 1486, 1, 0, 0, 0, 1486, 251, 1, 0, 0, 0, 1487, 1485, 1, 0, 0, 0, 1488, 1490, 5, 59, 0, 0, 1489, 1491, 3, 254, 127, 0, 1490, 1489, 1, 0, 0, 0, 1490, 1491, 1, 0, 0, 0, 1491, 1492, 1, 0, 0, 0, 1492, 1493, 5, 60, 0, 0, 1493, 253, 1, 0, 0, 0, 1494, 1498, 3, 256, 128, 0, 1495, 1497, 3, 256, 128, 0, 1496, 1495, 1, 0, 0, 0, 1497, 1500, 1, 0, 0, 0, 1498, 1496, 1, 0, 0, 0, 1498, 1499, 1, 0, 0, 0, 1499, 255, 1, 0, 0, 0, 1500, 1498, 1, 0, 0, 0, 1501, 1505, 3, 258, 129, 0, 1502, 1505, 3, 82, 41, 0, 1503, 1505, 3, 262, 131, 0, 1504, 1501, 1, 0, 0, 0, 1504, 1502, 1, 0, 0, 0, 1504, 1503, 1, 0, 0, 0, 1505, 257, 1, 0, 0, 0, 1506, 1507, 3, 260, 130, 0, 1507, 1508, 5, 63, 0, 0, 1508, 259, 1, 0, 0, 0, 1509, 1511, 3, 156, 78, 0, 1510, 1509, 1, 0, 0, 0, 1511, 1514, 1, 0, 0, 0, 1512, 1510, 1, 0, 0, 0, 1512, 1513, 1, 0, 0, 0, 1513, 1515, 1, 0, 0, 0, 1514, 1512, 1, 0, 0, 0, 1515, 1516, 3, 116, 58, 0, 1516, 1517, 3, 108, 54, 0, 1517, 261, 1, 0, 0, 0, 1518, 1525, 3, 266, 133, 0, 1519, 1525, 3, 270, 135, 0, 1520, 1525, 3, 278, 139, 0, 1521, 1525, 3, 280, 140, 0, 1522, 1525, 3, 298, 149, 0, 1523, 1525, 3, 304, 152, 0, 1524, 1518, 1, 0, 0, 0, 1524, 1519, 1, 0, 0, 0, 1524, 1520, 1, 0, 0, 0, 1524, 1521, 1, 0, 0, 0, 1524, 1522, 1, 0, 0, 0, 1524, 1523, 1, 0, 0, 0, 1525, 263, 1, 0, 0, 0, 1526, 1532, 3, 266, 133, 0, 1527, 1532, 3, 272, 136, 0, 1528, 1532, 3, 282, 141, 0, 1529, 1532, 3, 300, 150, 0, 1530, 1532, 3, 306, 153, 0, 1531, 1526, 1, 0, 0, 0, 1531, 1527, 1, 0, 0, 0, 1531, 1528, 1, 0, 0, 0, 1531, 1529, 1, 0, 0, 0, 1531, 1530, 1, 0, 0, 0, 1532, 265, 1, 0, 0, 0, 1533, 1546, 3, 252, 126, 0, 1534, 1546, 3, 268, 134, 0, 1535, 1546, 3, 274, 137, 0, 1536, 1546, 3, 284, 142, 0, 1537, 1546, 3, 286, 143, 0, 1538, 1546, 3, 302, 151, 0, 1539, 1546, 3, 322, 161, 0, 1540, 1546, 3, 324, 162, 0, 1541, 1546, 3, 326, 163, 0, 1542, 1546, 3, 330, 165, 0, 1543, 1546, 3, 328, 164, 0, 1544, 1546, 3, 332, 166, 0, 1545, 1533, 1, 0, 0, 0, 1545, 1534, 1, 0, 0, 0, 1545, 1535, 1, 0, 0, 0, 1545, 1536, 1, 0, 0, 0, 1545, 1537, 1, 0, 0, 0, 1545, 1538, 1, 0, 0, 0, 1545, 1539, 1, 0, 0, 0, 1545, 1540, 1, 0, 0, 0, 1545, 1541, 1, 0, 0, 0, 1545, 1542, 1, 0, 0, 0, 1545, 1543, 1, 0, 0, 0, 1545, 1544, 1, 0, 0, 0, 1546, 267, 1, 0, 0, 0, 1547, 1548, 5, 63, 0, 0, 1548, 269, 1, 0, 0, 0, 1549, 1550, 5, 102, 0, 0, 1550, 1551, 5, 72, 0, 0, 1551, 1552, 3, 262, 131, 0, 1552, 271, 1, 0, 0, 0, 1553, 1554, 5, 102, 0, 0, 1554, 1555, 5, 72, 0, 0, 1555, 1556, 3, 264, 132, 0, 1556, 273, 1, 0, 0, 0, 1557, 1558, 3, 276, 138, 0, 1558, 1559, 5, 63, 0, 0, 1559, 275, 1, 0, 0, 0, 1560, 1568, 3, 426, 213, 0, 1561, 1568, 3, 456, 228, 0, 1562, 1568, 3, 458, 229, 0, 1563, 1568, 3, 464, 232, 0, 1564, 1568, 3, 468, 234, 0, 1565, 1568, 3, 392, 196, 0, 1566, 1568, 3, 372, 186, 0, 1567, 1560, 1, 0, 0, 0, 1567, 1561, 1, 0, 0, 0, 1567, 1562, 1, 0, 0, 0, 1567, 1563, 1, 0, 0, 0, 1567, 1564, 1, 0, 0, 0, 1567, 1565, 1, 0, 0, 0, 1567, 1566, 1, 0, 0, 0, 1568, 277, 1, 0, 0, 0, 1569, 1570, 5, 22, 0, 0, 1570, 1571, 5, 57, 0, 0, 1571, 1572, 3, 414, 207, 0, 1572, 1573, 5, 58, 0, 0, 1573, 1574, 3, 262, 131, 0, 1574, 279, 1, 0, 0, 0, 1575, 1576, 5, 22, 0, 0, 1576, 1577, 5, 57, 0, 0, 1577, 1578, 3, 414, 207, 0, 1578, 1579, 5, 58, 0, 0, 1579, 1580, 3, 264, 132, 0, 1580, 1581, 5, 15, 0, 0, 1581, 1582, 3, 262, 131, 0, 1582, 281, 1, 0, 0, 0, 1583, 1584, 5, 22, 0, 0, 1584, 1585, 5, 57, 0, 0, 1585, 1586, 3, 414, 207, 0, 1586, 1587, 5, 58, 0, 0, 1587, 1588, 3, 264, 132, 0, 1588, 1589, 5, 15, 0, 0, 1589, 1590, 3, 264, 132, 0, 1590, 283, 1, 0, 0, 0, 1591, 1592, 5, 2, 0, 0, 1592, 1593, 3, 414, 207, 0, 1593, 1594, 5, 63, 0, 0, 1594, 1602, 1, 0, 0, 0, 1595, 1596, 5, 2, 0, 0, 1596, 1597, 3, 414, 207, 0, 1597, 1598, 5, 72, 0, 0, 1598, 1599, 3, 414, 207, 0, 1599, 1600, 5, 63, 0, 0, 1600, 1602, 1, 0, 0, 0, 1601, 1591, 1, 0, 0, 0, 1601, 1595, 1, 0, 0, 0, 1602, 285, 1, 0, 0, 0, 1603, 1604, 5, 41, 0, 0, 1604, 1605, 5, 57, 0, 0, 1605, 1606, 3, 414, 207, 0, 1606, 1607, 5, 58, 0, 0, 1607, 1608, 3, 288, 144, 0, 1608, 287, 1, 0, 0, 0, 1609, 1613, 5, 59, 0, 0, 1610, 1612, 3, 290, 145, 0, 1611, 1610, 1, 0, 0, 0, 1612, 1615, 1, 0, 0, 0, 1613, 1611, 1, 0, 0, 0, 1613, 1614, 1, 0, 0, 0, 1614, 1619, 1, 0, 0, 0, 1615, 1613, 1, 0, 0, 0, 1616, 1618, 3, 294, 147, 0, 1617, 1616, 1, 0, 0, 0, 1618, 1621, 1, 0, 0, 0, 1619, 1617, 1, 0, 0, 0, 1619, 1620, 1, 0, 0, 0, 1620, 1622, 1, 0, 0, 0, 1621, 1619, 1, 0, 0, 0, 1622, 1623, 5, 60, 0, 0, 1623, 289, 1, 0, 0, 0, 1624, 1625, 3, 292, 146, 0, 1625, 1626, 3, 254, 127, 0, 1626, 291, 1, 0, 0, 0, 1627, 1631, 3, 294, 147, 0, 1628, 1630, 3, 294, 147, 0, 1629, 1628, 1, 0, 0, 0, 1630, 1633, 1, 0, 0, 0, 1631, 1629, 1, 0, 0, 0, 1631, 1632, 1, 0, 0, 0, 1632, 293, 1, 0, 0, 0, 1633, 1631, 1, 0, 0, 0, 1634, 1635, 5, 6, 0, 0, 1635, 1636, 3, 412, 206, 0, 1636, 1637, 5, 72, 0, 0, 1637, 1645, 1, 0, 0, 0, 1638, 1639, 5, 6, 0, 0, 1639, 1640, 3, 296, 148, 0, 1640, 1641, 5, 72, 0, 0, 1641, 1645, 1, 0, 0, 0, 1642, 1643, 5, 12, 0, 0, 1643, 1645, 5, 72, 0, 0, 1644, 1634, 1, 0, 0, 0, 1644, 1638, 1, 0, 0, 0, 1644, 1642, 1, 0, 0, 0, 1645, 295, 1, 0, 0, 0, 1646, 1647, 5, 102, 0, 0, 1647, 297, 1, 0, 0, 0, 1648, 1649, 5, 50, 0, 0, 1649, 1650, 5, 57, 0, 0, 1650, 1651, 3, 414, 207, 0, 1651, 1652, 5, 58, 0, 0, 1652, 1653, 3, 262, 131, 0, 1653, 299, 1, 0, 0, 0, 1654, 1655, 5, 50, 0, 0, 1655, 1656, 5, 57, 0, 0, 1656, 1657, 3, 414, 207, 0, 1657, 1658, 5, 58, 0, 0, 1658, 1659, 3, 264, 132, 0, 1659, 301, 1, 0, 0, 0, 1660, 1661, 5, 13, 0, 0, 1661, 1662, 3, 262, 131, 0, 1662, 1663, 5, 50, 0, 0, 1663, 1664, 5, 57, 0, 0, 1664, 1665, 3, 414, 207, 0, 1665, 1666, 5, 58, 0, 0, 1666, 1667, 5, 63, 0, 0, 1667, 303, 1, 0, 0, 0, 1668, 1671, 3, 308, 154, 0, 1669, 1671, 3, 318, 159, 0, 1670, 1668, 1, 0, 0, 0, 1670, 1669, 1, 0, 0, 0, 1671, 305, 1, 0, 0, 0, 1672, 1675, 3, 310, 155, 0, 1673, 1675, 3, 320, 160, 0, 1674, 1672, 1, 0, 0, 0, 1674, 1673, 1, 0, 0, 0, 1675, 307, 1, 0, 0, 0, 1676, 1677, 5, 21, 0, 0, 1677, 1679, 5, 57, 0, 0, 1678, 1680, 3, 312, 156, 0, 1679, 1678, 1, 0, 0, 0, 1679, 1680, 1, 0, 0, 0, 1680, 1681, 1, 0, 0, 0, 1681, 1683, 5, 63, 0, 0, 1682, 1684, 3, 414, 207, 0, 1683, 1682, 1, 0, 0, 0, 1683, 1684, 1, 0, 0, 0, 1684, 1685, 1, 0, 0, 0, 1685, 1687, 5, 63, 0, 0, 1686, 1688, 3, 314, 157, 0, 1687, 1686, 1, 0, 0, 0, 1687, 1688, 1, 0, 0, 0, 1688, 1689, 1, 0, 0, 0, 1689, 1690, 5, 58, 0, 0, 1690, 1691, 3, 262, 131, 0, 1691, 309, 1, 0, 0, 0, 1692, 1693, 5, 21, 0, 0, 1693, 1695, 5, 57, 0, 0, 1694, 1696, 3, 312, 156, 0, 1695, 1694, 1, 0, 0, 0, 1695, 1696, 1, 0, 0, 0, 1696, 1697, 1, 0, 0, 0, 1697, 1699, 5, 63, 0, 0, 1698, 1700, 3, 414, 207, 0, 1699, 1698, 1, 0, 0, 0, 1699, 1700, 1, 0, 0, 0, 1700, 1701, 1, 0, 0, 0, 1701, 1703, 5, 63, 0, 0, 1702, 1704, 3, 314, 157, 0, 1703, 1702, 1, 0, 0, 0, 1703, 1704, 1, 0, 0, 0, 1704, 1705, 1, 0, 0, 0, 1705, 1706, 5, 58, 0, 0, 1706, 1707, 3, 264, 132, 0, 1707, 311, 1, 0, 0, 0, 1708, 1711, 3, 316, 158, 0, 1709, 1711, 3, 260, 130, 0, 1710, 1708, 1, 0, 0, 0, 1710, 1709, 1, 0, 0, 0, 1711, 313, 1, 0, 0, 0, 1712, 1713, 3, 316, 158, 0, 1713, 315, 1, 0, 0, 0, 1714, 1719, 3, 276, 138, 0, 1715, 1716, 5, 64, 0, 0, 1716, 1718, 3, 276, 138, 0, 1717, 1715, 1, 0, 0, 0, 1718, 1721, 1, 0, 0, 0, 1719, 1717, 1, 0, 0, 0, 1719, 1720, 1, 0, 0, 0, 1720, 317, 1, 0, 0, 0, 1721, 1719, 1, 0, 0, 0, 1722, 1723, 5, 21, 0, 0, 1723, 1727, 5, 57, 0, 0, 1724, 1726, 3, 156, 78, 0, 1725, 1724, 1, 0, 0, 0, 1726, 1729, 1, 0, 0, 0, 1727, 1725, 1, 0, 0, 0, 1727, 1728, 1, 0, 0, 0, 1728, 1730, 1, 0, 0, 0, 1729, 1727, 1, 0, 0, 0, 1730, 1731, 3, 116, 58, 0, 1731, 1732, 3, 112, 56, 0, 1732, 1733, 5, 72, 0, 0, 1733, 1734, 3, 414, 207, 0, 1734, 1735, 5, 58, 0, 0, 1735, 1736, 3, 262, 131, 0, 1736, 319, 1, 0, 0, 0, 1737, 1738, 5, 21, 0, 0, 1738, 1742, 5, 57, 0, 0, 1739, 1741, 3, 156, 78, 0, 1740, 1739, 1, 0, 0, 0, 1741, 1744, 1, 0, 0, 0, 1742, 1740, 1, 0, 0, 0, 1742, 1743, 1, 0, 0, 0, 1743, 1745, 1, 0, 0, 0, 1744, 1742, 1, 0, 0, 0, 1745, 1746, 3, 116, 58, 0, 1746, 1747, 3, 112, 56, 0, 1747, 1748, 5, 72, 0, 0, 1748, 1749, 3, 414, 207, 0, 1749, 1750, 5, 58, 0, 0, 1750, 1751, 3, 264, 132, 0, 1751, 321, 1, 0, 0, 0, 1752, 1754, 5, 4, 0, 0, 1753, 1755, 5, 102, 0, 0, 1754, 1753, 1, 0, 0, 0, 1754, 1755, 1, 0, 0, 0, 1755, 1756, 1, 0, 0, 0, 1756, 1757, 5, 63, 0, 0, 1757, 323, 1, 0, 0, 0, 1758, 1760, 5, 11, 0, 0, 1759, 1761, 5, 102, 0, 0, 1760, 1759, 1, 0, 0, 0, 1760, 1761, 1, 0, 0, 0, 1761, 1762, 1, 0, 0, 0, 1762, 1763, 5, 63, 0, 0, 1763, 325, 1, 0, 0, 0, 1764, 1766, 5, 36, 0, 0, 1765, 1767, 3, 414, 207, 0, 1766, 1765, 1, 0, 0, 0, 1766, 1767, 1, 0, 0, 0, 1767, 1768, 1, 0, 0, 0, 1768, 1769, 5, 63, 0, 0, 1769, 327, 1, 0, 0, 0, 1770, 1771, 5, 44, 0, 0, 1771, 1772, 3, 414, 207, 0, 1772, 1773, 5, 63, 0, 0, 1773, 329, 1, 0, 0, 0, 1774, 1775, 5, 42, 0, 0, 1775, 1776, 5, 57, 0, 0, 1776, 1777, 3, 414, 207, 0, 1777, 1778, 5, 58, 0, 0, 1778, 1779, 3, 252, 126, 0, 1779, 331, 1, 0, 0, 0, 1780, 1781, 5, 47, 0, 0, 1781, 1782, 3, 252, 126, 0, 1782, 1783, 3, 334, 167, 0, 1783, 1793, 1, 0, 0, 0, 1784, 1785, 5, 47, 0, 0, 1785, 1787, 3, 252, 126, 0, 1786, 1788, 3, 334, 167, 0, 1787, 1786, 1, 0, 0, 0, 1787, 1788, 1, 0, 0, 0, 1788, 1789, 1, 0, 0, 0, 1789, 1790, 3, 342, 171, 0, 1790, 1793, 1, 0, 0, 0, 1791, 1793, 3, 344, 172, 0, 1792, 1780, 1, 0, 0, 0, 1792, 1784, 1, 0, 0, 0, 1792, 1791, 1, 0, 0, 0, 1793, 333, 1, 0, 0, 0, 1794, 1798, 3, 336, 168, 0, 1795, 1797, 3, 336, 168, 0, 1796, 1795, 1, 0, 0, 0, 1797, 1800, 1, 0, 0, 0, 1798, 1796, 1, 0, 0, 0, 1798, 1799, 1, 0, 0, 0, 1799, 335, 1, 0, 0, 0, 1800, 1798, 1, 0, 0, 0, 1801, 1802, 5, 7, 0, 0, 1802, 1803, 5, 57, 0, 0, 1803, 1804, 3, 338, 169, 0, 1804, 1805, 5, 58, 0, 0, 1805, 1806, 3, 252, 126, 0, 1806, 337, 1, 0, 0, 0, 1807, 1809, 3, 156, 78, 0, 1808, 1807, 1, 0, 0, 0, 1809, 1812, 1, 0, 0, 0, 1810, 1808, 1, 0, 0, 0, 1810, 1811, 1, 0, 0, 0, 1811, 1813, 1, 0, 0, 0, 1812, 1810, 1, 0, 0, 0, 1813, 1814, 3, 340, 170, 0, 1814, 1815, 3, 112, 56, 0, 1815, 339, 1, 0, 0, 0, 1816, 1821, 3, 124, 62, 0, 1817, 1818, 5, 86, 0, 0, 1818, 1820, 3, 16, 8, 0, 1819, 1817, 1, 0, 0, 0, 1820, 1823, 1, 0, 0, 0, 1821, 1819, 1, 0, 0, 0, 1821, 1822, 1, 0, 0, 0, 1822, 341, 1, 0, 0, 0, 1823, 1821, 1, 0, 0, 0, 1824, 1825, 5, 19, 0, 0, 1825, 1826, 3, 252, 126, 0, 1826, 343, 1, 0, 0, 0, 1827, 1828, 5, 47, 0, 0, 1828, 1829, 3, 346, 173, 0, 1829, 1831, 3, 252, 126, 0, 1830, 1832, 3, 334, 167, 0, 1831, 1830, 1, 0, 0, 0, 1831, 1832, 1, 0, 0, 0, 1832, 1834, 1, 0, 0, 0, 1833, 1835, 3, 342, 171, 0, 1834, 1833, 1, 0, 0, 0, 1834, 1835, 1, 0, 0, 0, 1835, 345, 1, 0, 0, 0, 1836, 1837, 5, 57, 0, 0, 1837, 1839, 3, 348, 174, 0, 1838, 1840, 5, 63, 0, 0, 1839, 1838, 1, 0, 0, 0, 1839, 1840, 1, 0, 0, 0, 1840, 1841, 1, 0, 0, 0, 1841, 1842, 5, 58, 0, 0, 1842, 347, 1, 0, 0, 0, 1843, 1848, 3, 350, 175, 0, 1844, 1845, 5, 63, 0, 0, 1845, 1847, 3, 350, 175, 0, 1846, 1844, 1, 0, 0, 0, 1847, 1850, 1, 0, 0, 0, 1848, 1846, 1, 0, 0, 0, 1848, 1849, 1, 0, 0, 0, 1849, 349, 1, 0, 0, 0, 1850, 1848, 1, 0, 0, 0, 1851, 1853, 3, 156, 78, 0, 1852, 1851, 1, 0, 0, 0, 1853, 1856, 1, 0, 0, 0, 1854, 1852, 1, 0, 0, 0, 1854, 1855, 1, 0, 0, 0, 1855, 1857, 1, 0, 0, 0, 1856, 1854, 1, 0, 0, 0, 1857, 1858, 3, 116, 58, 0, 1858, 1859, 3, 112, 56, 0, 1859, 1860, 5, 66, 0, 0, 1860, 1861, 3, 414, 207, 0, 1861, 351, 1, 0, 0, 0, 1862, 1865, 3, 366, 183, 0, 1863, 1865, 3, 406, 203, 0, 1864, 1862, 1, 0, 0, 0, 1864, 1863, 1, 0, 0, 0, 1865, 1869, 1, 0, 0, 0, 1866, 1868, 3, 360, 180, 0, 1867, 1866, 1, 0, 0, 0, 1868, 1871, 1, 0, 0, 0, 1869, 1867, 1, 0, 0, 0, 1869, 1870, 1, 0, 0, 0, 1870, 353, 1, 0, 0, 0, 1871, 1869, 1, 0, 0, 0, 1872, 1902, 3, 0, 0, 0, 1873, 1878, 3, 54, 27, 0, 1874, 1875, 5, 61, 0, 0, 1875, 1877, 5, 62, 0, 0, 1876, 1874, 1, 0, 0, 0, 1877, 1880, 1, 0, 0, 0, 1878, 1876, 1, 0, 0, 0, 1878, 1879, 1, 0, 0, 0, 1879, 1881, 1, 0, 0, 0, 1880, 1878, 1, 0, 0, 0, 1881, 1882, 5, 65, 0, 0, 1882, 1883, 5, 9, 0, 0, 1883, 1902, 1, 0, 0, 0, 1884, 1885, 5, 48, 0, 0, 1885, 1886, 5, 65, 0, 0, 1886, 1902, 5, 9, 0, 0, 1887, 1902, 5, 43, 0, 0, 1888, 1889, 3, 54, 27, 0, 1889, 1890, 5, 65, 0, 0, 1890, 1891, 5, 43, 0, 0, 1891, 1902, 1, 0, 0, 0, 1892, 1893, 5, 57, 0, 0, 1893, 1894, 3, 414, 207, 0, 1894, 1895, 5, 58, 0, 0, 1895, 1902, 1, 0, 0, 0, 1896, 1902, 3, 372, 186, 0, 1897, 1902, 3, 380, 190, 0, 1898, 1902, 3, 386, 193, 0, 1899, 1902, 3, 392, 196, 0, 1900, 1902, 3, 400, 200, 0, 1901, 1872, 1, 0, 0, 0, 1901, 1873, 1, 0, 0, 0, 1901, 1884, 1, 0, 0, 0, 1901, 1887, 1, 0, 0, 0, 1901, 1888, 1, 0, 0, 0, 1901, 1892, 1, 0, 0, 0, 1901, 1896, 1, 0, 0, 0, 1901, 1897, 1, 0, 0, 0, 1901, 1898, 1, 0, 0, 0, 1901, 1899, 1, 0, 0, 0, 1901, 1900, 1, 0, 0, 0, 1902, 355, 1, 0, 0, 0, 1903, 1904, 1, 0, 0, 0, 1904, 357, 1, 0, 0, 0, 1905, 1934, 3, 0, 0, 0, 1906, 1911, 3, 54, 27, 0, 1907, 1908, 5, 61, 0, 0, 1908, 1910, 5, 62, 0, 0, 1909, 1907, 1, 0, 0, 0, 1910, 1913, 1, 0, 0, 0, 1911, 1909, 1, 0, 0, 0, 1911, 1912, 1, 0, 0, 0, 1912, 1914, 1, 0, 0, 0, 1913, 1911, 1, 0, 0, 0, 1914, 1915, 5, 65, 0, 0, 1915, 1916, 5, 9, 0, 0, 1916, 1934, 1, 0, 0, 0, 1917, 1918, 5, 48, 0, 0, 1918, 1919, 5, 65, 0, 0, 1919, 1934, 5, 9, 0, 0, 1920, 1934, 5, 43, 0, 0, 1921, 1922, 3, 54, 27, 0, 1922, 1923, 5, 65, 0, 0, 1923, 1924, 5, 43, 0, 0, 1924, 1934, 1, 0, 0, 0, 1925, 1926, 5, 57, 0, 0, 1926, 1927, 3, 414, 207, 0, 1927, 1928, 5, 58, 0, 0, 1928, 1934, 1, 0, 0, 0, 1929, 1934, 3, 372, 186, 0, 1930, 1934, 3, 380, 190, 0, 1931, 1934, 3, 392, 196, 0, 1932, 1934, 3, 400, 200, 0, 1933, 1905, 1, 0, 0, 0, 1933, 1906, 1, 0, 0, 0, 1933, 1917, 1, 0, 0, 0, 1933, 1920, 1, 0, 0, 0, 1933, 1921, 1, 0, 0, 0, 1933, 1925, 1, 0, 0, 0, 1933, 1929, 1, 0, 0, 0, 1933, 1930, 1, 0, 0, 0, 1933, 1931, 1, 0, 0, 0, 1933, 1932, 1, 0, 0, 0, 1934, 359, 1, 0, 0, 0, 1935, 1941, 3, 374, 187, 0, 1936, 1941, 3, 382, 191, 0, 1937, 1941, 3, 388, 194, 0, 1938, 1941, 3, 394, 197, 0, 1939, 1941, 3, 402, 201, 0, 1940, 1935, 1, 0, 0, 0, 1940, 1936, 1, 0, 0, 0, 1940, 1937, 1, 0, 0, 0, 1940, 1938, 1, 0, 0, 0, 1940, 1939, 1, 0, 0, 0, 1941, 361, 1, 0, 0, 0, 1942, 1943, 1, 0, 0, 0, 1943, 363, 1, 0, 0, 0, 1944, 1949, 3, 374, 187, 0, 1945, 1949, 3, 382, 191, 0, 1946, 1949, 3, 394, 197, 0, 1947, 1949, 3, 402, 201, 0, 1948, 1944, 1, 0, 0, 0, 1948, 1945, 1, 0, 0, 0, 1948, 1946, 1, 0, 0, 0, 1948, 1947, 1, 0, 0, 0, 1949, 365, 1, 0, 0, 0, 1950, 1991, 3, 0, 0, 0, 1951, 1956, 3, 54, 27, 0, 1952, 1953, 5, 61, 0, 0, 1953, 1955, 5, 62, 0, 0, 1954, 1952, 1, 0, 0, 0, 1955, 1958, 1, 0, 0, 0, 1956, 1954, 1, 0, 0, 0, 1956, 1957, 1, 0, 0, 0, 1957, 1959, 1, 0, 0, 0, 1958, 1956, 1, 0, 0, 0, 1959, 1960, 5, 65, 0, 0, 1960, 1961, 5, 9, 0, 0, 1961, 1991, 1, 0, 0, 0, 1962, 1967, 3, 118, 59, 0, 1963, 1964, 5, 61, 0, 0, 1964, 1966, 5, 62, 0, 0, 1965, 1963, 1, 0, 0, 0, 1966, 1969, 1, 0, 0, 0, 1967, 1965, 1, 0, 0, 0, 1967, 1968, 1, 0, 0, 0, 1968, 1970, 1, 0, 0, 0, 1969, 1967, 1, 0, 0, 0, 1970, 1971, 5, 65, 0, 0, 1971, 1972, 5, 9, 0, 0, 1972, 1991, 1, 0, 0, 0, 1973, 1974, 5, 48, 0, 0, 1974, 1975, 5, 65, 0, 0, 1975, 1991, 5, 9, 0, 0, 1976, 1991, 5, 43, 0, 0, 1977, 1978, 3, 54, 27, 0, 1978, 1979, 5, 65, 0, 0, 1979, 1980, 5, 43, 0, 0, 1980, 1991, 1, 0, 0, 0, 1981, 1982, 5, 57, 0, 0, 1982, 1983, 3, 414, 207, 0, 1983, 1984, 5, 58, 0, 0, 1984, 1991, 1, 0, 0, 0, 1985, 1991, 3, 376, 188, 0, 1986, 1991, 3, 384, 192, 0, 1987, 1991, 3, 390, 195, 0, 1988, 1991, 3, 396, 198, 0, 1989, 1991, 3, 404, 202, 0, 1990, 1950, 1, 0, 0, 0, 1990, 1951, 1, 0, 0, 0, 1990, 1962, 1, 0, 0, 0, 1990, 1973, 1, 0, 0, 0, 1990, 1976, 1, 0, 0, 0, 1990, 1977, 1, 0, 0, 0, 1990, 1981, 1, 0, 0, 0, 1990, 1985, 1, 0, 0, 0, 1990, 1986, 1, 0, 0, 0, 1990, 1987, 1, 0, 0, 0, 1990, 1988, 1, 0, 0, 0, 1990, 1989, 1, 0, 0, 0, 1991, 367, 1, 0, 0, 0, 1992, 1993, 1, 0, 0, 0, 1993, 369, 1, 0, 0, 0, 1994, 2034, 3, 0, 0, 0, 1995, 2000, 3, 54, 27, 0, 1996, 1997, 5, 61, 0, 0, 1997, 1999, 5, 62, 0, 0, 1998, 1996, 1, 0, 0, 0, 1999, 2002, 1, 0, 0, 0, 2000, 1998, 1, 0, 0, 0, 2000, 2001, 1, 0, 0, 0, 2001, 2003, 1, 0, 0, 0, 2002, 2000, 1, 0, 0, 0, 2003, 2004, 5, 65, 0, 0, 2004, 2005, 5, 9, 0, 0, 2005, 2034, 1, 0, 0, 0, 2006, 2011, 3, 118, 59, 0, 2007, 2008, 5, 61, 0, 0, 2008, 2010, 5, 62, 0, 0, 2009, 2007, 1, 0, 0, 0, 2010, 2013, 1, 0, 0, 0, 2011, 2009, 1, 0, 0, 0, 2011, 2012, 1, 0, 0, 0, 2012, 2014, 1, 0, 0, 0, 2013, 2011, 1, 0, 0, 0, 2014, 2015, 5, 65, 0, 0, 2015, 2016, 5, 9, 0, 0, 2016, 2034, 1, 0, 0, 0, 2017, 2018, 5, 48, 0, 0, 2018, 2019, 5, 65, 0, 0, 2019, 2034, 5, 9, 0, 0, 2020, 2034, 5, 43, 0, 0, 2021, 2022, 3, 54, 27, 0, 2022, 2023, 5, 65, 0, 0, 2023, 2024, 5, 43, 0, 0, 2024, 2034, 1, 0, 0, 0, 2025, 2026, 5, 57, 0, 0, 2026, 2027, 3, 414, 207, 0, 2027, 2028, 5, 58, 0, 0, 2028, 2034, 1, 0, 0, 0, 2029, 2034, 3, 376, 188, 0, 2030, 2034, 3, 384, 192, 0, 2031, 2034, 3, 396, 198, 0, 2032, 2034, 3, 404, 202, 0, 2033, 1994, 1, 0, 0, 0, 2033, 1995, 1, 0, 0, 0, 2033, 2006, 1, 0, 0, 0, 2033, 2017, 1, 0, 0, 0, 2033, 2020, 1, 0, 0, 0, 2033, 2021, 1, 0, 0, 0, 2033, 2025, 1, 0, 0, 0, 2033, 2029, 1, 0, 0, 0, 2033, 2030, 1, 0, 0, 0, 2033, 2031, 1, 0, 0, 0, 2033, 2032, 1, 0, 0, 0, 2034, 371, 1, 0, 0, 0, 2035, 2037, 5, 31, 0, 0, 2036, 2038, 3, 42, 21, 0, 2037, 2036, 1, 0, 0, 0, 2037, 2038, 1, 0, 0, 0, 2038, 2042, 1, 0, 0, 0, 2039, 2041, 3, 230, 115, 0, 2040, 2039, 1, 0, 0, 0, 2041, 2044, 1, 0, 0, 0, 2042, 2040, 1, 0, 0, 0, 2042, 2043, 1, 0, 0, 0, 2043, 2045, 1, 0, 0, 0, 2044, 2042, 1, 0, 0, 0, 2045, 2056, 5, 102, 0, 0, 2046, 2050, 5, 65, 0, 0, 2047, 2049, 3, 230, 115, 0, 2048, 2047, 1, 0, 0, 0, 2049, 2052, 1, 0, 0, 0, 2050, 2048, 1, 0, 0, 0, 2050, 2051, 1, 0, 0, 0, 2051, 2053, 1, 0, 0, 0, 2052, 2050, 1, 0, 0, 0, 2053, 2055, 5, 102, 0, 0, 2054, 2046, 1, 0, 0, 0, 2055, 2058, 1, 0, 0, 0, 2056, 2054, 1, 0, 0, 0, 2056, 2057, 1, 0, 0, 0, 2057, 2060, 1, 0, 0, 0, 2058, 2056, 1, 0, 0, 0, 2059, 2061, 3, 378, 189, 0, 2060, 2059, 1, 0, 0, 0, 2060, 2061, 1, 0, 0, 0, 2061, 2062, 1, 0, 0, 0, 2062, 2064, 5, 57, 0, 0, 2063, 2065, 3, 398, 199, 0, 2064, 2063, 1, 0, 0, 0, 2064, 2065, 1, 0, 0, 0, 2065, 2066, 1, 0, 0, 0, 2066, 2068, 5, 58, 0, 0, 2067, 2069, 3, 98, 49, 0, 2068, 2067, 1, 0, 0, 0, 2068, 2069, 1, 0, 0, 0, 2069, 2119, 1, 0, 0, 0, 2070, 2071, 3, 58, 29, 0, 2071, 2072, 5, 65, 0, 0, 2072, 2074, 5, 31, 0, 0, 2073, 2075, 3, 42, 21, 0, 2074, 2073, 1, 0, 0, 0, 2074, 2075, 1, 0, 0, 0, 2075, 2079, 1, 0, 0, 0, 2076, 2078, 3, 230, 115, 0, 2077, 2076, 1, 0, 0, 0, 2078, 2081, 1, 0, 0, 0, 2079, 2077, 1, 0, 0, 0, 2079, 2080, 1, 0, 0, 0, 2080, 2082, 1, 0, 0, 0, 2081, 2079, 1, 0, 0, 0, 2082, 2084, 5, 102, 0, 0, 2083, 2085, 3, 378, 189, 0, 2084, 2083, 1, 0, 0, 0, 2084, 2085, 1, 0, 0, 0, 2085, 2086, 1, 0, 0, 0, 2086, 2088, 5, 57, 0, 0, 2087, 2089, 3, 398, 199, 0, 2088, 2087, 1, 0, 0, 0, 2088, 2089, 1, 0, 0, 0, 2089, 2090, 1, 0, 0, 0, 2090, 2092, 5, 58, 0, 0, 2091, 2093, 3, 98, 49, 0, 2092, 2091, 1, 0, 0, 0, 2092, 2093, 1, 0, 0, 0, 2093, 2119, 1, 0, 0, 0, 2094, 2095, 3, 352, 176, 0, 2095, 2096, 5, 65, 0, 0, 2096, 2098, 5, 31, 0, 0, 2097, 2099, 3, 42, 21, 0, 2098, 2097, 1, 0, 0, 0, 2098, 2099, 1, 0, 0, 0, 2099, 2103, 1, 0, 0, 0, 2100, 2102, 3, 230, 115, 0, 2101, 2100, 1, 0, 0, 0, 2102, 2105, 1, 0, 0, 0, 2103, 2101, 1, 0, 0, 0, 2103, 2104, 1, 0, 0, 0, 2104, 2106, 1, 0, 0, 0, 2105, 2103, 1, 0, 0, 0, 2106, 2108, 5, 102, 0, 0, 2107, 2109, 3, 378, 189, 0, 2108, 2107, 1, 0, 0, 0, 2108, 2109, 1, 0, 0, 0, 2109, 2110, 1, 0, 0, 0, 2110, 2112, 5, 57, 0, 0, 2111, 2113, 3, 398, 199, 0, 2112, 2111, 1, 0, 0, 0, 2112, 2113, 1, 0, 0, 0, 2113, 2114, 1, 0, 0, 0, 2114, 2116, 5, 58, 0, 0, 2115, 2117, 3, 98, 49, 0, 2116, 2115, 1, 0, 0, 0, 2116, 2117, 1, 0, 0, 0, 2117, 2119, 1, 0, 0, 0, 2118, 2035, 1, 0, 0, 0, 2118, 2070, 1, 0, 0, 0, 2118, 2094, 1, 0, 0, 0, 2119, 373, 1, 0, 0, 0, 2120, 2121, 5, 65, 0, 0, 2121, 2123, 5, 31, 0, 0, 2122, 2124, 3, 42, 21, 0, 2123, 2122, 1, 0, 0, 0, 2123, 2124, 1, 0, 0, 0, 2124, 2128, 1, 0, 0, 0, 2125, 2127, 3, 230, 115, 0, 2126, 2125, 1, 0, 0, 0, 2127, 2130, 1, 0, 0, 0, 2128, 2126, 1, 0, 0, 0, 2128, 2129, 1, 0, 0, 0, 2129, 2131, 1, 0, 0, 0, 2130, 2128, 1, 0, 0, 0, 2131, 2133, 5, 102, 0, 0, 2132, 2134, 3, 378, 189, 0, 2133, 2132, 1, 0, 0, 0, 2133, 2134, 1, 0, 0, 0, 2134, 2135, 1, 0, 0, 0, 2135, 2137, 5, 57, 0, 0, 2136, 2138, 3, 398, 199, 0, 2137, 2136, 1, 0, 0, 0, 2137, 2138, 1, 0, 0, 0, 2138, 2139, 1, 0, 0, 0, 2139, 2141, 5, 58, 0, 0, 2140, 2142, 3, 98, 49, 0, 2141, 2140, 1, 0, 0, 0, 2141, 2142, 1, 0, 0, 0, 2142, 375, 1, 0, 0, 0, 2143, 2145, 5, 31, 0, 0, 2144, 2146, 3, 42, 21, 0, 2145, 2144, 1, 0, 0, 0, 2145, 2146, 1, 0, 0, 0, 2146, 2150, 1, 0, 0, 0, 2147, 2149, 3, 230, 115, 0, 2148, 2147, 1, 0, 0, 0, 2149, 2152, 1, 0, 0, 0, 2150, 2148, 1, 0, 0, 0, 2150, 2151, 1, 0, 0, 0, 2151, 2153, 1, 0, 0, 0, 2152, 2150, 1, 0, 0, 0, 2153, 2164, 5, 102, 0, 0, 2154, 2158, 5, 65, 0, 0, 2155, 2157, 3, 230, 115, 0, 2156, 2155, 1, 0, 0, 0, 2157, 2160, 1, 0, 0, 0, 2158, 2156, 1, 0, 0, 0, 2158, 2159, 1, 0, 0, 0, 2159, 2161, 1, 0, 0, 0, 2160, 2158, 1, 0, 0, 0, 2161, 2163, 5, 102, 0, 0, 2162, 2154, 1, 0, 0, 0, 2163, 2166, 1, 0, 0, 0, 2164, 2162, 1, 0, 0, 0, 2164, 2165, 1, 0, 0, 0, 2165, 2168, 1, 0, 0, 0, 2166, 2164, 1, 0, 0, 0, 2167, 2169, 3, 378, 189, 0, 2168, 2167, 1, 0, 0, 0, 2168, 2169, 1, 0, 0, 0, 2169, 2170, 1, 0, 0, 0, 2170, 2172, 5, 57, 0, 0, 2171, 2173, 3, 398, 199, 0, 2172, 2171, 1, 0, 0, 0, 2172, 2173, 1, 0, 0, 0, 2173, 2174, 1, 0, 0, 0, 2174, 2176, 5, 58, 0, 0, 2175, 2177, 3, 98, 49, 0, 2176, 2175, 1, 0, 0, 0, 2176, 2177, 1, 0, 0, 0, 2177, 2203, 1, 0, 0, 0, 2178, 2179, 3, 58, 29, 0, 2179, 2180, 5, 65, 0, 0, 2180, 2182, 5, 31, 0, 0, 2181, 2183, 3, 42, 21, 0, 2182, 2181, 1, 0, 0, 0, 2182, 2183, 1, 0, 0, 0, 2183, 2187, 1, 0, 0, 0, 2184, 2186, 3, 230, 115, 0, 2185, 2184, 1, 0, 0, 0, 2186, 2189, 1, 0, 0, 0, 2187, 2185, 1, 0, 0, 0, 2187, 2188, 1, 0, 0, 0, 2188, 2190, 1, 0, 0, 0, 2189, 2187, 1, 0, 0, 0, 2190, 2192, 5, 102, 0, 0, 2191, 2193, 3, 378, 189, 0, 2192, 2191, 1, 0, 0, 0, 2192, 2193, 1, 0, 0, 0, 2193, 2194, 1, 0, 0, 0, 2194, 2196, 5, 57, 0, 0, 2195, 2197, 3, 398, 199, 0, 2196, 2195, 1, 0, 0, 0, 2196, 2197, 1, 0, 0, 0, 2197, 2198, 1, 0, 0, 0, 2198, 2200, 5, 58, 0, 0, 2199, 2201, 3, 98, 49, 0, 2200, 2199, 1, 0, 0, 0, 2200, 2201, 1, 0, 0, 0, 2201, 2203, 1, 0, 0, 0, 2202, 2143, 1, 0, 0, 0, 2202, 2178, 1, 0, 0, 0, 2203, 377, 1, 0, 0, 0, 2204, 2208, 3, 42, 21, 0, 2205, 2206, 5, 68, 0, 0, 2206, 2208, 5, 67, 0, 0, 2207, 2204, 1, 0, 0, 0, 2207, 2205, 1, 0, 0, 0, 2208, 379, 1, 0, 0, 0, 2209, 2210, 3, 352, 176, 0, 2210, 2211, 5, 65, 0, 0, 2211, 2212, 5, 102, 0, 0, 2212, 2223, 1, 0, 0, 0, 2213, 2214, 5, 40, 0, 0, 2214, 2215, 5, 65, 0, 0, 2215, 2223, 5, 102, 0, 0, 2216, 2217, 3, 54, 27, 0, 2217, 2218, 5, 65, 0, 0, 2218, 2219, 5, 40, 0, 0, 2219, 2220, 5, 65, 0, 0, 2220, 2221, 5, 102, 0, 0, 2221, 2223, 1, 0, 0, 0, 2222, 2209, 1, 0, 0, 0, 2222, 2213, 1, 0, 0, 0, 2222, 2216, 1, 0, 0, 0, 2223, 381, 1, 0, 0, 0, 2224, 2225, 5, 65, 0, 0, 2225, 2226, 5, 102, 0, 0, 2226, 383, 1, 0, 0, 0, 2227, 2228, 5, 40, 0, 0, 2228, 2229, 5, 65, 0, 0, 2229, 2237, 5, 102, 0, 0, 2230, 2231, 3, 54, 27, 0, 2231, 2232, 5, 65, 0, 0, 2232, 2233, 5, 40, 0, 0, 2233, 2234, 5, 65, 0, 0, 2234, 2235, 5, 102, 0, 0, 2235, 2237, 1, 0, 0, 0, 2236, 2227, 1, 0, 0, 0, 2236, 2230, 1, 0, 0, 0, 2237, 385, 1, 0, 0, 0, 2238, 2239, 3, 58, 29, 0, 2239, 2240, 5, 61, 0, 0, 2240, 2241, 3, 414, 207, 0, 2241, 2242, 5, 62, 0, 0, 2242, 2249, 1, 0, 0, 0, 2243, 2244, 3, 358, 179, 0, 2244, 2245, 5, 61, 0, 0, 2245, 2246, 3, 414, 207, 0, 2246, 2247, 5, 62, 0, 0, 2247, 2249, 1, 0, 0, 0, 2248, 2238, 1, 0, 0, 0, 2248, 2243, 1, 0, 0, 0, 2249, 2257, 1, 0, 0, 0, 2250, 2251, 3, 356, 178, 0, 2251, 2252, 5, 61, 0, 0, 2252, 2253, 3, 414, 207, 0, 2253, 2254, 5, 62, 0, 0, 2254, 2256, 1, 0, 0, 0, 2255, 2250, 1, 0, 0, 0, 2256, 2259, 1, 0, 0, 0, 2257, 2255, 1, 0, 0, 0, 2257, 2258, 1, 0, 0, 0, 2258, 387, 1, 0, 0, 0, 2259, 2257, 1, 0, 0, 0, 2260, 2261, 3, 364, 182, 0, 2261, 2262, 5, 61, 0, 0, 2262, 2263, 3, 414, 207, 0, 2263, 2264, 5, 62, 0, 0, 2264, 2272, 1, 0, 0, 0, 2265, 2266, 3, 362, 181, 0, 2266, 2267, 5, 61, 0, 0, 2267, 2268, 3, 414, 207, 0, 2268, 2269, 5, 62, 0, 0, 2269, 2271, 1, 0, 0, 0, 2270, 2265, 1, 0, 0, 0, 2271, 2274, 1, 0, 0, 0, 2272, 2270, 1, 0, 0, 0, 2272, 2273, 1, 0, 0, 0, 2273, 389, 1, 0, 0, 0, 2274, 2272, 1, 0, 0, 0, 2275, 2276, 3, 58, 29, 0, 2276, 2277, 5, 61, 0, 0, 2277, 2278, 3, 414, 207, 0, 2278, 2279, 5, 62, 0, 0, 2279, 2286, 1, 0, 0, 0, 2280, 2281, 3, 370, 185, 0, 2281, 2282, 5, 61, 0, 0, 2282, 2283, 3, 414, 207, 0, 2283, 2284, 5, 62, 0, 0, 2284, 2286, 1, 0, 0, 0, 2285, 2275, 1, 0, 0, 0, 2285, 2280, 1, 0, 0, 0, 2286, 2294, 1, 0, 0, 0, 2287, 2288, 3, 368, 184, 0, 2288, 2289, 5, 61, 0, 0, 2289, 2290, 3, 414, 207, 0, 2290, 2291, 5, 62, 0, 0, 2291, 2293, 1, 0, 0, 0, 2292, 2287, 1, 0, 0, 0, 2293, 2296, 1, 0, 0, 0, 2294, 2292, 1, 0, 0, 0, 2294, 2295, 1, 0, 0, 0, 2295, 391, 1, 0, 0, 0, 2296, 2294, 1, 0, 0, 0, 2297, 2298, 3, 60, 30, 0, 2298, 2300, 5, 57, 0, 0, 2299, 2301, 3, 398, 199, 0, 2300, 2299, 1, 0, 0, 0, 2300, 2301, 1, 0, 0, 0, 2301, 2302, 1, 0, 0, 0, 2302, 2303, 5, 58, 0, 0, 2303, 2366, 1, 0, 0, 0, 2304, 2305, 3, 54, 27, 0, 2305, 2307, 5, 65, 0, 0, 2306, 2308, 3, 42, 21, 0, 2307, 2306, 1, 0, 0, 0, 2307, 2308, 1, 0, 0, 0, 2308, 2309, 1, 0, 0, 0, 2309, 2310, 5, 102, 0, 0, 2310, 2312, 5, 57, 0, 0, 2311, 2313, 3, 398, 199, 0, 2312, 2311, 1, 0, 0, 0, 2312, 2313, 1, 0, 0, 0, 2313, 2314, 1, 0, 0, 0, 2314, 2315, 5, 58, 0, 0, 2315, 2366, 1, 0, 0, 0, 2316, 2317, 3, 58, 29, 0, 2317, 2319, 5, 65, 0, 0, 2318, 2320, 3, 42, 21, 0, 2319, 2318, 1, 0, 0, 0, 2319, 2320, 1, 0, 0, 0, 2320, 2321, 1, 0, 0, 0, 2321, 2322, 5, 102, 0, 0, 2322, 2324, 5, 57, 0, 0, 2323, 2325, 3, 398, 199, 0, 2324, 2323, 1, 0, 0, 0, 2324, 2325, 1, 0, 0, 0, 2325, 2326, 1, 0, 0, 0, 2326, 2327, 5, 58, 0, 0, 2327, 2366, 1, 0, 0, 0, 2328, 2329, 3, 352, 176, 0, 2329, 2331, 5, 65, 0, 0, 2330, 2332, 3, 42, 21, 0, 2331, 2330, 1, 0, 0, 0, 2331, 2332, 1, 0, 0, 0, 2332, 2333, 1, 0, 0, 0, 2333, 2334, 5, 102, 0, 0, 2334, 2336, 5, 57, 0, 0, 2335, 2337, 3, 398, 199, 0, 2336, 2335, 1, 0, 0, 0, 2336, 2337, 1, 0, 0, 0, 2337, 2338, 1, 0, 0, 0, 2338, 2339, 5, 58, 0, 0, 2339, 2366, 1, 0, 0, 0, 2340, 2341, 5, 40, 0, 0, 2341, 2343, 5, 65, 0, 0, 2342, 2344, 3, 42, 21, 0, 2343, 2342, 1, 0, 0, 0, 2343, 2344, 1, 0, 0, 0, 2344, 2345, 1, 0, 0, 0, 2345, 2346, 5, 102, 0, 0, 2346, 2348, 5, 57, 0, 0, 2347, 2349, 3, 398, 199, 0, 2348, 2347, 1, 0, 0, 0, 2348, 2349, 1, 0, 0, 0, 2349, 2350, 1, 0, 0, 0, 2350, 2366, 5, 58, 0, 0, 2351, 2352, 3, 54, 27, 0, 2352, 2353, 5, 65, 0, 0, 2353, 2354, 5, 40, 0, 0, 2354, 2356, 5, 65, 0, 0, 2355, 2357, 3, 42, 21, 0, 2356, 2355, 1, 0, 0, 0, 2356, 2357, 1, 0, 0, 0, 2357, 2358, 1, 0, 0, 0, 2358, 2359, 5, 102, 0, 0, 2359, 2361, 5, 57, 0, 0, 2360, 2362, 3, 398, 199, 0, 2361, 2360, 1, 0, 0, 0, 2361, 2362, 1, 0, 0, 0, 2362, 2363, 1, 0, 0, 0, 2363, 2364, 5, 58, 0, 0, 2364, 2366, 1, 0, 0, 0, 2365, 2297, 1, 0, 0, 0, 2365, 2304, 1, 0, 0, 0, 2365, 2316, 1, 0, 0, 0, 2365, 2328, 1, 0, 0, 0, 2365, 2340, 1, 0, 0, 0, 2365, 2351, 1, 0, 0, 0, 2366, 393, 1, 0, 0, 0, 2367, 2369, 5, 65, 0, 0, 2368, 2370, 3, 42, 21, 0, 2369, 2368, 1, 0, 0, 0, 2369, 2370, 1, 0, 0, 0, 2370, 2371, 1, 0, 0, 0, 2371, 2372, 5, 102, 0, 0, 2372, 2374, 5, 57, 0, 0, 2373, 2375, 3, 398, 199, 0, 2374, 2373, 1, 0, 0, 0, 2374, 2375, 1, 0, 0, 0, 2375, 2376, 1, 0, 0, 0, 2376, 2377, 5, 58, 0, 0, 2377, 395, 1, 0, 0, 0, 2378, 2379, 3, 60, 30, 0, 2379, 2381, 5, 57, 0, 0, 2380, 2382, 3, 398, 199, 0, 2381, 2380, 1, 0, 0, 0, 2381, 2382, 1, 0, 0, 0, 2382, 2383, 1, 0, 0, 0, 2383, 2384, 5, 58, 0, 0, 2384, 2435, 1, 0, 0, 0, 2385, 2386, 3, 54, 27, 0, 2386, 2388, 5, 65, 0, 0, 2387, 2389, 3, 42, 21, 0, 2388, 2387, 1, 0, 0, 0, 2388, 2389, 1, 0, 0, 0, 2389, 2390, 1, 0, 0, 0, 2390, 2391, 5, 102, 0, 0, 2391, 2393, 5, 57, 0, 0, 2392, 2394, 3, 398, 199, 0, 2393, 2392, 1, 0, 0, 0, 2393, 2394, 1, 0, 0, 0, 2394, 2395, 1, 0, 0, 0, 2395, 2396, 5, 58, 0, 0, 2396, 2435, 1, 0, 0, 0, 2397, 2398, 3, 58, 29, 0, 2398, 2400, 5, 65, 0, 0, 2399, 2401, 3, 42, 21, 0, 2400, 2399, 1, 0, 0, 0, 2400, 2401, 1, 0, 0, 0, 2401, 2402, 1, 0, 0, 0, 2402, 2403, 5, 102, 0, 0, 2403, 2405, 5, 57, 0, 0, 2404, 2406, 3, 398, 199, 0, 2405, 2404, 1, 0, 0, 0, 2405, 2406, 1, 0, 0, 0, 2406, 2407, 1, 0, 0, 0, 2407, 2408, 5, 58, 0, 0, 2408, 2435, 1, 0, 0, 0, 2409, 2410, 5, 40, 0, 0, 2410, 2412, 5, 65, 0, 0, 2411, 2413, 3, 42, 21, 0, 2412, 2411, 1, 0, 0, 0, 2412, 2413, 1, 0, 0, 0, 2413, 2414, 1, 0, 0, 0, 2414, 2415, 5, 102, 0, 0, 2415, 2417, 5, 57, 0, 0, 2416, 2418, 3, 398, 199, 0, 2417, 2416, 1, 0, 0, 0, 2417, 2418, 1, 0, 0, 0, 2418, 2419, 1, 0, 0, 0, 2419, 2435, 5, 58, 0, 0, 2420, 2421, 3, 54, 27, 0, 2421, 2422, 5, 65, 0, 0, 2422, 2423, 5, 40, 0, 0, 2423, 2425, 5, 65, 0, 0, 2424, 2426, 3, 42, 21, 0, 2425, 2424, 1, 0, 0, 0, 2425, 2426, 1, 0, 0, 0, 2426, 2427, 1, 0, 0, 0, 2427, 2428, 5, 102, 0, 0, 2428, 2430, 5, 57, 0, 0, 2429, 2431, 3, 398, 199, 0, 2430, 2429, 1, 0, 0, 0, 2430, 2431, 1, 0, 0, 0, 2431, 2432, 1, 0, 0, 0, 2432, 2433, 5, 58, 0, 0, 2433, 2435, 1, 0, 0, 0, 2434, 2378, 1, 0, 0, 0, 2434, 2385, 1, 0, 0, 0, 2434, 2397, 1, 0, 0, 0, 2434, 2409, 1, 0, 0, 0, 2434, 2420, 1, 0, 0, 0, 2435, 397, 1, 0, 0, 0, 2436, 2441, 3, 414, 207, 0, 2437, 2438, 5, 64, 0, 0, 2438, 2440, 3, 414, 207, 0, 2439, 2437, 1, 0, 0, 0, 2440, 2443, 1, 0, 0, 0, 2441, 2439, 1, 0, 0, 0, 2441, 2442, 1, 0, 0, 0, 2442, 399, 1, 0, 0, 0, 2443, 2441, 1, 0, 0, 0, 2444, 2445, 3, 58, 29, 0, 2445, 2447, 5, 90, 0, 0, 2446, 2448, 3, 42, 21, 0, 2447, 2446, 1, 0, 0, 0, 2447, 2448, 1, 0, 0, 0, 2448, 2449, 1, 0, 0, 0, 2449, 2450, 5, 102, 0, 0, 2450, 2492, 1, 0, 0, 0, 2451, 2452, 3, 12, 6, 0, 2452, 2454, 5, 90, 0, 0, 2453, 2455, 3, 42, 21, 0, 2454, 2453, 1, 0, 0, 0, 2454, 2455, 1, 0, 0, 0, 2455, 2456, 1, 0, 0, 0, 2456, 2457, 5, 102, 0, 0, 2457, 2492, 1, 0, 0, 0, 2458, 2459, 3, 352, 176, 0, 2459, 2461, 5, 90, 0, 0, 2460, 2462, 3, 42, 21, 0, 2461, 2460, 1, 0, 0, 0, 2461, 2462, 1, 0, 0, 0, 2462, 2463, 1, 0, 0, 0, 2463, 2464, 5, 102, 0, 0, 2464, 2492, 1, 0, 0, 0, 2465, 2466, 5, 40, 0, 0, 2466, 2468, 5, 90, 0, 0, 2467, 2469, 3, 42, 21, 0, 2468, 2467, 1, 0, 0, 0, 2468, 2469, 1, 0, 0, 0, 2469, 2470, 1, 0, 0, 0, 2470, 2492, 5, 102, 0, 0, 2471, 2472, 3, 54, 27, 0, 2472, 2473, 5, 65, 0, 0, 2473, 2474, 5, 40, 0, 0, 2474, 2476, 5, 90, 0, 0, 2475, 2477, 3, 42, 21, 0, 2476, 2475, 1, 0, 0, 0, 2476, 2477, 1, 0, 0, 0, 2477, 2478, 1, 0, 0, 0, 2478, 2479, 5, 102, 0, 0, 2479, 2492, 1, 0, 0, 0, 2480, 2481, 3, 16, 8, 0, 2481, 2483, 5, 90, 0, 0, 2482, 2484, 3, 42, 21, 0, 2483, 2482, 1, 0, 0, 0, 2483, 2484, 1, 0, 0, 0, 2484, 2485, 1, 0, 0, 0, 2485, 2486, 5, 31, 0, 0, 2486, 2492, 1, 0, 0, 0, 2487, 2488, 3, 30, 15, 0, 2488, 2489, 5, 90, 0, 0, 2489, 2490, 5, 31, 0, 0, 2490, 2492, 1, 0, 0, 0, 2491, 2444, 1, 0, 0, 0, 2491, 2451, 1, 0, 0, 0, 2491, 2458, 1, 0, 0, 0, 2491, 2465, 1, 0, 0, 0, 2491, 2471, 1, 0, 0, 0, 2491, 2480, 1, 0, 0, 0, 2491, 2487, 1, 0, 0, 0, 2492, 401, 1, 0, 0, 0, 2493, 2495, 5, 90, 0, 0, 2494, 2496, 3, 42, 21, 0, 2495, 2494, 1, 0, 0, 0, 2495, 2496, 1, 0, 0, 0, 2496, 2497, 1, 0, 0, 0, 2497, 2498, 5, 102, 0, 0, 2498, 403, 1, 0, 0, 0, 2499, 2500, 3, 58, 29, 0, 2500, 2502, 5, 90, 0, 0, 2501, 2503, 3, 42, 21, 0, 2502, 2501, 1, 0, 0, 0, 2502, 2503, 1, 0, 0, 0, 2503, 2504, 1, 0, 0, 0, 2504, 2505, 5, 102, 0, 0, 2505, 2540, 1, 0, 0, 0, 2506, 2507, 3, 12, 6, 0, 2507, 2509, 5, 90, 0, 0, 2508, 2510, 3, 42, 21, 0, 2509, 2508, 1, 0, 0, 0, 2509, 2510, 1, 0, 0, 0, 2510, 2511, 1, 0, 0, 0, 2511, 2512, 5, 102, 0, 0, 2512, 2540, 1, 0, 0, 0, 2513, 2514, 5, 40, 0, 0, 2514, 2516, 5, 90, 0, 0, 2515, 2517, 3, 42, 21, 0, 2516, 2515, 1, 0, 0, 0, 2516, 2517, 1, 0, 0, 0, 2517, 2518, 1, 0, 0, 0, 2518, 2540, 5, 102, 0, 0, 2519, 2520, 3, 54, 27, 0, 2520, 2521, 5, 65, 0, 0, 2521, 2522, 5, 40, 0, 0, 2522, 2524, 5, 90, 0, 0, 2523, 2525, 3, 42, 21, 0, 2524, 2523, 1, 0, 0, 0, 2524, 2525, 1, 0, 0, 0, 2525, 2526, 1, 0, 0, 0, 2526, 2527, 5, 102, 0, 0, 2527, 2540, 1, 0, 0, 0, 2528, 2529, 3, 16, 8, 0, 2529, 2531, 5, 90, 0, 0, 2530, 2532, 3, 42, 21, 0, 2531, 2530, 1, 0, 0, 0, 2531, 2532, 1, 0, 0, 0, 2532, 2533, 1, 0, 0, 0, 2533, 2534, 5, 31, 0, 0, 2534, 2540, 1, 0, 0, 0, 2535, 2536, 3, 30, 15, 0, 2536, 2537, 5, 90, 0, 0, 2537, 2538, 5, 31, 0, 0, 2538, 2540, 1, 0, 0, 0, 2539, 2499, 1, 0, 0, 0, 2539, 2506, 1, 0, 0, 0, 2539, 2513, 1, 0, 0, 0, 2539, 2519, 1, 0, 0, 0, 2539, 2528, 1, 0, 0, 0, 2539, 2535, 1, 0, 0, 0, 2540, 405, 1, 0, 0, 0, 2541, 2542, 5, 31, 0, 0, 2542, 2543, 3, 4, 2, 0, 2543, 2545, 3, 408, 204, 0, 2544, 2546, 3, 32, 16, 0, 2545, 2544, 1, 0, 0, 0, 2545, 2546, 1, 0, 0, 0, 2546, 2564, 1, 0, 0, 0, 2547, 2548, 5, 31, 0, 0, 2548, 2549, 3, 14, 7, 0, 2549, 2551, 3, 408, 204, 0, 2550, 2552, 3, 32, 16, 0, 2551, 2550, 1, 0, 0, 0, 2551, 2552, 1, 0, 0, 0, 2552, 2564, 1, 0, 0, 0, 2553, 2554, 5, 31, 0, 0, 2554, 2555, 3, 4, 2, 0, 2555, 2556, 3, 32, 16, 0, 2556, 2557, 3, 248, 124, 0, 2557, 2564, 1, 0, 0, 0, 2558, 2559, 5, 31, 0, 0, 2559, 2560, 3, 14, 7, 0, 2560, 2561, 3, 32, 16, 0, 2561, 2562, 3, 248, 124, 0, 2562, 2564, 1, 0, 0, 0, 2563, 2541, 1, 0, 0, 0, 2563, 2547, 1, 0, 0, 0, 2563, 2553, 1, 0, 0, 0, 2563, 2558, 1, 0, 0, 0, 2564, 407, 1, 0, 0, 0, 2565, 2569, 3, 410, 205, 0, 2566, 2568, 3, 410, 205, 0, 2567, 2566, 1, 0, 0, 0, 2568, 2571, 1, 0, 0, 0, 2569, 2567, 1, 0, 0, 0, 2569, 2570, 1, 0, 0, 0, 2570, 409, 1, 0, 0, 0, 2571, 2569, 1, 0, 0, 0, 2572, 2574, 3, 230, 115, 0, 2573, 2572, 1, 0, 0, 0, 2574, 2577, 1, 0, 0, 0, 2575, 2573, 1, 0, 0, 0, 2575, 2576, 1, 0, 0, 0, 2576, 2578, 1, 0, 0, 0, 2577, 2575, 1, 0, 0, 0, 2578, 2579, 5, 61, 0, 0, 2579, 2580, 3, 414, 207, 0, 2580, 2581, 5, 62, 0, 0, 2581, 411, 1, 0, 0, 0, 2582, 2583, 3, 414, 207, 0, 2583, 413, 1, 0, 0, 0, 2584, 2587, 3, 416, 208, 0, 2585, 2587, 3, 424, 212, 0, 2586, 2584, 1, 0, 0, 0, 2586, 2585, 1, 0, 0, 0, 2587, 415, 1, 0, 0, 0, 2588, 2589, 3, 418, 209, 0, 2589, 2590, 5, 89, 0, 0, 2590, 2591, 3, 422, 211, 0, 2591, 417, 1, 0, 0, 0, 2592, 2603, 5, 102, 0, 0, 2593, 2595, 5, 57, 0, 0, 2594, 2596, 3, 150, 75, 0, 2595, 2594, 1, 0, 0, 0, 2595, 2596, 1, 0, 0, 0, 2596, 2597, 1, 0, 0, 0, 2597, 2603, 5, 58, 0, 0, 2598, 2599, 5, 57, 0, 0, 2599, 2600, 3, 420, 210, 0, 2600, 2601, 5, 58, 0, 0, 2601, 2603, 1, 0, 0, 0, 2602, 2592, 1, 0, 0, 0, 2602, 2593, 1, 0, 0, 0, 2602, 2598, 1, 0, 0, 0, 2603, 419, 1, 0, 0, 0, 2604, 2609, 5, 102, 0, 0, 2605, 2606, 5, 64, 0, 0, 2606, 2608, 5, 102, 0, 0, 2607, 2605, 1, 0, 0, 0, 2608, 2611, 1, 0, 0, 0, 2609, 2607, 1, 0, 0, 0, 2609, 2610, 1, 0, 0, 0, 2610, 421, 1, 0, 0, 0, 2611, 2609, 1, 0, 0, 0, 2612, 2615, 3, 414, 207, 0, 2613, 2615, 3, 252, 126, 0, 2614, 2612, 1, 0, 0, 0, 2614, 2613, 1, 0, 0, 0, 2615, 423, 1, 0, 0, 0, 2616, 2619, 3, 432, 216, 0, 2617, 2619, 3, 426, 213, 0, 2618, 2616, 1, 0, 0, 0, 2618, 2617, 1, 0, 0, 0, 2619, 425, 1, 0, 0, 0, 2620, 2621, 3, 428, 214, 0, 2621, 2622, 3, 430, 215, 0, 2622, 2623, 3, 414, 207, 0, 2623, 427, 1, 0, 0, 0, 2624, 2628, 3, 58, 29, 0, 2625, 2628, 3, 380, 190, 0, 2626, 2628, 3, 386, 193, 0, 2627, 2624, 1, 0, 0, 0, 2627, 2625, 1, 0, 0, 0, 2627, 2626, 1, 0, 0, 0, 2628, 429, 1, 0, 0, 0, 2629, 2630, 7, 3, 0, 0, 2630, 431, 1, 0, 0, 0, 2631, 2639, 3, 434, 217, 0, 2632, 2633, 3, 434, 217, 0, 2633, 2634, 5, 71, 0, 0, 2634, 2635, 3, 414, 207, 0, 2635, 2636, 5, 72, 0, 0, 2636, 2637, 3, 432, 216, 0, 2637, 2639, 1, 0, 0, 0, 2638, 2631, 1, 0, 0, 0, 2638, 2632, 1, 0, 0, 0, 2639, 433, 1, 0, 0, 0, 2640, 2641, 6, 217, -1, 0, 2641, 2642, 3, 436, 218, 0, 2642, 2648, 1, 0, 0, 0, 2643, 2644, 10, 1, 0, 0, 2644, 2645, 5, 78, 0, 0, 2645, 2647, 3, 436, 218, 0, 2646, 2643, 1, 0, 0, 0, 2647, 2650, 1, 0, 0, 0, 2648, 2646, 1, 0, 0, 0, 2648, 2649, 1, 0, 0, 0, 2649, 435, 1, 0, 0, 0, 2650, 2648, 1, 0, 0, 0, 2651, 2652, 6, 218, -1, 0, 2652, 2653, 3, 438, 219, 0, 2653, 2659, 1, 0, 0, 0, 2654, 2655, 10, 1, 0, 0, 2655, 2656, 5, 77, 0, 0, 2656, 2658, 3, 438, 219, 0, 2657, 2654, 1, 0, 0, 0, 2658, 2661, 1, 0, 0, 0, 2659, 2657, 1, 0, 0, 0, 2659, 2660, 1, 0, 0, 0, 2660, 437, 1, 0, 0, 0, 2661, 2659, 1, 0, 0, 0, 2662, 2663, 6, 219, -1, 0, 2663, 2664, 3, 440, 220, 0, 2664, 2670, 1, 0, 0, 0, 2665, 2666, 10, 1, 0, 0, 2666, 2667, 5, 86, 0, 0, 2667, 2669, 3, 440, 220, 0, 2668, 2665, 1, 0, 0, 0, 2669, 2672, 1, 0, 0, 0, 2670, 2668, 1, 0, 0, 0, 2670, 2671, 1, 0, 0, 0, 2671, 439, 1, 0, 0, 0, 2672, 2670, 1, 0, 0, 0, 2673, 2674, 6, 220, -1, 0, 2674, 2675, 3, 442, 221, 0, 2675, 2681, 1, 0, 0, 0, 2676, 2677, 10, 1, 0, 0, 2677, 2678, 5, 87, 0, 0, 2678, 2680, 3, 442, 221, 0, 2679, 2676, 1, 0, 0, 0, 2680, 2683, 1, 0, 0, 0, 2681, 2679, 1, 0, 0, 0, 2681, 2682, 1, 0, 0, 0, 2682, 441, 1, 0, 0, 0, 2683, 2681, 1, 0, 0, 0, 2684, 2685, 6, 221, -1, 0, 2685, 2686, 3, 444, 222, 0, 2686, 2692, 1, 0, 0, 0, 2687, 2688, 10, 1, 0, 0, 2688, 2689, 5, 85, 0, 0, 2689, 2691, 3, 444, 222, 0, 2690, 2687, 1, 0, 0, 0, 2691, 2694, 1, 0, 0, 0, 2692, 2690, 1, 0, 0, 0, 2692, 2693, 1, 0, 0, 0, 2693, 443, 1, 0, 0, 0, 2694, 2692, 1, 0, 0, 0, 2695, 2696, 6, 222, -1, 0, 2696, 2697, 3, 446, 223, 0, 2697, 2706, 1, 0, 0, 0, 2698, 2699, 10, 2, 0, 0, 2699, 2700, 5, 73, 0, 0, 2700, 2705, 3, 446, 223, 0, 2701, 2702, 10, 1, 0, 0, 2702, 2703, 5, 76, 0, 0, 2703, 2705, 3, 446, 223, 0, 2704, 2698, 1, 0, 0, 0, 2704, 2701, 1, 0, 0, 0, 2705, 2708, 1, 0, 0, 0, 2706, 2704, 1, 0, 0, 0, 2706, 2707, 1, 0, 0, 0, 2707, 445, 1, 0, 0, 0, 2708, 2706, 1, 0, 0, 0, 2709, 2710, 6, 223, -1, 0, 2710, 2711, 3, 448, 224, 0, 2711, 2729, 1, 0, 0, 0, 2712, 2713, 10, 5, 0, 0, 2713, 2714, 5, 68, 0, 0, 2714, 2728, 3, 448, 224, 0, 2715, 2716, 10, 4, 0, 0, 2716, 2717, 5, 67, 0, 0, 2717, 2728, 3, 448, 224, 0, 2718, 2719, 10, 3, 0, 0, 2719, 2720, 5, 74, 0, 0, 2720, 2728, 3, 448, 224, 0, 2721, 2722, 10, 2, 0, 0, 2722, 2723, 5, 75, 0, 0, 2723, 2728, 3, 448, 224, 0, 2724, 2725, 10, 1, 0, 0, 2725, 2726, 5, 26, 0, 0, 2726, 2728, 3, 12, 6, 0, 2727, 2712, 1, 0, 0, 0, 2727, 2715, 1, 0, 0, 0, 2727, 2718, 1, 0, 0, 0, 2727, 2721, 1, 0, 0, 0, 2727, 2724, 1, 0, 0, 0, 2728, 2731, 1, 0, 0, 0, 2729, 2727, 1, 0, 0, 0, 2729, 2730, 1, 0, 0, 0, 2730, 447, 1, 0, 0, 0, 2731, 2729, 1, 0, 0, 0, 2732, 2733, 6, 224, -1, 0, 2733, 2734, 3, 450, 225, 0, 2734, 2750, 1, 0, 0, 0, 2735, 2736, 10, 3, 0, 0, 2736, 2737, 5, 68, 0, 0, 2737, 2738, 5, 68, 0, 0, 2738, 2749, 3, 450, 225, 0, 2739, 2740, 10, 2, 0, 0, 2740, 2741, 5, 67, 0, 0, 2741, 2742, 5, 67, 0, 0, 2742, 2749, 3, 450, 225, 0, 2743, 2744, 10, 1, 0, 0, 2744, 2745, 5, 67, 0, 0, 2745, 2746, 5, 67, 0, 0, 2746, 2747, 5, 67, 0, 0, 2747, 2749, 3, 450, 225, 0, 2748, 2735, 1, 0, 0, 0, 2748, 2739, 1, 0, 0, 0, 2748, 2743, 1, 0, 0, 0, 2749, 2752, 1, 0, 0, 0, 2750, 2748, 1, 0, 0, 0, 2750, 2751, 1, 0, 0, 0, 2751, 449, 1, 0, 0, 0, 2752, 2750, 1, 0, 0, 0, 2753, 2754, 6, 225, -1, 0, 2754, 2755, 3, 452, 226, 0, 2755, 2764, 1, 0, 0, 0, 2756, 2757, 10, 2, 0, 0, 2757, 2758, 5, 81, 0, 0, 2758, 2763, 3, 452, 226, 0, 2759, 2760, 10, 1, 0, 0, 2760, 2761, 5, 82, 0, 0, 2761, 2763, 3, 452, 226, 0, 2762, 2756, 1, 0, 0, 0, 2762, 2759, 1, 0, 0, 0, 2763, 2766, 1, 0, 0, 0, 2764, 2762, 1, 0, 0, 0, 2764, 2765, 1, 0, 0, 0, 2765, 451, 1, 0, 0, 0, 2766, 2764, 1, 0, 0, 0, 2767, 2768, 6, 226, -1, 0, 2768, 2769, 3, 454, 227, 0, 2769, 2781, 1, 0, 0, 0, 2770, 2771, 10, 3, 0, 0, 2771, 2772, 5, 83, 0, 0, 2772, 2780, 3, 454, 227, 0, 2773, 2774, 10, 2, 0, 0, 2774, 2775, 5, 84, 0, 0, 2775, 2780, 3, 454, 227, 0, 2776, 2777, 10, 1, 0, 0, 2777, 2778, 5, 88, 0, 0, 2778, 2780, 3, 454, 227, 0, 2779, 2770, 1, 0, 0, 0, 2779, 2773, 1, 0, 0, 0, 2779, 2776, 1, 0, 0, 0, 2780, 2783, 1, 0, 0, 0, 2781, 2779, 1, 0, 0, 0, 2781, 2782, 1, 0, 0, 0, 2782, 453, 1, 0, 0, 0, 2783, 2781, 1, 0, 0, 0, 2784, 2792, 3, 456, 228, 0, 2785, 2792, 3, 458, 229, 0, 2786, 2787, 5, 81, 0, 0, 2787, 2792, 3, 454, 227, 0, 2788, 2789, 5, 82, 0, 0, 2789, 2792, 3, 454, 227, 0, 2790, 2792, 3, 460, 230, 0, 2791, 2784, 1, 0, 0, 0, 2791, 2785, 1, 0, 0, 0, 2791, 2786, 1, 0, 0, 0, 2791, 2788, 1, 0, 0, 0, 2791, 2790, 1, 0, 0, 0, 2792, 455, 1, 0, 0, 0, 2793, 2794, 5, 79, 0, 0, 2794, 2795, 3, 454, 227, 0, 2795, 457, 1, 0, 0, 0, 2796, 2797, 5, 80, 0, 0, 2797, 2798, 3, 454, 227, 0, 2798, 459, 1, 0, 0, 0, 2799, 2806, 3, 462, 231, 0, 2800, 2801, 5, 70, 0, 0, 2801, 2806, 3, 454, 227, 0, 2802, 2803, 5, 69, 0, 0, 2803, 2806, 3, 454, 227, 0, 2804, 2806, 3, 472, 236, 0, 2805, 2799, 1, 0, 0, 0, 2805, 2800, 1, 0, 0, 0, 2805, 2802, 1, 0, 0, 0, 2805, 2804, 1, 0, 0, 0, 2806, 461, 1, 0, 0, 0, 2807, 2810, 3, 352, 176, 0, 2808, 2810, 3, 58, 29, 0, 2809, 2807, 1, 0, 0, 0, 2809, 2808, 1, 0, 0, 0, 2810, 2815, 1, 0, 0, 0, 2811, 2814, 3, 466, 233, 0, 2812, 2814, 3, 470, 235, 0, 2813, 2811, 1, 0, 0, 0, 2813, 2812, 1, 0, 0, 0, 2814, 2817, 1, 0, 0, 0, 2815, 2813, 1, 0, 0, 0, 2815, 2816, 1, 0, 0, 0, 2816, 463, 1, 0, 0, 0, 2817, 2815, 1, 0, 0, 0, 2818, 2819, 3, 462, 231, 0, 2819, 2820, 5, 79, 0, 0, 2820, 465, 1, 0, 0, 0, 2821, 2822, 5, 79, 0, 0, 2822, 467, 1, 0, 0, 0, 2823, 2824, 3, 462, 231, 0, 2824, 2825, 5, 80, 0, 0, 2825, 469, 1, 0, 0, 0, 2826, 2827, 5, 80, 0, 0, 2827, 471, 1, 0, 0, 0, 2828, 2829, 5, 57, 0, 0, 2829, 2830, 3, 4, 2, 0, 2830, 2831, 5, 58, 0, 0, 2831, 2832, 3, 454, 227, 0, 2832, 2856, 1, 0, 0, 0, 2833, 2834, 5, 57, 0, 0, 2834, 2838, 3, 12, 6, 0, 2835, 2837, 3, 40, 20, 0, 2836, 2835, 1, 0, 0, 0, 2837, 2840, 1, 0, 0, 0, 2838, 2836, 1, 0, 0, 0, 2838, 2839, 1, 0, 0, 0, 2839, 2841, 1, 0, 0, 0, 2840, 2838, 1, 0, 0, 0, 2841, 2842, 5, 58, 0, 0, 2842, 2843, 3, 460, 230, 0, 2843, 2856, 1, 0, 0, 0, 2844, 2845, 5, 57, 0, 0, 2845, 2849, 3, 12, 6, 0, 2846, 2848, 3, 40, 20, 0, 2847, 2846, 1, 0, 0, 0, 2848, 2851, 1, 0, 0, 0, 2849, 2847, 1, 0, 0, 0, 2849, 2850, 1, 0, 0, 0, 2850, 2852, 1, 0, 0, 0, 2851, 2849, 1, 0, 0, 0, 2852, 2853, 5, 58, 0, 0, 2853, 2854, 3, 416, 208, 0, 2854, 2856, 1, 0, 0, 0, 2855, 2828, 1, 0, 0, 0, 2855, 2833, 1, 0, 0, 0, 2855, 2844, 1, 0, 0, 0, 2856, 473, 1, 0, 0, 0, 324, 478, 483, 490, 494, 498, 507, 511, 515, 517, 523, 528, 535, 540, 542, 548, 553, 558, 563, 574, 588, 593, 601, 608, 614, 619, 630, 633, 647, 652, 657, 662, 668, 678, 686, 696, 704, 716, 720, 725, 731, 739, 748, 759, 788, 792, 797, 803, 806, 809, 821, 832, 846, 853, 862, 869, 874, 889, 896, 902, 906, 910, 914, 918, 923, 927, 931, 933, 938, 945, 950, 952, 958, 963, 967, 986, 991, 1007, 1012, 1018, 1024, 1026, 1030, 1035, 1039, 1046, 1053, 1061, 1064, 1069, 1077, 1082, 1089, 1096, 1101, 1107, 1119, 1124, 1128, 1138, 1143, 1151, 1154, 1159, 1167, 1170, 1175, 1180, 1185, 1190, 1197, 1202, 1210, 1215, 1220, 1225, 1231, 1237, 1240, 1243, 1252, 1258, 1264, 1267, 1270, 1278, 1283, 1288, 1294, 1297, 1308, 1317, 1327, 1332, 1343, 1348, 1360, 1365, 1377, 1387, 1392, 1400, 1403, 1410, 1418, 1424, 1433, 1443, 1447, 1450, 1459, 1473, 1476, 1485, 1490, 1498, 1504, 1512, 1524, 1531, 1545, 1567, 1601, 1613, 1619, 1631, 1644, 1670, 1674, 1679, 1683, 1687, 1695, 1699, 1703, 1710, 1719, 1727, 1742, 1754, 1760, 1766, 1787, 1792, 1798, 1810, 1821, 1831, 1834, 1839, 1848, 1854, 1864, 1869, 1878, 1901, 1911, 1933, 1940, 1948, 1956, 1967, 1990, 2000, 2011, 2033, 2037, 2042, 2050, 2056, 2060, 2064, 2068, 2074, 2079, 2084, 2088, 2092, 2098, 2103, 2108, 2112, 2116, 2118, 2123, 2128, 2133, 2137, 2141, 2145, 2150, 2158, 2164, 2168, 2172, 2176, 2182, 2187, 2192, 2196, 2200, 2202, 2207, 2222, 2236, 2248, 2257, 2272, 2285, 2294, 2300, 2307, 2312, 2319, 2324, 2331, 2336, 2343, 2348, 2356, 2361, 2365, 2369, 2374, 2381, 2388, 2393, 2400, 2405, 2412, 2417, 2425, 2430, 2434, 2441, 2447, 2454, 2461, 2468, 2476, 2483, 2491, 2495, 2502, 2509, 2516, 2524, 2531, 2539, 2545, 2551, 2563, 2569, 2575, 2586, 2595, 2602, 2609, 2614, 2618, 2627, 2638, 2648, 2659, 2670, 2681, 2692, 2704, 2706, 2727, 2729, 2748, 2750, 2762, 2764, 2779, 2781, 2791, 2805, 2809, 2813, 2815, 2838, 2849, 2855] \ No newline at end of file diff --git a/benchmarks/src/main/java/org/antlr/Java8.tokens b/benchmarks/src/main/java/org/antlr/Java8.tokens new file mode 100644 index 000000000..52ef1eee3 --- /dev/null +++ b/benchmarks/src/main/java/org/antlr/Java8.tokens @@ -0,0 +1,205 @@ +ABSTRACT=1 +ASSERT=2 +BOOLEAN=3 +BREAK=4 +BYTE=5 +CASE=6 +CATCH=7 +CHAR=8 +CLASS=9 +CONST=10 +CONTINUE=11 +DEFAULT=12 +DO=13 +DOUBLE=14 +ELSE=15 +ENUM=16 +EXTENDS=17 +FINAL=18 +FINALLY=19 +FLOAT=20 +FOR=21 +IF=22 +GOTO=23 +IMPLEMENTS=24 +IMPORT=25 +INSTANCEOF=26 +INT=27 +INTERFACE=28 +LONG=29 +NATIVE=30 +NEW=31 +PACKAGE=32 +PRIVATE=33 +PROTECTED=34 +PUBLIC=35 +RETURN=36 +SHORT=37 +STATIC=38 +STRICTFP=39 +SUPER=40 +SWITCH=41 +SYNCHRONIZED=42 +THIS=43 +THROW=44 +THROWS=45 +TRANSIENT=46 +TRY=47 +VOID=48 +VOLATILE=49 +WHILE=50 +IntegerLiteral=51 +FloatingPointLiteral=52 +BooleanLiteral=53 +CharacterLiteral=54 +StringLiteral=55 +NullLiteral=56 +LPAREN=57 +RPAREN=58 +LBRACE=59 +RBRACE=60 +LBRACK=61 +RBRACK=62 +SEMI=63 +COMMA=64 +DOT=65 +ASSIGN=66 +GT=67 +LT=68 +BANG=69 +TILDE=70 +QUESTION=71 +COLON=72 +EQUAL=73 +LE=74 +GE=75 +NOTEQUAL=76 +AND=77 +OR=78 +INC=79 +DEC=80 +ADD=81 +SUB=82 +MUL=83 +DIV=84 +BITAND=85 +BITOR=86 +CARET=87 +MOD=88 +ARROW=89 +COLONCOLON=90 +ADD_ASSIGN=91 +SUB_ASSIGN=92 +MUL_ASSIGN=93 +DIV_ASSIGN=94 +AND_ASSIGN=95 +OR_ASSIGN=96 +XOR_ASSIGN=97 +MOD_ASSIGN=98 +LSHIFT_ASSIGN=99 +RSHIFT_ASSIGN=100 +URSHIFT_ASSIGN=101 +Identifier=102 +AT=103 +ELLIPSIS=104 +WS=105 +COMMENT=106 +LINE_COMMENT=107 +'abstract'=1 +'assert'=2 +'boolean'=3 +'break'=4 +'byte'=5 +'case'=6 +'catch'=7 +'char'=8 +'class'=9 +'const'=10 +'continue'=11 +'default'=12 +'do'=13 +'double'=14 +'else'=15 +'enum'=16 +'extends'=17 +'final'=18 +'finally'=19 +'float'=20 +'for'=21 +'if'=22 +'goto'=23 +'implements'=24 +'import'=25 +'instanceof'=26 +'int'=27 +'interface'=28 +'long'=29 +'native'=30 +'new'=31 +'package'=32 +'private'=33 +'protected'=34 +'public'=35 +'return'=36 +'short'=37 +'static'=38 +'strictfp'=39 +'super'=40 +'switch'=41 +'synchronized'=42 +'this'=43 +'throw'=44 +'throws'=45 +'transient'=46 +'try'=47 +'void'=48 +'volatile'=49 +'while'=50 +'null'=56 +'('=57 +')'=58 +'{'=59 +'}'=60 +'['=61 +']'=62 +';'=63 +','=64 +'.'=65 +'='=66 +'>'=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 +'@'=103 +'...'=104 diff --git a/benchmarks/src/main/java/org/antlr/Java8BaseListener.java b/benchmarks/src/main/java/org/antlr/Java8BaseListener.java new file mode 100644 index 000000000..21685afaf --- /dev/null +++ b/benchmarks/src/main/java/org/antlr/Java8BaseListener.java @@ -0,0 +1,2886 @@ +// Generated from Java8.g4 by ANTLR 4.13.1 + +package org.antlr; + + +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 Java8Listener}, + * which can be extended to create a listener which only needs to handle a subset + * of the available methods. + */ +@SuppressWarnings("CheckReturnValue") +public class Java8BaseListener implements Java8Listener { + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterLiteral(Java8Parser.LiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitLiteral(Java8Parser.LiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterType(Java8Parser.TypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitType(Java8Parser.TypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPrimitiveType(Java8Parser.PrimitiveTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPrimitiveType(Java8Parser.PrimitiveTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterNumericType(Java8Parser.NumericTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitNumericType(Java8Parser.NumericTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterIntegralType(Java8Parser.IntegralTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitIntegralType(Java8Parser.IntegralTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterFloatingPointType(Java8Parser.FloatingPointTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitFloatingPointType(Java8Parser.FloatingPointTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterReferenceType(Java8Parser.ReferenceTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitReferenceType(Java8Parser.ReferenceTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterClassOrInterfaceType(Java8Parser.ClassOrInterfaceTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitClassOrInterfaceType(Java8Parser.ClassOrInterfaceTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterClassType(Java8Parser.ClassTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitClassType(Java8Parser.ClassTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterClassType_lf_classOrInterfaceType(Java8Parser.ClassType_lf_classOrInterfaceTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitClassType_lf_classOrInterfaceType(Java8Parser.ClassType_lf_classOrInterfaceTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterClassType_lfno_classOrInterfaceType(Java8Parser.ClassType_lfno_classOrInterfaceTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitClassType_lfno_classOrInterfaceType(Java8Parser.ClassType_lfno_classOrInterfaceTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterInterfaceType(Java8Parser.InterfaceTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitInterfaceType(Java8Parser.InterfaceTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterInterfaceType_lf_classOrInterfaceType(Java8Parser.InterfaceType_lf_classOrInterfaceTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitInterfaceType_lf_classOrInterfaceType(Java8Parser.InterfaceType_lf_classOrInterfaceTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterInterfaceType_lfno_classOrInterfaceType(Java8Parser.InterfaceType_lfno_classOrInterfaceTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitInterfaceType_lfno_classOrInterfaceType(Java8Parser.InterfaceType_lfno_classOrInterfaceTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTypeVariable(Java8Parser.TypeVariableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTypeVariable(Java8Parser.TypeVariableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterArrayType(Java8Parser.ArrayTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitArrayType(Java8Parser.ArrayTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDims(Java8Parser.DimsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDims(Java8Parser.DimsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTypeParameter(Java8Parser.TypeParameterContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTypeParameter(Java8Parser.TypeParameterContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTypeParameterModifier(Java8Parser.TypeParameterModifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTypeParameterModifier(Java8Parser.TypeParameterModifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTypeBound(Java8Parser.TypeBoundContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTypeBound(Java8Parser.TypeBoundContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAdditionalBound(Java8Parser.AdditionalBoundContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAdditionalBound(Java8Parser.AdditionalBoundContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTypeArguments(Java8Parser.TypeArgumentsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTypeArguments(Java8Parser.TypeArgumentsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTypeArgumentList(Java8Parser.TypeArgumentListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTypeArgumentList(Java8Parser.TypeArgumentListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTypeArgument(Java8Parser.TypeArgumentContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTypeArgument(Java8Parser.TypeArgumentContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterWildcard(Java8Parser.WildcardContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitWildcard(Java8Parser.WildcardContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterWildcardBounds(Java8Parser.WildcardBoundsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitWildcardBounds(Java8Parser.WildcardBoundsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPackageName(Java8Parser.PackageNameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPackageName(Java8Parser.PackageNameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTypeName(Java8Parser.TypeNameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTypeName(Java8Parser.TypeNameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPackageOrTypeName(Java8Parser.PackageOrTypeNameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPackageOrTypeName(Java8Parser.PackageOrTypeNameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterExpressionName(Java8Parser.ExpressionNameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitExpressionName(Java8Parser.ExpressionNameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterMethodName(Java8Parser.MethodNameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitMethodName(Java8Parser.MethodNameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAmbiguousName(Java8Parser.AmbiguousNameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAmbiguousName(Java8Parser.AmbiguousNameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCompilationUnit(Java8Parser.CompilationUnitContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCompilationUnit(Java8Parser.CompilationUnitContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPackageDeclaration(Java8Parser.PackageDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPackageDeclaration(Java8Parser.PackageDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPackageModifier(Java8Parser.PackageModifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPackageModifier(Java8Parser.PackageModifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterImportDeclaration(Java8Parser.ImportDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitImportDeclaration(Java8Parser.ImportDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSingleTypeImportDeclaration(Java8Parser.SingleTypeImportDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSingleTypeImportDeclaration(Java8Parser.SingleTypeImportDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTypeImportOnDemandDeclaration(Java8Parser.TypeImportOnDemandDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTypeImportOnDemandDeclaration(Java8Parser.TypeImportOnDemandDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSingleStaticImportDeclaration(Java8Parser.SingleStaticImportDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSingleStaticImportDeclaration(Java8Parser.SingleStaticImportDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterStaticImportOnDemandDeclaration(Java8Parser.StaticImportOnDemandDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitStaticImportOnDemandDeclaration(Java8Parser.StaticImportOnDemandDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTypeDeclaration(Java8Parser.TypeDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTypeDeclaration(Java8Parser.TypeDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterClassDeclaration(Java8Parser.ClassDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitClassDeclaration(Java8Parser.ClassDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterNormalClassDeclaration(Java8Parser.NormalClassDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitNormalClassDeclaration(Java8Parser.NormalClassDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterClassModifier(Java8Parser.ClassModifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitClassModifier(Java8Parser.ClassModifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTypeParameters(Java8Parser.TypeParametersContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTypeParameters(Java8Parser.TypeParametersContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTypeParameterList(Java8Parser.TypeParameterListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTypeParameterList(Java8Parser.TypeParameterListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSuperclass(Java8Parser.SuperclassContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSuperclass(Java8Parser.SuperclassContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSuperinterfaces(Java8Parser.SuperinterfacesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSuperinterfaces(Java8Parser.SuperinterfacesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterInterfaceTypeList(Java8Parser.InterfaceTypeListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitInterfaceTypeList(Java8Parser.InterfaceTypeListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterClassBody(Java8Parser.ClassBodyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitClassBody(Java8Parser.ClassBodyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterClassBodyDeclaration(Java8Parser.ClassBodyDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitClassBodyDeclaration(Java8Parser.ClassBodyDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterClassMemberDeclaration(Java8Parser.ClassMemberDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitClassMemberDeclaration(Java8Parser.ClassMemberDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterFieldDeclaration(Java8Parser.FieldDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitFieldDeclaration(Java8Parser.FieldDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterFieldModifier(Java8Parser.FieldModifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitFieldModifier(Java8Parser.FieldModifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterVariableDeclaratorList(Java8Parser.VariableDeclaratorListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitVariableDeclaratorList(Java8Parser.VariableDeclaratorListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterVariableDeclarator(Java8Parser.VariableDeclaratorContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitVariableDeclarator(Java8Parser.VariableDeclaratorContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterVariableDeclaratorId(Java8Parser.VariableDeclaratorIdContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitVariableDeclaratorId(Java8Parser.VariableDeclaratorIdContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterVariableInitializer(Java8Parser.VariableInitializerContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitVariableInitializer(Java8Parser.VariableInitializerContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterUnannType(Java8Parser.UnannTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitUnannType(Java8Parser.UnannTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterUnannPrimitiveType(Java8Parser.UnannPrimitiveTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitUnannPrimitiveType(Java8Parser.UnannPrimitiveTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterUnannReferenceType(Java8Parser.UnannReferenceTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitUnannReferenceType(Java8Parser.UnannReferenceTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterUnannClassOrInterfaceType(Java8Parser.UnannClassOrInterfaceTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitUnannClassOrInterfaceType(Java8Parser.UnannClassOrInterfaceTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterUnannClassType(Java8Parser.UnannClassTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitUnannClassType(Java8Parser.UnannClassTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterUnannClassType_lf_unannClassOrInterfaceType(Java8Parser.UnannClassType_lf_unannClassOrInterfaceTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitUnannClassType_lf_unannClassOrInterfaceType(Java8Parser.UnannClassType_lf_unannClassOrInterfaceTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterUnannClassType_lfno_unannClassOrInterfaceType(Java8Parser.UnannClassType_lfno_unannClassOrInterfaceTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitUnannClassType_lfno_unannClassOrInterfaceType(Java8Parser.UnannClassType_lfno_unannClassOrInterfaceTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterUnannInterfaceType(Java8Parser.UnannInterfaceTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitUnannInterfaceType(Java8Parser.UnannInterfaceTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterUnannInterfaceType_lf_unannClassOrInterfaceType(Java8Parser.UnannInterfaceType_lf_unannClassOrInterfaceTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitUnannInterfaceType_lf_unannClassOrInterfaceType(Java8Parser.UnannInterfaceType_lf_unannClassOrInterfaceTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterUnannInterfaceType_lfno_unannClassOrInterfaceType(Java8Parser.UnannInterfaceType_lfno_unannClassOrInterfaceTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitUnannInterfaceType_lfno_unannClassOrInterfaceType(Java8Parser.UnannInterfaceType_lfno_unannClassOrInterfaceTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterUnannTypeVariable(Java8Parser.UnannTypeVariableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitUnannTypeVariable(Java8Parser.UnannTypeVariableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterUnannArrayType(Java8Parser.UnannArrayTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitUnannArrayType(Java8Parser.UnannArrayTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterMethodDeclaration(Java8Parser.MethodDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitMethodDeclaration(Java8Parser.MethodDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterMethodModifier(Java8Parser.MethodModifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitMethodModifier(Java8Parser.MethodModifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterMethodHeader(Java8Parser.MethodHeaderContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitMethodHeader(Java8Parser.MethodHeaderContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterResult(Java8Parser.ResultContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitResult(Java8Parser.ResultContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterMethodDeclarator(Java8Parser.MethodDeclaratorContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitMethodDeclarator(Java8Parser.MethodDeclaratorContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterFormalParameterList(Java8Parser.FormalParameterListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitFormalParameterList(Java8Parser.FormalParameterListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterFormalParameters(Java8Parser.FormalParametersContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitFormalParameters(Java8Parser.FormalParametersContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterFormalParameter(Java8Parser.FormalParameterContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitFormalParameter(Java8Parser.FormalParameterContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterVariableModifier(Java8Parser.VariableModifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitVariableModifier(Java8Parser.VariableModifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterLastFormalParameter(Java8Parser.LastFormalParameterContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitLastFormalParameter(Java8Parser.LastFormalParameterContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterReceiverParameter(Java8Parser.ReceiverParameterContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitReceiverParameter(Java8Parser.ReceiverParameterContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterThrows_(Java8Parser.Throws_Context ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitThrows_(Java8Parser.Throws_Context ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterExceptionTypeList(Java8Parser.ExceptionTypeListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitExceptionTypeList(Java8Parser.ExceptionTypeListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterExceptionType(Java8Parser.ExceptionTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitExceptionType(Java8Parser.ExceptionTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterMethodBody(Java8Parser.MethodBodyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitMethodBody(Java8Parser.MethodBodyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterInstanceInitializer(Java8Parser.InstanceInitializerContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitInstanceInitializer(Java8Parser.InstanceInitializerContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterStaticInitializer(Java8Parser.StaticInitializerContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitStaticInitializer(Java8Parser.StaticInitializerContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterConstructorDeclaration(Java8Parser.ConstructorDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitConstructorDeclaration(Java8Parser.ConstructorDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterConstructorModifier(Java8Parser.ConstructorModifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitConstructorModifier(Java8Parser.ConstructorModifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterConstructorDeclarator(Java8Parser.ConstructorDeclaratorContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitConstructorDeclarator(Java8Parser.ConstructorDeclaratorContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSimpleTypeName(Java8Parser.SimpleTypeNameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSimpleTypeName(Java8Parser.SimpleTypeNameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterConstructorBody(Java8Parser.ConstructorBodyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitConstructorBody(Java8Parser.ConstructorBodyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterExplicitConstructorInvocation(Java8Parser.ExplicitConstructorInvocationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitExplicitConstructorInvocation(Java8Parser.ExplicitConstructorInvocationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterEnumDeclaration(Java8Parser.EnumDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitEnumDeclaration(Java8Parser.EnumDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterEnumBody(Java8Parser.EnumBodyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitEnumBody(Java8Parser.EnumBodyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterEnumConstantList(Java8Parser.EnumConstantListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitEnumConstantList(Java8Parser.EnumConstantListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterEnumConstant(Java8Parser.EnumConstantContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitEnumConstant(Java8Parser.EnumConstantContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterEnumConstantModifier(Java8Parser.EnumConstantModifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitEnumConstantModifier(Java8Parser.EnumConstantModifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterEnumBodyDeclarations(Java8Parser.EnumBodyDeclarationsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitEnumBodyDeclarations(Java8Parser.EnumBodyDeclarationsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterInterfaceDeclaration(Java8Parser.InterfaceDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitInterfaceDeclaration(Java8Parser.InterfaceDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterNormalInterfaceDeclaration(Java8Parser.NormalInterfaceDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitNormalInterfaceDeclaration(Java8Parser.NormalInterfaceDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterInterfaceModifier(Java8Parser.InterfaceModifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitInterfaceModifier(Java8Parser.InterfaceModifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterExtendsInterfaces(Java8Parser.ExtendsInterfacesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitExtendsInterfaces(Java8Parser.ExtendsInterfacesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterInterfaceBody(Java8Parser.InterfaceBodyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitInterfaceBody(Java8Parser.InterfaceBodyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterInterfaceMemberDeclaration(Java8Parser.InterfaceMemberDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitInterfaceMemberDeclaration(Java8Parser.InterfaceMemberDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterConstantDeclaration(Java8Parser.ConstantDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitConstantDeclaration(Java8Parser.ConstantDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterConstantModifier(Java8Parser.ConstantModifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitConstantModifier(Java8Parser.ConstantModifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterInterfaceMethodDeclaration(Java8Parser.InterfaceMethodDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitInterfaceMethodDeclaration(Java8Parser.InterfaceMethodDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterInterfaceMethodModifier(Java8Parser.InterfaceMethodModifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitInterfaceMethodModifier(Java8Parser.InterfaceMethodModifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAnnotationTypeDeclaration(Java8Parser.AnnotationTypeDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAnnotationTypeDeclaration(Java8Parser.AnnotationTypeDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAnnotationTypeBody(Java8Parser.AnnotationTypeBodyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAnnotationTypeBody(Java8Parser.AnnotationTypeBodyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAnnotationTypeMemberDeclaration(Java8Parser.AnnotationTypeMemberDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAnnotationTypeMemberDeclaration(Java8Parser.AnnotationTypeMemberDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAnnotationTypeElementDeclaration(Java8Parser.AnnotationTypeElementDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAnnotationTypeElementDeclaration(Java8Parser.AnnotationTypeElementDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAnnotationTypeElementModifier(Java8Parser.AnnotationTypeElementModifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAnnotationTypeElementModifier(Java8Parser.AnnotationTypeElementModifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDefaultValue(Java8Parser.DefaultValueContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDefaultValue(Java8Parser.DefaultValueContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAnnotation(Java8Parser.AnnotationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAnnotation(Java8Parser.AnnotationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterNormalAnnotation(Java8Parser.NormalAnnotationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitNormalAnnotation(Java8Parser.NormalAnnotationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterElementValuePairList(Java8Parser.ElementValuePairListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitElementValuePairList(Java8Parser.ElementValuePairListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterElementValuePair(Java8Parser.ElementValuePairContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitElementValuePair(Java8Parser.ElementValuePairContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterElementValue(Java8Parser.ElementValueContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitElementValue(Java8Parser.ElementValueContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterElementValueArrayInitializer(Java8Parser.ElementValueArrayInitializerContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitElementValueArrayInitializer(Java8Parser.ElementValueArrayInitializerContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterElementValueList(Java8Parser.ElementValueListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitElementValueList(Java8Parser.ElementValueListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterMarkerAnnotation(Java8Parser.MarkerAnnotationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitMarkerAnnotation(Java8Parser.MarkerAnnotationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSingleElementAnnotation(Java8Parser.SingleElementAnnotationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSingleElementAnnotation(Java8Parser.SingleElementAnnotationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterArrayInitializer(Java8Parser.ArrayInitializerContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitArrayInitializer(Java8Parser.ArrayInitializerContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterVariableInitializerList(Java8Parser.VariableInitializerListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitVariableInitializerList(Java8Parser.VariableInitializerListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterBlock(Java8Parser.BlockContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitBlock(Java8Parser.BlockContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterBlockStatements(Java8Parser.BlockStatementsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitBlockStatements(Java8Parser.BlockStatementsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterBlockStatement(Java8Parser.BlockStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitBlockStatement(Java8Parser.BlockStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterLocalVariableDeclarationStatement(Java8Parser.LocalVariableDeclarationStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitLocalVariableDeclarationStatement(Java8Parser.LocalVariableDeclarationStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterLocalVariableDeclaration(Java8Parser.LocalVariableDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitLocalVariableDeclaration(Java8Parser.LocalVariableDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterStatement(Java8Parser.StatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitStatement(Java8Parser.StatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterStatementNoShortIf(Java8Parser.StatementNoShortIfContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitStatementNoShortIf(Java8Parser.StatementNoShortIfContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterStatementWithoutTrailingSubstatement(Java8Parser.StatementWithoutTrailingSubstatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitStatementWithoutTrailingSubstatement(Java8Parser.StatementWithoutTrailingSubstatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterEmptyStatement(Java8Parser.EmptyStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitEmptyStatement(Java8Parser.EmptyStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterLabeledStatement(Java8Parser.LabeledStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitLabeledStatement(Java8Parser.LabeledStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterLabeledStatementNoShortIf(Java8Parser.LabeledStatementNoShortIfContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitLabeledStatementNoShortIf(Java8Parser.LabeledStatementNoShortIfContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterExpressionStatement(Java8Parser.ExpressionStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitExpressionStatement(Java8Parser.ExpressionStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterStatementExpression(Java8Parser.StatementExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitStatementExpression(Java8Parser.StatementExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterIfThenStatement(Java8Parser.IfThenStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitIfThenStatement(Java8Parser.IfThenStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterIfThenElseStatement(Java8Parser.IfThenElseStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitIfThenElseStatement(Java8Parser.IfThenElseStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterIfThenElseStatementNoShortIf(Java8Parser.IfThenElseStatementNoShortIfContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitIfThenElseStatementNoShortIf(Java8Parser.IfThenElseStatementNoShortIfContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAssertStatement(Java8Parser.AssertStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAssertStatement(Java8Parser.AssertStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSwitchStatement(Java8Parser.SwitchStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSwitchStatement(Java8Parser.SwitchStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSwitchBlock(Java8Parser.SwitchBlockContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSwitchBlock(Java8Parser.SwitchBlockContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSwitchBlockStatementGroup(Java8Parser.SwitchBlockStatementGroupContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSwitchBlockStatementGroup(Java8Parser.SwitchBlockStatementGroupContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSwitchLabels(Java8Parser.SwitchLabelsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSwitchLabels(Java8Parser.SwitchLabelsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSwitchLabel(Java8Parser.SwitchLabelContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSwitchLabel(Java8Parser.SwitchLabelContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterEnumConstantName(Java8Parser.EnumConstantNameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitEnumConstantName(Java8Parser.EnumConstantNameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterWhileStatement(Java8Parser.WhileStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitWhileStatement(Java8Parser.WhileStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterWhileStatementNoShortIf(Java8Parser.WhileStatementNoShortIfContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitWhileStatementNoShortIf(Java8Parser.WhileStatementNoShortIfContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDoStatement(Java8Parser.DoStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDoStatement(Java8Parser.DoStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterForStatement(Java8Parser.ForStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitForStatement(Java8Parser.ForStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterForStatementNoShortIf(Java8Parser.ForStatementNoShortIfContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitForStatementNoShortIf(Java8Parser.ForStatementNoShortIfContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterBasicForStatement(Java8Parser.BasicForStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitBasicForStatement(Java8Parser.BasicForStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterBasicForStatementNoShortIf(Java8Parser.BasicForStatementNoShortIfContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitBasicForStatementNoShortIf(Java8Parser.BasicForStatementNoShortIfContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterForInit(Java8Parser.ForInitContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitForInit(Java8Parser.ForInitContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterForUpdate(Java8Parser.ForUpdateContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitForUpdate(Java8Parser.ForUpdateContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterStatementExpressionList(Java8Parser.StatementExpressionListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitStatementExpressionList(Java8Parser.StatementExpressionListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterEnhancedForStatement(Java8Parser.EnhancedForStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitEnhancedForStatement(Java8Parser.EnhancedForStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterEnhancedForStatementNoShortIf(Java8Parser.EnhancedForStatementNoShortIfContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitEnhancedForStatementNoShortIf(Java8Parser.EnhancedForStatementNoShortIfContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterBreakStatement(Java8Parser.BreakStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitBreakStatement(Java8Parser.BreakStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterContinueStatement(Java8Parser.ContinueStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitContinueStatement(Java8Parser.ContinueStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterReturnStatement(Java8Parser.ReturnStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitReturnStatement(Java8Parser.ReturnStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterThrowStatement(Java8Parser.ThrowStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitThrowStatement(Java8Parser.ThrowStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSynchronizedStatement(Java8Parser.SynchronizedStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSynchronizedStatement(Java8Parser.SynchronizedStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTryStatement(Java8Parser.TryStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTryStatement(Java8Parser.TryStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCatches(Java8Parser.CatchesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCatches(Java8Parser.CatchesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCatchClause(Java8Parser.CatchClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCatchClause(Java8Parser.CatchClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCatchFormalParameter(Java8Parser.CatchFormalParameterContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCatchFormalParameter(Java8Parser.CatchFormalParameterContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCatchType(Java8Parser.CatchTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCatchType(Java8Parser.CatchTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterFinally_(Java8Parser.Finally_Context ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitFinally_(Java8Parser.Finally_Context ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTryWithResourcesStatement(Java8Parser.TryWithResourcesStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTryWithResourcesStatement(Java8Parser.TryWithResourcesStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterResourceSpecification(Java8Parser.ResourceSpecificationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitResourceSpecification(Java8Parser.ResourceSpecificationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterResourceList(Java8Parser.ResourceListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitResourceList(Java8Parser.ResourceListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterResource(Java8Parser.ResourceContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitResource(Java8Parser.ResourceContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPrimary(Java8Parser.PrimaryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPrimary(Java8Parser.PrimaryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPrimaryNoNewArray(Java8Parser.PrimaryNoNewArrayContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPrimaryNoNewArray(Java8Parser.PrimaryNoNewArrayContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPrimaryNoNewArray_lf_arrayAccess(Java8Parser.PrimaryNoNewArray_lf_arrayAccessContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPrimaryNoNewArray_lf_arrayAccess(Java8Parser.PrimaryNoNewArray_lf_arrayAccessContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPrimaryNoNewArray_lfno_arrayAccess(Java8Parser.PrimaryNoNewArray_lfno_arrayAccessContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPrimaryNoNewArray_lfno_arrayAccess(Java8Parser.PrimaryNoNewArray_lfno_arrayAccessContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPrimaryNoNewArray_lf_primary(Java8Parser.PrimaryNoNewArray_lf_primaryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPrimaryNoNewArray_lf_primary(Java8Parser.PrimaryNoNewArray_lf_primaryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary(Java8Parser.PrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primaryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary(Java8Parser.PrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primaryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary(Java8Parser.PrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primaryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary(Java8Parser.PrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primaryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPrimaryNoNewArray_lfno_primary(Java8Parser.PrimaryNoNewArray_lfno_primaryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPrimaryNoNewArray_lfno_primary(Java8Parser.PrimaryNoNewArray_lfno_primaryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary(Java8Parser.PrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primaryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary(Java8Parser.PrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primaryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPrimaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary(Java8Parser.PrimaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primaryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPrimaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary(Java8Parser.PrimaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primaryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterClassInstanceCreationExpression(Java8Parser.ClassInstanceCreationExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitClassInstanceCreationExpression(Java8Parser.ClassInstanceCreationExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterClassInstanceCreationExpression_lf_primary(Java8Parser.ClassInstanceCreationExpression_lf_primaryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitClassInstanceCreationExpression_lf_primary(Java8Parser.ClassInstanceCreationExpression_lf_primaryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterClassInstanceCreationExpression_lfno_primary(Java8Parser.ClassInstanceCreationExpression_lfno_primaryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitClassInstanceCreationExpression_lfno_primary(Java8Parser.ClassInstanceCreationExpression_lfno_primaryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTypeArgumentsOrDiamond(Java8Parser.TypeArgumentsOrDiamondContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTypeArgumentsOrDiamond(Java8Parser.TypeArgumentsOrDiamondContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterFieldAccess(Java8Parser.FieldAccessContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitFieldAccess(Java8Parser.FieldAccessContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterFieldAccess_lf_primary(Java8Parser.FieldAccess_lf_primaryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitFieldAccess_lf_primary(Java8Parser.FieldAccess_lf_primaryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterFieldAccess_lfno_primary(Java8Parser.FieldAccess_lfno_primaryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitFieldAccess_lfno_primary(Java8Parser.FieldAccess_lfno_primaryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterArrayAccess(Java8Parser.ArrayAccessContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitArrayAccess(Java8Parser.ArrayAccessContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterArrayAccess_lf_primary(Java8Parser.ArrayAccess_lf_primaryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitArrayAccess_lf_primary(Java8Parser.ArrayAccess_lf_primaryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterArrayAccess_lfno_primary(Java8Parser.ArrayAccess_lfno_primaryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitArrayAccess_lfno_primary(Java8Parser.ArrayAccess_lfno_primaryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterMethodInvocation(Java8Parser.MethodInvocationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitMethodInvocation(Java8Parser.MethodInvocationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterMethodInvocation_lf_primary(Java8Parser.MethodInvocation_lf_primaryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitMethodInvocation_lf_primary(Java8Parser.MethodInvocation_lf_primaryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterMethodInvocation_lfno_primary(Java8Parser.MethodInvocation_lfno_primaryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitMethodInvocation_lfno_primary(Java8Parser.MethodInvocation_lfno_primaryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterArgumentList(Java8Parser.ArgumentListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitArgumentList(Java8Parser.ArgumentListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterMethodReference(Java8Parser.MethodReferenceContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitMethodReference(Java8Parser.MethodReferenceContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterMethodReference_lf_primary(Java8Parser.MethodReference_lf_primaryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitMethodReference_lf_primary(Java8Parser.MethodReference_lf_primaryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterMethodReference_lfno_primary(Java8Parser.MethodReference_lfno_primaryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitMethodReference_lfno_primary(Java8Parser.MethodReference_lfno_primaryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterArrayCreationExpression(Java8Parser.ArrayCreationExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitArrayCreationExpression(Java8Parser.ArrayCreationExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDimExprs(Java8Parser.DimExprsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDimExprs(Java8Parser.DimExprsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDimExpr(Java8Parser.DimExprContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDimExpr(Java8Parser.DimExprContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterConstantExpression(Java8Parser.ConstantExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitConstantExpression(Java8Parser.ConstantExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterExpression(Java8Parser.ExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitExpression(Java8Parser.ExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterLambdaExpression(Java8Parser.LambdaExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitLambdaExpression(Java8Parser.LambdaExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterLambdaParameters(Java8Parser.LambdaParametersContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitLambdaParameters(Java8Parser.LambdaParametersContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterInferredFormalParameterList(Java8Parser.InferredFormalParameterListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitInferredFormalParameterList(Java8Parser.InferredFormalParameterListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterLambdaBody(Java8Parser.LambdaBodyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitLambdaBody(Java8Parser.LambdaBodyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAssignmentExpression(Java8Parser.AssignmentExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAssignmentExpression(Java8Parser.AssignmentExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAssignment(Java8Parser.AssignmentContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAssignment(Java8Parser.AssignmentContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterLeftHandSide(Java8Parser.LeftHandSideContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitLeftHandSide(Java8Parser.LeftHandSideContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAssignmentOperator(Java8Parser.AssignmentOperatorContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAssignmentOperator(Java8Parser.AssignmentOperatorContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterConditionalExpression(Java8Parser.ConditionalExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitConditionalExpression(Java8Parser.ConditionalExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterConditionalOrExpression(Java8Parser.ConditionalOrExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitConditionalOrExpression(Java8Parser.ConditionalOrExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterConditionalAndExpression(Java8Parser.ConditionalAndExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitConditionalAndExpression(Java8Parser.ConditionalAndExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterInclusiveOrExpression(Java8Parser.InclusiveOrExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitInclusiveOrExpression(Java8Parser.InclusiveOrExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterExclusiveOrExpression(Java8Parser.ExclusiveOrExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitExclusiveOrExpression(Java8Parser.ExclusiveOrExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAndExpression(Java8Parser.AndExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAndExpression(Java8Parser.AndExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterEqualityExpression(Java8Parser.EqualityExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitEqualityExpression(Java8Parser.EqualityExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRelationalExpression(Java8Parser.RelationalExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRelationalExpression(Java8Parser.RelationalExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShiftExpression(Java8Parser.ShiftExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShiftExpression(Java8Parser.ShiftExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAdditiveExpression(Java8Parser.AdditiveExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAdditiveExpression(Java8Parser.AdditiveExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterMultiplicativeExpression(Java8Parser.MultiplicativeExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitMultiplicativeExpression(Java8Parser.MultiplicativeExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterUnaryExpression(Java8Parser.UnaryExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitUnaryExpression(Java8Parser.UnaryExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPreIncrementExpression(Java8Parser.PreIncrementExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPreIncrementExpression(Java8Parser.PreIncrementExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPreDecrementExpression(Java8Parser.PreDecrementExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPreDecrementExpression(Java8Parser.PreDecrementExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterUnaryExpressionNotPlusMinus(Java8Parser.UnaryExpressionNotPlusMinusContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitUnaryExpressionNotPlusMinus(Java8Parser.UnaryExpressionNotPlusMinusContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPostfixExpression(Java8Parser.PostfixExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPostfixExpression(Java8Parser.PostfixExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPostIncrementExpression(Java8Parser.PostIncrementExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPostIncrementExpression(Java8Parser.PostIncrementExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPostIncrementExpression_lf_postfixExpression(Java8Parser.PostIncrementExpression_lf_postfixExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPostIncrementExpression_lf_postfixExpression(Java8Parser.PostIncrementExpression_lf_postfixExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPostDecrementExpression(Java8Parser.PostDecrementExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPostDecrementExpression(Java8Parser.PostDecrementExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPostDecrementExpression_lf_postfixExpression(Java8Parser.PostDecrementExpression_lf_postfixExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPostDecrementExpression_lf_postfixExpression(Java8Parser.PostDecrementExpression_lf_postfixExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCastExpression(Java8Parser.CastExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCastExpression(Java8Parser.CastExpressionContext 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/benchmarks/src/main/java/org/antlr/Java8Lexer.interp b/benchmarks/src/main/java/org/antlr/Java8Lexer.interp new file mode 100644 index 000000000..7bf0acf04 --- /dev/null +++ b/benchmarks/src/main/java/org/antlr/Java8Lexer.interp @@ -0,0 +1,384 @@ +token literal names: +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' +'void' +'volatile' +'while' +null +null +null +null +null +'null' +'(' +')' +'{' +'}' +'[' +']' +';' +',' +'.' +'=' +'>' +'<' +'!' +'~' +'?' +':' +'==' +'<=' +'>=' +'!=' +'&&' +'||' +'++' +'--' +'+' +'-' +'*' +'/' +'&' +'|' +'^' +'%' +'->' +'::' +'+=' +'-=' +'*=' +'/=' +'&=' +'|=' +'^=' +'%=' +'<<=' +'>>=' +'>>>=' +null +'@' +'...' +null +null +null + +token symbolic names: +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 +VOID +VOLATILE +WHILE +IntegerLiteral +FloatingPointLiteral +BooleanLiteral +CharacterLiteral +StringLiteral +NullLiteral +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 +ARROW +COLONCOLON +ADD_ASSIGN +SUB_ASSIGN +MUL_ASSIGN +DIV_ASSIGN +AND_ASSIGN +OR_ASSIGN +XOR_ASSIGN +MOD_ASSIGN +LSHIFT_ASSIGN +RSHIFT_ASSIGN +URSHIFT_ASSIGN +Identifier +AT +ELLIPSIS +WS +COMMENT +LINE_COMMENT + +rule names: +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 +VOID +VOLATILE +WHILE +IntegerLiteral +DecimalIntegerLiteral +HexIntegerLiteral +OctalIntegerLiteral +BinaryIntegerLiteral +IntegerTypeSuffix +DecimalNumeral +Digits +Digit +NonZeroDigit +DigitsAndUnderscores +DigitOrUnderscore +Underscores +HexNumeral +HexDigits +HexDigit +HexDigitsAndUnderscores +HexDigitOrUnderscore +OctalNumeral +OctalDigits +OctalDigit +OctalDigitsAndUnderscores +OctalDigitOrUnderscore +BinaryNumeral +BinaryDigits +BinaryDigit +BinaryDigitsAndUnderscores +BinaryDigitOrUnderscore +FloatingPointLiteral +DecimalFloatingPointLiteral +ExponentPart +ExponentIndicator +SignedInteger +Sign +FloatTypeSuffix +HexadecimalFloatingPointLiteral +HexSignificand +BinaryExponent +BinaryExponentIndicator +BooleanLiteral +CharacterLiteral +SingleCharacter +StringLiteral +StringCharacters +StringCharacter +EscapeSequence +OctalEscape +ZeroToThree +UnicodeEscape +NullLiteral +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 +ARROW +COLONCOLON +ADD_ASSIGN +SUB_ASSIGN +MUL_ASSIGN +DIV_ASSIGN +AND_ASSIGN +OR_ASSIGN +XOR_ASSIGN +MOD_ASSIGN +LSHIFT_ASSIGN +RSHIFT_ASSIGN +URSHIFT_ASSIGN +Identifier +JavaLetter +JavaLetterOrDigit +AT +ELLIPSIS +WS +COMMENT +LINE_COMMENT + +channel names: +DEFAULT_TOKEN_CHANNEL +HIDDEN + +mode names: +DEFAULT_MODE + +atn: +[4, 0, 107, 1094, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 3, 50, 651, 8, 50, 1, 51, 1, 51, 3, 51, 655, 8, 51, 1, 52, 1, 52, 3, 52, 659, 8, 52, 1, 53, 1, 53, 3, 53, 663, 8, 53, 1, 54, 1, 54, 3, 54, 667, 8, 54, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 3, 56, 674, 8, 56, 1, 56, 1, 56, 1, 56, 3, 56, 679, 8, 56, 3, 56, 681, 8, 56, 1, 57, 1, 57, 3, 57, 685, 8, 57, 1, 57, 3, 57, 688, 8, 57, 1, 58, 1, 58, 3, 58, 692, 8, 58, 1, 59, 1, 59, 1, 60, 4, 60, 697, 8, 60, 11, 60, 12, 60, 698, 1, 61, 1, 61, 3, 61, 703, 8, 61, 1, 62, 4, 62, 706, 8, 62, 11, 62, 12, 62, 707, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 3, 64, 716, 8, 64, 1, 64, 3, 64, 719, 8, 64, 1, 65, 1, 65, 1, 66, 4, 66, 724, 8, 66, 11, 66, 12, 66, 725, 1, 67, 1, 67, 3, 67, 730, 8, 67, 1, 68, 1, 68, 3, 68, 734, 8, 68, 1, 68, 1, 68, 1, 69, 1, 69, 3, 69, 740, 8, 69, 1, 69, 3, 69, 743, 8, 69, 1, 70, 1, 70, 1, 71, 4, 71, 748, 8, 71, 11, 71, 12, 71, 749, 1, 72, 1, 72, 3, 72, 754, 8, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, 3, 74, 762, 8, 74, 1, 74, 3, 74, 765, 8, 74, 1, 75, 1, 75, 1, 76, 4, 76, 770, 8, 76, 11, 76, 12, 76, 771, 1, 77, 1, 77, 3, 77, 776, 8, 77, 1, 78, 1, 78, 3, 78, 780, 8, 78, 1, 79, 1, 79, 1, 79, 3, 79, 785, 8, 79, 1, 79, 3, 79, 788, 8, 79, 1, 79, 3, 79, 791, 8, 79, 1, 79, 1, 79, 1, 79, 3, 79, 796, 8, 79, 1, 79, 3, 79, 799, 8, 79, 1, 79, 1, 79, 1, 79, 3, 79, 804, 8, 79, 1, 79, 1, 79, 1, 79, 3, 79, 809, 8, 79, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 82, 3, 82, 817, 8, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 3, 85, 828, 8, 85, 1, 86, 1, 86, 3, 86, 832, 8, 86, 1, 86, 1, 86, 1, 86, 3, 86, 837, 8, 86, 1, 86, 1, 86, 3, 86, 841, 8, 86, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 3, 89, 857, 8, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 3, 90, 867, 8, 90, 1, 91, 1, 91, 1, 92, 1, 92, 3, 92, 873, 8, 92, 1, 92, 1, 92, 1, 93, 4, 93, 878, 8, 93, 11, 93, 12, 93, 879, 1, 94, 1, 94, 3, 94, 884, 8, 94, 1, 95, 1, 95, 1, 95, 1, 95, 3, 95, 890, 8, 95, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 3, 96, 903, 8, 96, 1, 97, 1, 97, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 100, 1, 100, 1, 101, 1, 101, 1, 102, 1, 102, 1, 103, 1, 103, 1, 104, 1, 104, 1, 105, 1, 105, 1, 106, 1, 106, 1, 107, 1, 107, 1, 108, 1, 108, 1, 109, 1, 109, 1, 110, 1, 110, 1, 111, 1, 111, 1, 112, 1, 112, 1, 113, 1, 113, 1, 114, 1, 114, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 1, 117, 1, 117, 1, 117, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 124, 1, 124, 1, 125, 1, 125, 1, 126, 1, 126, 1, 127, 1, 127, 1, 128, 1, 128, 1, 129, 1, 129, 1, 130, 1, 130, 1, 131, 1, 131, 1, 132, 1, 132, 1, 132, 1, 133, 1, 133, 1, 133, 1, 134, 1, 134, 1, 134, 1, 135, 1, 135, 1, 135, 1, 136, 1, 136, 1, 136, 1, 137, 1, 137, 1, 137, 1, 138, 1, 138, 1, 138, 1, 139, 1, 139, 1, 139, 1, 140, 1, 140, 1, 140, 1, 141, 1, 141, 1, 141, 1, 142, 1, 142, 1, 142, 1, 142, 1, 143, 1, 143, 1, 143, 1, 143, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 145, 1, 145, 5, 145, 1036, 8, 145, 10, 145, 12, 145, 1039, 9, 145, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 3, 146, 1047, 8, 146, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 3, 147, 1055, 8, 147, 1, 148, 1, 148, 1, 149, 1, 149, 1, 149, 1, 149, 1, 150, 4, 150, 1064, 8, 150, 11, 150, 12, 150, 1065, 1, 150, 1, 150, 1, 151, 1, 151, 1, 151, 1, 151, 5, 151, 1074, 8, 151, 10, 151, 12, 151, 1077, 9, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 152, 1, 152, 1, 152, 1, 152, 5, 152, 1088, 8, 152, 10, 152, 12, 152, 1091, 9, 152, 1, 152, 1, 152, 1, 1075, 0, 153, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, 38, 77, 39, 79, 40, 81, 41, 83, 42, 85, 43, 87, 44, 89, 45, 91, 46, 93, 47, 95, 48, 97, 49, 99, 50, 101, 51, 103, 0, 105, 0, 107, 0, 109, 0, 111, 0, 113, 0, 115, 0, 117, 0, 119, 0, 121, 0, 123, 0, 125, 0, 127, 0, 129, 0, 131, 0, 133, 0, 135, 0, 137, 0, 139, 0, 141, 0, 143, 0, 145, 0, 147, 0, 149, 0, 151, 0, 153, 0, 155, 0, 157, 52, 159, 0, 161, 0, 163, 0, 165, 0, 167, 0, 169, 0, 171, 0, 173, 0, 175, 0, 177, 0, 179, 53, 181, 54, 183, 0, 185, 55, 187, 0, 189, 0, 191, 0, 193, 0, 195, 0, 197, 0, 199, 56, 201, 57, 203, 58, 205, 59, 207, 60, 209, 61, 211, 62, 213, 63, 215, 64, 217, 65, 219, 66, 221, 67, 223, 68, 225, 69, 227, 70, 229, 71, 231, 72, 233, 73, 235, 74, 237, 75, 239, 76, 241, 77, 243, 78, 245, 79, 247, 80, 249, 81, 251, 82, 253, 83, 255, 84, 257, 85, 259, 86, 261, 87, 263, 88, 265, 89, 267, 90, 269, 91, 271, 92, 273, 93, 275, 94, 277, 95, 279, 96, 281, 97, 283, 98, 285, 99, 287, 100, 289, 101, 291, 102, 293, 0, 295, 0, 297, 103, 299, 104, 301, 105, 303, 106, 305, 107, 1, 0, 22, 2, 0, 76, 76, 108, 108, 1, 0, 49, 57, 2, 0, 88, 88, 120, 120, 3, 0, 48, 57, 65, 70, 97, 102, 1, 0, 48, 55, 2, 0, 66, 66, 98, 98, 1, 0, 48, 49, 2, 0, 69, 69, 101, 101, 2, 0, 43, 43, 45, 45, 4, 0, 68, 68, 70, 70, 100, 100, 102, 102, 2, 0, 80, 80, 112, 112, 2, 0, 39, 39, 92, 92, 2, 0, 34, 34, 92, 92, 8, 0, 34, 34, 39, 39, 92, 92, 98, 98, 102, 102, 110, 110, 114, 114, 116, 116, 1, 0, 48, 51, 4, 0, 36, 36, 65, 90, 95, 95, 97, 122, 2, 0, 0, 127, 55296, 56319, 1, 0, 55296, 56319, 1, 0, 56320, 57343, 5, 0, 36, 36, 48, 57, 65, 90, 95, 95, 97, 122, 3, 0, 9, 10, 12, 13, 32, 32, 2, 0, 10, 10, 13, 13, 1108, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, 83, 1, 0, 0, 0, 0, 85, 1, 0, 0, 0, 0, 87, 1, 0, 0, 0, 0, 89, 1, 0, 0, 0, 0, 91, 1, 0, 0, 0, 0, 93, 1, 0, 0, 0, 0, 95, 1, 0, 0, 0, 0, 97, 1, 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, 101, 1, 0, 0, 0, 0, 157, 1, 0, 0, 0, 0, 179, 1, 0, 0, 0, 0, 181, 1, 0, 0, 0, 0, 185, 1, 0, 0, 0, 0, 199, 1, 0, 0, 0, 0, 201, 1, 0, 0, 0, 0, 203, 1, 0, 0, 0, 0, 205, 1, 0, 0, 0, 0, 207, 1, 0, 0, 0, 0, 209, 1, 0, 0, 0, 0, 211, 1, 0, 0, 0, 0, 213, 1, 0, 0, 0, 0, 215, 1, 0, 0, 0, 0, 217, 1, 0, 0, 0, 0, 219, 1, 0, 0, 0, 0, 221, 1, 0, 0, 0, 0, 223, 1, 0, 0, 0, 0, 225, 1, 0, 0, 0, 0, 227, 1, 0, 0, 0, 0, 229, 1, 0, 0, 0, 0, 231, 1, 0, 0, 0, 0, 233, 1, 0, 0, 0, 0, 235, 1, 0, 0, 0, 0, 237, 1, 0, 0, 0, 0, 239, 1, 0, 0, 0, 0, 241, 1, 0, 0, 0, 0, 243, 1, 0, 0, 0, 0, 245, 1, 0, 0, 0, 0, 247, 1, 0, 0, 0, 0, 249, 1, 0, 0, 0, 0, 251, 1, 0, 0, 0, 0, 253, 1, 0, 0, 0, 0, 255, 1, 0, 0, 0, 0, 257, 1, 0, 0, 0, 0, 259, 1, 0, 0, 0, 0, 261, 1, 0, 0, 0, 0, 263, 1, 0, 0, 0, 0, 265, 1, 0, 0, 0, 0, 267, 1, 0, 0, 0, 0, 269, 1, 0, 0, 0, 0, 271, 1, 0, 0, 0, 0, 273, 1, 0, 0, 0, 0, 275, 1, 0, 0, 0, 0, 277, 1, 0, 0, 0, 0, 279, 1, 0, 0, 0, 0, 281, 1, 0, 0, 0, 0, 283, 1, 0, 0, 0, 0, 285, 1, 0, 0, 0, 0, 287, 1, 0, 0, 0, 0, 289, 1, 0, 0, 0, 0, 291, 1, 0, 0, 0, 0, 297, 1, 0, 0, 0, 0, 299, 1, 0, 0, 0, 0, 301, 1, 0, 0, 0, 0, 303, 1, 0, 0, 0, 0, 305, 1, 0, 0, 0, 1, 307, 1, 0, 0, 0, 3, 316, 1, 0, 0, 0, 5, 323, 1, 0, 0, 0, 7, 331, 1, 0, 0, 0, 9, 337, 1, 0, 0, 0, 11, 342, 1, 0, 0, 0, 13, 347, 1, 0, 0, 0, 15, 353, 1, 0, 0, 0, 17, 358, 1, 0, 0, 0, 19, 364, 1, 0, 0, 0, 21, 370, 1, 0, 0, 0, 23, 379, 1, 0, 0, 0, 25, 387, 1, 0, 0, 0, 27, 390, 1, 0, 0, 0, 29, 397, 1, 0, 0, 0, 31, 402, 1, 0, 0, 0, 33, 407, 1, 0, 0, 0, 35, 415, 1, 0, 0, 0, 37, 421, 1, 0, 0, 0, 39, 429, 1, 0, 0, 0, 41, 435, 1, 0, 0, 0, 43, 439, 1, 0, 0, 0, 45, 442, 1, 0, 0, 0, 47, 447, 1, 0, 0, 0, 49, 458, 1, 0, 0, 0, 51, 465, 1, 0, 0, 0, 53, 476, 1, 0, 0, 0, 55, 480, 1, 0, 0, 0, 57, 490, 1, 0, 0, 0, 59, 495, 1, 0, 0, 0, 61, 502, 1, 0, 0, 0, 63, 506, 1, 0, 0, 0, 65, 514, 1, 0, 0, 0, 67, 522, 1, 0, 0, 0, 69, 532, 1, 0, 0, 0, 71, 539, 1, 0, 0, 0, 73, 546, 1, 0, 0, 0, 75, 552, 1, 0, 0, 0, 77, 559, 1, 0, 0, 0, 79, 568, 1, 0, 0, 0, 81, 574, 1, 0, 0, 0, 83, 581, 1, 0, 0, 0, 85, 594, 1, 0, 0, 0, 87, 599, 1, 0, 0, 0, 89, 605, 1, 0, 0, 0, 91, 612, 1, 0, 0, 0, 93, 622, 1, 0, 0, 0, 95, 626, 1, 0, 0, 0, 97, 631, 1, 0, 0, 0, 99, 640, 1, 0, 0, 0, 101, 650, 1, 0, 0, 0, 103, 652, 1, 0, 0, 0, 105, 656, 1, 0, 0, 0, 107, 660, 1, 0, 0, 0, 109, 664, 1, 0, 0, 0, 111, 668, 1, 0, 0, 0, 113, 680, 1, 0, 0, 0, 115, 682, 1, 0, 0, 0, 117, 691, 1, 0, 0, 0, 119, 693, 1, 0, 0, 0, 121, 696, 1, 0, 0, 0, 123, 702, 1, 0, 0, 0, 125, 705, 1, 0, 0, 0, 127, 709, 1, 0, 0, 0, 129, 713, 1, 0, 0, 0, 131, 720, 1, 0, 0, 0, 133, 723, 1, 0, 0, 0, 135, 729, 1, 0, 0, 0, 137, 731, 1, 0, 0, 0, 139, 737, 1, 0, 0, 0, 141, 744, 1, 0, 0, 0, 143, 747, 1, 0, 0, 0, 145, 753, 1, 0, 0, 0, 147, 755, 1, 0, 0, 0, 149, 759, 1, 0, 0, 0, 151, 766, 1, 0, 0, 0, 153, 769, 1, 0, 0, 0, 155, 775, 1, 0, 0, 0, 157, 779, 1, 0, 0, 0, 159, 808, 1, 0, 0, 0, 161, 810, 1, 0, 0, 0, 163, 813, 1, 0, 0, 0, 165, 816, 1, 0, 0, 0, 167, 820, 1, 0, 0, 0, 169, 822, 1, 0, 0, 0, 171, 824, 1, 0, 0, 0, 173, 840, 1, 0, 0, 0, 175, 842, 1, 0, 0, 0, 177, 845, 1, 0, 0, 0, 179, 856, 1, 0, 0, 0, 181, 866, 1, 0, 0, 0, 183, 868, 1, 0, 0, 0, 185, 870, 1, 0, 0, 0, 187, 877, 1, 0, 0, 0, 189, 883, 1, 0, 0, 0, 191, 889, 1, 0, 0, 0, 193, 902, 1, 0, 0, 0, 195, 904, 1, 0, 0, 0, 197, 906, 1, 0, 0, 0, 199, 913, 1, 0, 0, 0, 201, 918, 1, 0, 0, 0, 203, 920, 1, 0, 0, 0, 205, 922, 1, 0, 0, 0, 207, 924, 1, 0, 0, 0, 209, 926, 1, 0, 0, 0, 211, 928, 1, 0, 0, 0, 213, 930, 1, 0, 0, 0, 215, 932, 1, 0, 0, 0, 217, 934, 1, 0, 0, 0, 219, 936, 1, 0, 0, 0, 221, 938, 1, 0, 0, 0, 223, 940, 1, 0, 0, 0, 225, 942, 1, 0, 0, 0, 227, 944, 1, 0, 0, 0, 229, 946, 1, 0, 0, 0, 231, 948, 1, 0, 0, 0, 233, 950, 1, 0, 0, 0, 235, 953, 1, 0, 0, 0, 237, 956, 1, 0, 0, 0, 239, 959, 1, 0, 0, 0, 241, 962, 1, 0, 0, 0, 243, 965, 1, 0, 0, 0, 245, 968, 1, 0, 0, 0, 247, 971, 1, 0, 0, 0, 249, 974, 1, 0, 0, 0, 251, 976, 1, 0, 0, 0, 253, 978, 1, 0, 0, 0, 255, 980, 1, 0, 0, 0, 257, 982, 1, 0, 0, 0, 259, 984, 1, 0, 0, 0, 261, 986, 1, 0, 0, 0, 263, 988, 1, 0, 0, 0, 265, 990, 1, 0, 0, 0, 267, 993, 1, 0, 0, 0, 269, 996, 1, 0, 0, 0, 271, 999, 1, 0, 0, 0, 273, 1002, 1, 0, 0, 0, 275, 1005, 1, 0, 0, 0, 277, 1008, 1, 0, 0, 0, 279, 1011, 1, 0, 0, 0, 281, 1014, 1, 0, 0, 0, 283, 1017, 1, 0, 0, 0, 285, 1020, 1, 0, 0, 0, 287, 1024, 1, 0, 0, 0, 289, 1028, 1, 0, 0, 0, 291, 1033, 1, 0, 0, 0, 293, 1046, 1, 0, 0, 0, 295, 1054, 1, 0, 0, 0, 297, 1056, 1, 0, 0, 0, 299, 1058, 1, 0, 0, 0, 301, 1063, 1, 0, 0, 0, 303, 1069, 1, 0, 0, 0, 305, 1083, 1, 0, 0, 0, 307, 308, 5, 97, 0, 0, 308, 309, 5, 98, 0, 0, 309, 310, 5, 115, 0, 0, 310, 311, 5, 116, 0, 0, 311, 312, 5, 114, 0, 0, 312, 313, 5, 97, 0, 0, 313, 314, 5, 99, 0, 0, 314, 315, 5, 116, 0, 0, 315, 2, 1, 0, 0, 0, 316, 317, 5, 97, 0, 0, 317, 318, 5, 115, 0, 0, 318, 319, 5, 115, 0, 0, 319, 320, 5, 101, 0, 0, 320, 321, 5, 114, 0, 0, 321, 322, 5, 116, 0, 0, 322, 4, 1, 0, 0, 0, 323, 324, 5, 98, 0, 0, 324, 325, 5, 111, 0, 0, 325, 326, 5, 111, 0, 0, 326, 327, 5, 108, 0, 0, 327, 328, 5, 101, 0, 0, 328, 329, 5, 97, 0, 0, 329, 330, 5, 110, 0, 0, 330, 6, 1, 0, 0, 0, 331, 332, 5, 98, 0, 0, 332, 333, 5, 114, 0, 0, 333, 334, 5, 101, 0, 0, 334, 335, 5, 97, 0, 0, 335, 336, 5, 107, 0, 0, 336, 8, 1, 0, 0, 0, 337, 338, 5, 98, 0, 0, 338, 339, 5, 121, 0, 0, 339, 340, 5, 116, 0, 0, 340, 341, 5, 101, 0, 0, 341, 10, 1, 0, 0, 0, 342, 343, 5, 99, 0, 0, 343, 344, 5, 97, 0, 0, 344, 345, 5, 115, 0, 0, 345, 346, 5, 101, 0, 0, 346, 12, 1, 0, 0, 0, 347, 348, 5, 99, 0, 0, 348, 349, 5, 97, 0, 0, 349, 350, 5, 116, 0, 0, 350, 351, 5, 99, 0, 0, 351, 352, 5, 104, 0, 0, 352, 14, 1, 0, 0, 0, 353, 354, 5, 99, 0, 0, 354, 355, 5, 104, 0, 0, 355, 356, 5, 97, 0, 0, 356, 357, 5, 114, 0, 0, 357, 16, 1, 0, 0, 0, 358, 359, 5, 99, 0, 0, 359, 360, 5, 108, 0, 0, 360, 361, 5, 97, 0, 0, 361, 362, 5, 115, 0, 0, 362, 363, 5, 115, 0, 0, 363, 18, 1, 0, 0, 0, 364, 365, 5, 99, 0, 0, 365, 366, 5, 111, 0, 0, 366, 367, 5, 110, 0, 0, 367, 368, 5, 115, 0, 0, 368, 369, 5, 116, 0, 0, 369, 20, 1, 0, 0, 0, 370, 371, 5, 99, 0, 0, 371, 372, 5, 111, 0, 0, 372, 373, 5, 110, 0, 0, 373, 374, 5, 116, 0, 0, 374, 375, 5, 105, 0, 0, 375, 376, 5, 110, 0, 0, 376, 377, 5, 117, 0, 0, 377, 378, 5, 101, 0, 0, 378, 22, 1, 0, 0, 0, 379, 380, 5, 100, 0, 0, 380, 381, 5, 101, 0, 0, 381, 382, 5, 102, 0, 0, 382, 383, 5, 97, 0, 0, 383, 384, 5, 117, 0, 0, 384, 385, 5, 108, 0, 0, 385, 386, 5, 116, 0, 0, 386, 24, 1, 0, 0, 0, 387, 388, 5, 100, 0, 0, 388, 389, 5, 111, 0, 0, 389, 26, 1, 0, 0, 0, 390, 391, 5, 100, 0, 0, 391, 392, 5, 111, 0, 0, 392, 393, 5, 117, 0, 0, 393, 394, 5, 98, 0, 0, 394, 395, 5, 108, 0, 0, 395, 396, 5, 101, 0, 0, 396, 28, 1, 0, 0, 0, 397, 398, 5, 101, 0, 0, 398, 399, 5, 108, 0, 0, 399, 400, 5, 115, 0, 0, 400, 401, 5, 101, 0, 0, 401, 30, 1, 0, 0, 0, 402, 403, 5, 101, 0, 0, 403, 404, 5, 110, 0, 0, 404, 405, 5, 117, 0, 0, 405, 406, 5, 109, 0, 0, 406, 32, 1, 0, 0, 0, 407, 408, 5, 101, 0, 0, 408, 409, 5, 120, 0, 0, 409, 410, 5, 116, 0, 0, 410, 411, 5, 101, 0, 0, 411, 412, 5, 110, 0, 0, 412, 413, 5, 100, 0, 0, 413, 414, 5, 115, 0, 0, 414, 34, 1, 0, 0, 0, 415, 416, 5, 102, 0, 0, 416, 417, 5, 105, 0, 0, 417, 418, 5, 110, 0, 0, 418, 419, 5, 97, 0, 0, 419, 420, 5, 108, 0, 0, 420, 36, 1, 0, 0, 0, 421, 422, 5, 102, 0, 0, 422, 423, 5, 105, 0, 0, 423, 424, 5, 110, 0, 0, 424, 425, 5, 97, 0, 0, 425, 426, 5, 108, 0, 0, 426, 427, 5, 108, 0, 0, 427, 428, 5, 121, 0, 0, 428, 38, 1, 0, 0, 0, 429, 430, 5, 102, 0, 0, 430, 431, 5, 108, 0, 0, 431, 432, 5, 111, 0, 0, 432, 433, 5, 97, 0, 0, 433, 434, 5, 116, 0, 0, 434, 40, 1, 0, 0, 0, 435, 436, 5, 102, 0, 0, 436, 437, 5, 111, 0, 0, 437, 438, 5, 114, 0, 0, 438, 42, 1, 0, 0, 0, 439, 440, 5, 105, 0, 0, 440, 441, 5, 102, 0, 0, 441, 44, 1, 0, 0, 0, 442, 443, 5, 103, 0, 0, 443, 444, 5, 111, 0, 0, 444, 445, 5, 116, 0, 0, 445, 446, 5, 111, 0, 0, 446, 46, 1, 0, 0, 0, 447, 448, 5, 105, 0, 0, 448, 449, 5, 109, 0, 0, 449, 450, 5, 112, 0, 0, 450, 451, 5, 108, 0, 0, 451, 452, 5, 101, 0, 0, 452, 453, 5, 109, 0, 0, 453, 454, 5, 101, 0, 0, 454, 455, 5, 110, 0, 0, 455, 456, 5, 116, 0, 0, 456, 457, 5, 115, 0, 0, 457, 48, 1, 0, 0, 0, 458, 459, 5, 105, 0, 0, 459, 460, 5, 109, 0, 0, 460, 461, 5, 112, 0, 0, 461, 462, 5, 111, 0, 0, 462, 463, 5, 114, 0, 0, 463, 464, 5, 116, 0, 0, 464, 50, 1, 0, 0, 0, 465, 466, 5, 105, 0, 0, 466, 467, 5, 110, 0, 0, 467, 468, 5, 115, 0, 0, 468, 469, 5, 116, 0, 0, 469, 470, 5, 97, 0, 0, 470, 471, 5, 110, 0, 0, 471, 472, 5, 99, 0, 0, 472, 473, 5, 101, 0, 0, 473, 474, 5, 111, 0, 0, 474, 475, 5, 102, 0, 0, 475, 52, 1, 0, 0, 0, 476, 477, 5, 105, 0, 0, 477, 478, 5, 110, 0, 0, 478, 479, 5, 116, 0, 0, 479, 54, 1, 0, 0, 0, 480, 481, 5, 105, 0, 0, 481, 482, 5, 110, 0, 0, 482, 483, 5, 116, 0, 0, 483, 484, 5, 101, 0, 0, 484, 485, 5, 114, 0, 0, 485, 486, 5, 102, 0, 0, 486, 487, 5, 97, 0, 0, 487, 488, 5, 99, 0, 0, 488, 489, 5, 101, 0, 0, 489, 56, 1, 0, 0, 0, 490, 491, 5, 108, 0, 0, 491, 492, 5, 111, 0, 0, 492, 493, 5, 110, 0, 0, 493, 494, 5, 103, 0, 0, 494, 58, 1, 0, 0, 0, 495, 496, 5, 110, 0, 0, 496, 497, 5, 97, 0, 0, 497, 498, 5, 116, 0, 0, 498, 499, 5, 105, 0, 0, 499, 500, 5, 118, 0, 0, 500, 501, 5, 101, 0, 0, 501, 60, 1, 0, 0, 0, 502, 503, 5, 110, 0, 0, 503, 504, 5, 101, 0, 0, 504, 505, 5, 119, 0, 0, 505, 62, 1, 0, 0, 0, 506, 507, 5, 112, 0, 0, 507, 508, 5, 97, 0, 0, 508, 509, 5, 99, 0, 0, 509, 510, 5, 107, 0, 0, 510, 511, 5, 97, 0, 0, 511, 512, 5, 103, 0, 0, 512, 513, 5, 101, 0, 0, 513, 64, 1, 0, 0, 0, 514, 515, 5, 112, 0, 0, 515, 516, 5, 114, 0, 0, 516, 517, 5, 105, 0, 0, 517, 518, 5, 118, 0, 0, 518, 519, 5, 97, 0, 0, 519, 520, 5, 116, 0, 0, 520, 521, 5, 101, 0, 0, 521, 66, 1, 0, 0, 0, 522, 523, 5, 112, 0, 0, 523, 524, 5, 114, 0, 0, 524, 525, 5, 111, 0, 0, 525, 526, 5, 116, 0, 0, 526, 527, 5, 101, 0, 0, 527, 528, 5, 99, 0, 0, 528, 529, 5, 116, 0, 0, 529, 530, 5, 101, 0, 0, 530, 531, 5, 100, 0, 0, 531, 68, 1, 0, 0, 0, 532, 533, 5, 112, 0, 0, 533, 534, 5, 117, 0, 0, 534, 535, 5, 98, 0, 0, 535, 536, 5, 108, 0, 0, 536, 537, 5, 105, 0, 0, 537, 538, 5, 99, 0, 0, 538, 70, 1, 0, 0, 0, 539, 540, 5, 114, 0, 0, 540, 541, 5, 101, 0, 0, 541, 542, 5, 116, 0, 0, 542, 543, 5, 117, 0, 0, 543, 544, 5, 114, 0, 0, 544, 545, 5, 110, 0, 0, 545, 72, 1, 0, 0, 0, 546, 547, 5, 115, 0, 0, 547, 548, 5, 104, 0, 0, 548, 549, 5, 111, 0, 0, 549, 550, 5, 114, 0, 0, 550, 551, 5, 116, 0, 0, 551, 74, 1, 0, 0, 0, 552, 553, 5, 115, 0, 0, 553, 554, 5, 116, 0, 0, 554, 555, 5, 97, 0, 0, 555, 556, 5, 116, 0, 0, 556, 557, 5, 105, 0, 0, 557, 558, 5, 99, 0, 0, 558, 76, 1, 0, 0, 0, 559, 560, 5, 115, 0, 0, 560, 561, 5, 116, 0, 0, 561, 562, 5, 114, 0, 0, 562, 563, 5, 105, 0, 0, 563, 564, 5, 99, 0, 0, 564, 565, 5, 116, 0, 0, 565, 566, 5, 102, 0, 0, 566, 567, 5, 112, 0, 0, 567, 78, 1, 0, 0, 0, 568, 569, 5, 115, 0, 0, 569, 570, 5, 117, 0, 0, 570, 571, 5, 112, 0, 0, 571, 572, 5, 101, 0, 0, 572, 573, 5, 114, 0, 0, 573, 80, 1, 0, 0, 0, 574, 575, 5, 115, 0, 0, 575, 576, 5, 119, 0, 0, 576, 577, 5, 105, 0, 0, 577, 578, 5, 116, 0, 0, 578, 579, 5, 99, 0, 0, 579, 580, 5, 104, 0, 0, 580, 82, 1, 0, 0, 0, 581, 582, 5, 115, 0, 0, 582, 583, 5, 121, 0, 0, 583, 584, 5, 110, 0, 0, 584, 585, 5, 99, 0, 0, 585, 586, 5, 104, 0, 0, 586, 587, 5, 114, 0, 0, 587, 588, 5, 111, 0, 0, 588, 589, 5, 110, 0, 0, 589, 590, 5, 105, 0, 0, 590, 591, 5, 122, 0, 0, 591, 592, 5, 101, 0, 0, 592, 593, 5, 100, 0, 0, 593, 84, 1, 0, 0, 0, 594, 595, 5, 116, 0, 0, 595, 596, 5, 104, 0, 0, 596, 597, 5, 105, 0, 0, 597, 598, 5, 115, 0, 0, 598, 86, 1, 0, 0, 0, 599, 600, 5, 116, 0, 0, 600, 601, 5, 104, 0, 0, 601, 602, 5, 114, 0, 0, 602, 603, 5, 111, 0, 0, 603, 604, 5, 119, 0, 0, 604, 88, 1, 0, 0, 0, 605, 606, 5, 116, 0, 0, 606, 607, 5, 104, 0, 0, 607, 608, 5, 114, 0, 0, 608, 609, 5, 111, 0, 0, 609, 610, 5, 119, 0, 0, 610, 611, 5, 115, 0, 0, 611, 90, 1, 0, 0, 0, 612, 613, 5, 116, 0, 0, 613, 614, 5, 114, 0, 0, 614, 615, 5, 97, 0, 0, 615, 616, 5, 110, 0, 0, 616, 617, 5, 115, 0, 0, 617, 618, 5, 105, 0, 0, 618, 619, 5, 101, 0, 0, 619, 620, 5, 110, 0, 0, 620, 621, 5, 116, 0, 0, 621, 92, 1, 0, 0, 0, 622, 623, 5, 116, 0, 0, 623, 624, 5, 114, 0, 0, 624, 625, 5, 121, 0, 0, 625, 94, 1, 0, 0, 0, 626, 627, 5, 118, 0, 0, 627, 628, 5, 111, 0, 0, 628, 629, 5, 105, 0, 0, 629, 630, 5, 100, 0, 0, 630, 96, 1, 0, 0, 0, 631, 632, 5, 118, 0, 0, 632, 633, 5, 111, 0, 0, 633, 634, 5, 108, 0, 0, 634, 635, 5, 97, 0, 0, 635, 636, 5, 116, 0, 0, 636, 637, 5, 105, 0, 0, 637, 638, 5, 108, 0, 0, 638, 639, 5, 101, 0, 0, 639, 98, 1, 0, 0, 0, 640, 641, 5, 119, 0, 0, 641, 642, 5, 104, 0, 0, 642, 643, 5, 105, 0, 0, 643, 644, 5, 108, 0, 0, 644, 645, 5, 101, 0, 0, 645, 100, 1, 0, 0, 0, 646, 651, 3, 103, 51, 0, 647, 651, 3, 105, 52, 0, 648, 651, 3, 107, 53, 0, 649, 651, 3, 109, 54, 0, 650, 646, 1, 0, 0, 0, 650, 647, 1, 0, 0, 0, 650, 648, 1, 0, 0, 0, 650, 649, 1, 0, 0, 0, 651, 102, 1, 0, 0, 0, 652, 654, 3, 113, 56, 0, 653, 655, 3, 111, 55, 0, 654, 653, 1, 0, 0, 0, 654, 655, 1, 0, 0, 0, 655, 104, 1, 0, 0, 0, 656, 658, 3, 127, 63, 0, 657, 659, 3, 111, 55, 0, 658, 657, 1, 0, 0, 0, 658, 659, 1, 0, 0, 0, 659, 106, 1, 0, 0, 0, 660, 662, 3, 137, 68, 0, 661, 663, 3, 111, 55, 0, 662, 661, 1, 0, 0, 0, 662, 663, 1, 0, 0, 0, 663, 108, 1, 0, 0, 0, 664, 666, 3, 147, 73, 0, 665, 667, 3, 111, 55, 0, 666, 665, 1, 0, 0, 0, 666, 667, 1, 0, 0, 0, 667, 110, 1, 0, 0, 0, 668, 669, 7, 0, 0, 0, 669, 112, 1, 0, 0, 0, 670, 681, 5, 48, 0, 0, 671, 678, 3, 119, 59, 0, 672, 674, 3, 115, 57, 0, 673, 672, 1, 0, 0, 0, 673, 674, 1, 0, 0, 0, 674, 679, 1, 0, 0, 0, 675, 676, 3, 125, 62, 0, 676, 677, 3, 115, 57, 0, 677, 679, 1, 0, 0, 0, 678, 673, 1, 0, 0, 0, 678, 675, 1, 0, 0, 0, 679, 681, 1, 0, 0, 0, 680, 670, 1, 0, 0, 0, 680, 671, 1, 0, 0, 0, 681, 114, 1, 0, 0, 0, 682, 687, 3, 117, 58, 0, 683, 685, 3, 121, 60, 0, 684, 683, 1, 0, 0, 0, 684, 685, 1, 0, 0, 0, 685, 686, 1, 0, 0, 0, 686, 688, 3, 117, 58, 0, 687, 684, 1, 0, 0, 0, 687, 688, 1, 0, 0, 0, 688, 116, 1, 0, 0, 0, 689, 692, 5, 48, 0, 0, 690, 692, 3, 119, 59, 0, 691, 689, 1, 0, 0, 0, 691, 690, 1, 0, 0, 0, 692, 118, 1, 0, 0, 0, 693, 694, 7, 1, 0, 0, 694, 120, 1, 0, 0, 0, 695, 697, 3, 123, 61, 0, 696, 695, 1, 0, 0, 0, 697, 698, 1, 0, 0, 0, 698, 696, 1, 0, 0, 0, 698, 699, 1, 0, 0, 0, 699, 122, 1, 0, 0, 0, 700, 703, 3, 117, 58, 0, 701, 703, 5, 95, 0, 0, 702, 700, 1, 0, 0, 0, 702, 701, 1, 0, 0, 0, 703, 124, 1, 0, 0, 0, 704, 706, 5, 95, 0, 0, 705, 704, 1, 0, 0, 0, 706, 707, 1, 0, 0, 0, 707, 705, 1, 0, 0, 0, 707, 708, 1, 0, 0, 0, 708, 126, 1, 0, 0, 0, 709, 710, 5, 48, 0, 0, 710, 711, 7, 2, 0, 0, 711, 712, 3, 129, 64, 0, 712, 128, 1, 0, 0, 0, 713, 718, 3, 131, 65, 0, 714, 716, 3, 133, 66, 0, 715, 714, 1, 0, 0, 0, 715, 716, 1, 0, 0, 0, 716, 717, 1, 0, 0, 0, 717, 719, 3, 131, 65, 0, 718, 715, 1, 0, 0, 0, 718, 719, 1, 0, 0, 0, 719, 130, 1, 0, 0, 0, 720, 721, 7, 3, 0, 0, 721, 132, 1, 0, 0, 0, 722, 724, 3, 135, 67, 0, 723, 722, 1, 0, 0, 0, 724, 725, 1, 0, 0, 0, 725, 723, 1, 0, 0, 0, 725, 726, 1, 0, 0, 0, 726, 134, 1, 0, 0, 0, 727, 730, 3, 131, 65, 0, 728, 730, 5, 95, 0, 0, 729, 727, 1, 0, 0, 0, 729, 728, 1, 0, 0, 0, 730, 136, 1, 0, 0, 0, 731, 733, 5, 48, 0, 0, 732, 734, 3, 125, 62, 0, 733, 732, 1, 0, 0, 0, 733, 734, 1, 0, 0, 0, 734, 735, 1, 0, 0, 0, 735, 736, 3, 139, 69, 0, 736, 138, 1, 0, 0, 0, 737, 742, 3, 141, 70, 0, 738, 740, 3, 143, 71, 0, 739, 738, 1, 0, 0, 0, 739, 740, 1, 0, 0, 0, 740, 741, 1, 0, 0, 0, 741, 743, 3, 141, 70, 0, 742, 739, 1, 0, 0, 0, 742, 743, 1, 0, 0, 0, 743, 140, 1, 0, 0, 0, 744, 745, 7, 4, 0, 0, 745, 142, 1, 0, 0, 0, 746, 748, 3, 145, 72, 0, 747, 746, 1, 0, 0, 0, 748, 749, 1, 0, 0, 0, 749, 747, 1, 0, 0, 0, 749, 750, 1, 0, 0, 0, 750, 144, 1, 0, 0, 0, 751, 754, 3, 141, 70, 0, 752, 754, 5, 95, 0, 0, 753, 751, 1, 0, 0, 0, 753, 752, 1, 0, 0, 0, 754, 146, 1, 0, 0, 0, 755, 756, 5, 48, 0, 0, 756, 757, 7, 5, 0, 0, 757, 758, 3, 149, 74, 0, 758, 148, 1, 0, 0, 0, 759, 764, 3, 151, 75, 0, 760, 762, 3, 153, 76, 0, 761, 760, 1, 0, 0, 0, 761, 762, 1, 0, 0, 0, 762, 763, 1, 0, 0, 0, 763, 765, 3, 151, 75, 0, 764, 761, 1, 0, 0, 0, 764, 765, 1, 0, 0, 0, 765, 150, 1, 0, 0, 0, 766, 767, 7, 6, 0, 0, 767, 152, 1, 0, 0, 0, 768, 770, 3, 155, 77, 0, 769, 768, 1, 0, 0, 0, 770, 771, 1, 0, 0, 0, 771, 769, 1, 0, 0, 0, 771, 772, 1, 0, 0, 0, 772, 154, 1, 0, 0, 0, 773, 776, 3, 151, 75, 0, 774, 776, 5, 95, 0, 0, 775, 773, 1, 0, 0, 0, 775, 774, 1, 0, 0, 0, 776, 156, 1, 0, 0, 0, 777, 780, 3, 159, 79, 0, 778, 780, 3, 171, 85, 0, 779, 777, 1, 0, 0, 0, 779, 778, 1, 0, 0, 0, 780, 158, 1, 0, 0, 0, 781, 782, 3, 115, 57, 0, 782, 784, 5, 46, 0, 0, 783, 785, 3, 115, 57, 0, 784, 783, 1, 0, 0, 0, 784, 785, 1, 0, 0, 0, 785, 787, 1, 0, 0, 0, 786, 788, 3, 161, 80, 0, 787, 786, 1, 0, 0, 0, 787, 788, 1, 0, 0, 0, 788, 790, 1, 0, 0, 0, 789, 791, 3, 169, 84, 0, 790, 789, 1, 0, 0, 0, 790, 791, 1, 0, 0, 0, 791, 809, 1, 0, 0, 0, 792, 793, 5, 46, 0, 0, 793, 795, 3, 115, 57, 0, 794, 796, 3, 161, 80, 0, 795, 794, 1, 0, 0, 0, 795, 796, 1, 0, 0, 0, 796, 798, 1, 0, 0, 0, 797, 799, 3, 169, 84, 0, 798, 797, 1, 0, 0, 0, 798, 799, 1, 0, 0, 0, 799, 809, 1, 0, 0, 0, 800, 801, 3, 115, 57, 0, 801, 803, 3, 161, 80, 0, 802, 804, 3, 169, 84, 0, 803, 802, 1, 0, 0, 0, 803, 804, 1, 0, 0, 0, 804, 809, 1, 0, 0, 0, 805, 806, 3, 115, 57, 0, 806, 807, 3, 169, 84, 0, 807, 809, 1, 0, 0, 0, 808, 781, 1, 0, 0, 0, 808, 792, 1, 0, 0, 0, 808, 800, 1, 0, 0, 0, 808, 805, 1, 0, 0, 0, 809, 160, 1, 0, 0, 0, 810, 811, 3, 163, 81, 0, 811, 812, 3, 165, 82, 0, 812, 162, 1, 0, 0, 0, 813, 814, 7, 7, 0, 0, 814, 164, 1, 0, 0, 0, 815, 817, 3, 167, 83, 0, 816, 815, 1, 0, 0, 0, 816, 817, 1, 0, 0, 0, 817, 818, 1, 0, 0, 0, 818, 819, 3, 115, 57, 0, 819, 166, 1, 0, 0, 0, 820, 821, 7, 8, 0, 0, 821, 168, 1, 0, 0, 0, 822, 823, 7, 9, 0, 0, 823, 170, 1, 0, 0, 0, 824, 825, 3, 173, 86, 0, 825, 827, 3, 175, 87, 0, 826, 828, 3, 169, 84, 0, 827, 826, 1, 0, 0, 0, 827, 828, 1, 0, 0, 0, 828, 172, 1, 0, 0, 0, 829, 831, 3, 127, 63, 0, 830, 832, 5, 46, 0, 0, 831, 830, 1, 0, 0, 0, 831, 832, 1, 0, 0, 0, 832, 841, 1, 0, 0, 0, 833, 834, 5, 48, 0, 0, 834, 836, 7, 2, 0, 0, 835, 837, 3, 129, 64, 0, 836, 835, 1, 0, 0, 0, 836, 837, 1, 0, 0, 0, 837, 838, 1, 0, 0, 0, 838, 839, 5, 46, 0, 0, 839, 841, 3, 129, 64, 0, 840, 829, 1, 0, 0, 0, 840, 833, 1, 0, 0, 0, 841, 174, 1, 0, 0, 0, 842, 843, 3, 177, 88, 0, 843, 844, 3, 165, 82, 0, 844, 176, 1, 0, 0, 0, 845, 846, 7, 10, 0, 0, 846, 178, 1, 0, 0, 0, 847, 848, 5, 116, 0, 0, 848, 849, 5, 114, 0, 0, 849, 850, 5, 117, 0, 0, 850, 857, 5, 101, 0, 0, 851, 852, 5, 102, 0, 0, 852, 853, 5, 97, 0, 0, 853, 854, 5, 108, 0, 0, 854, 855, 5, 115, 0, 0, 855, 857, 5, 101, 0, 0, 856, 847, 1, 0, 0, 0, 856, 851, 1, 0, 0, 0, 857, 180, 1, 0, 0, 0, 858, 859, 5, 39, 0, 0, 859, 860, 3, 183, 91, 0, 860, 861, 5, 39, 0, 0, 861, 867, 1, 0, 0, 0, 862, 863, 5, 39, 0, 0, 863, 864, 3, 191, 95, 0, 864, 865, 5, 39, 0, 0, 865, 867, 1, 0, 0, 0, 866, 858, 1, 0, 0, 0, 866, 862, 1, 0, 0, 0, 867, 182, 1, 0, 0, 0, 868, 869, 8, 11, 0, 0, 869, 184, 1, 0, 0, 0, 870, 872, 5, 34, 0, 0, 871, 873, 3, 187, 93, 0, 872, 871, 1, 0, 0, 0, 872, 873, 1, 0, 0, 0, 873, 874, 1, 0, 0, 0, 874, 875, 5, 34, 0, 0, 875, 186, 1, 0, 0, 0, 876, 878, 3, 189, 94, 0, 877, 876, 1, 0, 0, 0, 878, 879, 1, 0, 0, 0, 879, 877, 1, 0, 0, 0, 879, 880, 1, 0, 0, 0, 880, 188, 1, 0, 0, 0, 881, 884, 8, 12, 0, 0, 882, 884, 3, 191, 95, 0, 883, 881, 1, 0, 0, 0, 883, 882, 1, 0, 0, 0, 884, 190, 1, 0, 0, 0, 885, 886, 5, 92, 0, 0, 886, 890, 7, 13, 0, 0, 887, 890, 3, 193, 96, 0, 888, 890, 3, 197, 98, 0, 889, 885, 1, 0, 0, 0, 889, 887, 1, 0, 0, 0, 889, 888, 1, 0, 0, 0, 890, 192, 1, 0, 0, 0, 891, 892, 5, 92, 0, 0, 892, 903, 3, 141, 70, 0, 893, 894, 5, 92, 0, 0, 894, 895, 3, 141, 70, 0, 895, 896, 3, 141, 70, 0, 896, 903, 1, 0, 0, 0, 897, 898, 5, 92, 0, 0, 898, 899, 3, 195, 97, 0, 899, 900, 3, 141, 70, 0, 900, 901, 3, 141, 70, 0, 901, 903, 1, 0, 0, 0, 902, 891, 1, 0, 0, 0, 902, 893, 1, 0, 0, 0, 902, 897, 1, 0, 0, 0, 903, 194, 1, 0, 0, 0, 904, 905, 7, 14, 0, 0, 905, 196, 1, 0, 0, 0, 906, 907, 5, 92, 0, 0, 907, 908, 5, 117, 0, 0, 908, 909, 3, 131, 65, 0, 909, 910, 3, 131, 65, 0, 910, 911, 3, 131, 65, 0, 911, 912, 3, 131, 65, 0, 912, 198, 1, 0, 0, 0, 913, 914, 5, 110, 0, 0, 914, 915, 5, 117, 0, 0, 915, 916, 5, 108, 0, 0, 916, 917, 5, 108, 0, 0, 917, 200, 1, 0, 0, 0, 918, 919, 5, 40, 0, 0, 919, 202, 1, 0, 0, 0, 920, 921, 5, 41, 0, 0, 921, 204, 1, 0, 0, 0, 922, 923, 5, 123, 0, 0, 923, 206, 1, 0, 0, 0, 924, 925, 5, 125, 0, 0, 925, 208, 1, 0, 0, 0, 926, 927, 5, 91, 0, 0, 927, 210, 1, 0, 0, 0, 928, 929, 5, 93, 0, 0, 929, 212, 1, 0, 0, 0, 930, 931, 5, 59, 0, 0, 931, 214, 1, 0, 0, 0, 932, 933, 5, 44, 0, 0, 933, 216, 1, 0, 0, 0, 934, 935, 5, 46, 0, 0, 935, 218, 1, 0, 0, 0, 936, 937, 5, 61, 0, 0, 937, 220, 1, 0, 0, 0, 938, 939, 5, 62, 0, 0, 939, 222, 1, 0, 0, 0, 940, 941, 5, 60, 0, 0, 941, 224, 1, 0, 0, 0, 942, 943, 5, 33, 0, 0, 943, 226, 1, 0, 0, 0, 944, 945, 5, 126, 0, 0, 945, 228, 1, 0, 0, 0, 946, 947, 5, 63, 0, 0, 947, 230, 1, 0, 0, 0, 948, 949, 5, 58, 0, 0, 949, 232, 1, 0, 0, 0, 950, 951, 5, 61, 0, 0, 951, 952, 5, 61, 0, 0, 952, 234, 1, 0, 0, 0, 953, 954, 5, 60, 0, 0, 954, 955, 5, 61, 0, 0, 955, 236, 1, 0, 0, 0, 956, 957, 5, 62, 0, 0, 957, 958, 5, 61, 0, 0, 958, 238, 1, 0, 0, 0, 959, 960, 5, 33, 0, 0, 960, 961, 5, 61, 0, 0, 961, 240, 1, 0, 0, 0, 962, 963, 5, 38, 0, 0, 963, 964, 5, 38, 0, 0, 964, 242, 1, 0, 0, 0, 965, 966, 5, 124, 0, 0, 966, 967, 5, 124, 0, 0, 967, 244, 1, 0, 0, 0, 968, 969, 5, 43, 0, 0, 969, 970, 5, 43, 0, 0, 970, 246, 1, 0, 0, 0, 971, 972, 5, 45, 0, 0, 972, 973, 5, 45, 0, 0, 973, 248, 1, 0, 0, 0, 974, 975, 5, 43, 0, 0, 975, 250, 1, 0, 0, 0, 976, 977, 5, 45, 0, 0, 977, 252, 1, 0, 0, 0, 978, 979, 5, 42, 0, 0, 979, 254, 1, 0, 0, 0, 980, 981, 5, 47, 0, 0, 981, 256, 1, 0, 0, 0, 982, 983, 5, 38, 0, 0, 983, 258, 1, 0, 0, 0, 984, 985, 5, 124, 0, 0, 985, 260, 1, 0, 0, 0, 986, 987, 5, 94, 0, 0, 987, 262, 1, 0, 0, 0, 988, 989, 5, 37, 0, 0, 989, 264, 1, 0, 0, 0, 990, 991, 5, 45, 0, 0, 991, 992, 5, 62, 0, 0, 992, 266, 1, 0, 0, 0, 993, 994, 5, 58, 0, 0, 994, 995, 5, 58, 0, 0, 995, 268, 1, 0, 0, 0, 996, 997, 5, 43, 0, 0, 997, 998, 5, 61, 0, 0, 998, 270, 1, 0, 0, 0, 999, 1000, 5, 45, 0, 0, 1000, 1001, 5, 61, 0, 0, 1001, 272, 1, 0, 0, 0, 1002, 1003, 5, 42, 0, 0, 1003, 1004, 5, 61, 0, 0, 1004, 274, 1, 0, 0, 0, 1005, 1006, 5, 47, 0, 0, 1006, 1007, 5, 61, 0, 0, 1007, 276, 1, 0, 0, 0, 1008, 1009, 5, 38, 0, 0, 1009, 1010, 5, 61, 0, 0, 1010, 278, 1, 0, 0, 0, 1011, 1012, 5, 124, 0, 0, 1012, 1013, 5, 61, 0, 0, 1013, 280, 1, 0, 0, 0, 1014, 1015, 5, 94, 0, 0, 1015, 1016, 5, 61, 0, 0, 1016, 282, 1, 0, 0, 0, 1017, 1018, 5, 37, 0, 0, 1018, 1019, 5, 61, 0, 0, 1019, 284, 1, 0, 0, 0, 1020, 1021, 5, 60, 0, 0, 1021, 1022, 5, 60, 0, 0, 1022, 1023, 5, 61, 0, 0, 1023, 286, 1, 0, 0, 0, 1024, 1025, 5, 62, 0, 0, 1025, 1026, 5, 62, 0, 0, 1026, 1027, 5, 61, 0, 0, 1027, 288, 1, 0, 0, 0, 1028, 1029, 5, 62, 0, 0, 1029, 1030, 5, 62, 0, 0, 1030, 1031, 5, 62, 0, 0, 1031, 1032, 5, 61, 0, 0, 1032, 290, 1, 0, 0, 0, 1033, 1037, 3, 293, 146, 0, 1034, 1036, 3, 295, 147, 0, 1035, 1034, 1, 0, 0, 0, 1036, 1039, 1, 0, 0, 0, 1037, 1035, 1, 0, 0, 0, 1037, 1038, 1, 0, 0, 0, 1038, 292, 1, 0, 0, 0, 1039, 1037, 1, 0, 0, 0, 1040, 1047, 7, 15, 0, 0, 1041, 1042, 8, 16, 0, 0, 1042, 1047, 4, 146, 0, 0, 1043, 1044, 7, 17, 0, 0, 1044, 1045, 7, 18, 0, 0, 1045, 1047, 4, 146, 1, 0, 1046, 1040, 1, 0, 0, 0, 1046, 1041, 1, 0, 0, 0, 1046, 1043, 1, 0, 0, 0, 1047, 294, 1, 0, 0, 0, 1048, 1055, 7, 19, 0, 0, 1049, 1050, 8, 16, 0, 0, 1050, 1055, 4, 147, 2, 0, 1051, 1052, 7, 17, 0, 0, 1052, 1053, 7, 18, 0, 0, 1053, 1055, 4, 147, 3, 0, 1054, 1048, 1, 0, 0, 0, 1054, 1049, 1, 0, 0, 0, 1054, 1051, 1, 0, 0, 0, 1055, 296, 1, 0, 0, 0, 1056, 1057, 5, 64, 0, 0, 1057, 298, 1, 0, 0, 0, 1058, 1059, 5, 46, 0, 0, 1059, 1060, 5, 46, 0, 0, 1060, 1061, 5, 46, 0, 0, 1061, 300, 1, 0, 0, 0, 1062, 1064, 7, 20, 0, 0, 1063, 1062, 1, 0, 0, 0, 1064, 1065, 1, 0, 0, 0, 1065, 1063, 1, 0, 0, 0, 1065, 1066, 1, 0, 0, 0, 1066, 1067, 1, 0, 0, 0, 1067, 1068, 6, 150, 0, 0, 1068, 302, 1, 0, 0, 0, 1069, 1070, 5, 47, 0, 0, 1070, 1071, 5, 42, 0, 0, 1071, 1075, 1, 0, 0, 0, 1072, 1074, 9, 0, 0, 0, 1073, 1072, 1, 0, 0, 0, 1074, 1077, 1, 0, 0, 0, 1075, 1076, 1, 0, 0, 0, 1075, 1073, 1, 0, 0, 0, 1076, 1078, 1, 0, 0, 0, 1077, 1075, 1, 0, 0, 0, 1078, 1079, 5, 42, 0, 0, 1079, 1080, 5, 47, 0, 0, 1080, 1081, 1, 0, 0, 0, 1081, 1082, 6, 151, 0, 0, 1082, 304, 1, 0, 0, 0, 1083, 1084, 5, 47, 0, 0, 1084, 1085, 5, 47, 0, 0, 1085, 1089, 1, 0, 0, 0, 1086, 1088, 8, 21, 0, 0, 1087, 1086, 1, 0, 0, 0, 1088, 1091, 1, 0, 0, 0, 1089, 1087, 1, 0, 0, 0, 1089, 1090, 1, 0, 0, 0, 1090, 1092, 1, 0, 0, 0, 1091, 1089, 1, 0, 0, 0, 1092, 1093, 6, 152, 0, 0, 1093, 306, 1, 0, 0, 0, 54, 0, 650, 654, 658, 662, 666, 673, 678, 680, 684, 687, 691, 698, 702, 707, 715, 718, 725, 729, 733, 739, 742, 749, 753, 761, 764, 771, 775, 779, 784, 787, 790, 795, 798, 803, 808, 816, 827, 831, 836, 840, 856, 866, 872, 879, 883, 889, 902, 1037, 1046, 1054, 1065, 1075, 1089, 1, 0, 1, 0] \ No newline at end of file diff --git a/benchmarks/src/main/java/org/antlr/Java8Lexer.java b/benchmarks/src/main/java/org/antlr/Java8Lexer.java new file mode 100644 index 000000000..e006825f1 --- /dev/null +++ b/benchmarks/src/main/java/org/antlr/Java8Lexer.java @@ -0,0 +1,888 @@ +// Generated from Java8.g4 by ANTLR 4.13.1 + +package org.antlr; + +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", "CheckReturnValue", "this-escape"}) +public class Java8Lexer extends Lexer { + static { RuntimeMetaData.checkVersion("4.13.1", RuntimeMetaData.VERSION); } + + protected static final DFA[] _decisionToDFA; + protected static final PredictionContextCache _sharedContextCache = + new PredictionContextCache(); + public static final int + ABSTRACT=1, ASSERT=2, BOOLEAN=3, BREAK=4, BYTE=5, CASE=6, CATCH=7, CHAR=8, + CLASS=9, CONST=10, CONTINUE=11, DEFAULT=12, DO=13, DOUBLE=14, ELSE=15, + ENUM=16, EXTENDS=17, FINAL=18, FINALLY=19, FLOAT=20, FOR=21, IF=22, GOTO=23, + IMPLEMENTS=24, IMPORT=25, INSTANCEOF=26, INT=27, INTERFACE=28, LONG=29, + NATIVE=30, NEW=31, PACKAGE=32, PRIVATE=33, PROTECTED=34, PUBLIC=35, RETURN=36, + SHORT=37, STATIC=38, STRICTFP=39, SUPER=40, SWITCH=41, SYNCHRONIZED=42, + THIS=43, THROW=44, THROWS=45, TRANSIENT=46, TRY=47, VOID=48, VOLATILE=49, + WHILE=50, IntegerLiteral=51, FloatingPointLiteral=52, BooleanLiteral=53, + CharacterLiteral=54, StringLiteral=55, NullLiteral=56, LPAREN=57, RPAREN=58, + LBRACE=59, RBRACE=60, LBRACK=61, RBRACK=62, SEMI=63, COMMA=64, DOT=65, + ASSIGN=66, GT=67, LT=68, BANG=69, TILDE=70, QUESTION=71, COLON=72, EQUAL=73, + LE=74, GE=75, NOTEQUAL=76, AND=77, OR=78, INC=79, DEC=80, ADD=81, SUB=82, + MUL=83, DIV=84, BITAND=85, BITOR=86, CARET=87, MOD=88, ARROW=89, COLONCOLON=90, + ADD_ASSIGN=91, SUB_ASSIGN=92, MUL_ASSIGN=93, DIV_ASSIGN=94, AND_ASSIGN=95, + OR_ASSIGN=96, XOR_ASSIGN=97, MOD_ASSIGN=98, LSHIFT_ASSIGN=99, RSHIFT_ASSIGN=100, + URSHIFT_ASSIGN=101, Identifier=102, AT=103, ELLIPSIS=104, WS=105, COMMENT=106, + LINE_COMMENT=107; + public static String[] channelNames = { + "DEFAULT_TOKEN_CHANNEL", "HIDDEN" + }; + + public static String[] modeNames = { + "DEFAULT_MODE" + }; + + private static String[] makeRuleNames() { + return new String[] { + "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", "VOID", "VOLATILE", "WHILE", "IntegerLiteral", "DecimalIntegerLiteral", + "HexIntegerLiteral", "OctalIntegerLiteral", "BinaryIntegerLiteral", "IntegerTypeSuffix", + "DecimalNumeral", "Digits", "Digit", "NonZeroDigit", "DigitsAndUnderscores", + "DigitOrUnderscore", "Underscores", "HexNumeral", "HexDigits", "HexDigit", + "HexDigitsAndUnderscores", "HexDigitOrUnderscore", "OctalNumeral", "OctalDigits", + "OctalDigit", "OctalDigitsAndUnderscores", "OctalDigitOrUnderscore", + "BinaryNumeral", "BinaryDigits", "BinaryDigit", "BinaryDigitsAndUnderscores", + "BinaryDigitOrUnderscore", "FloatingPointLiteral", "DecimalFloatingPointLiteral", + "ExponentPart", "ExponentIndicator", "SignedInteger", "Sign", "FloatTypeSuffix", + "HexadecimalFloatingPointLiteral", "HexSignificand", "BinaryExponent", + "BinaryExponentIndicator", "BooleanLiteral", "CharacterLiteral", "SingleCharacter", + "StringLiteral", "StringCharacters", "StringCharacter", "EscapeSequence", + "OctalEscape", "ZeroToThree", "UnicodeEscape", "NullLiteral", "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", "ARROW", "COLONCOLON", "ADD_ASSIGN", + "SUB_ASSIGN", "MUL_ASSIGN", "DIV_ASSIGN", "AND_ASSIGN", "OR_ASSIGN", + "XOR_ASSIGN", "MOD_ASSIGN", "LSHIFT_ASSIGN", "RSHIFT_ASSIGN", "URSHIFT_ASSIGN", + "Identifier", "JavaLetter", "JavaLetterOrDigit", "AT", "ELLIPSIS", "WS", + "COMMENT", "LINE_COMMENT" + }; + } + public static final String[] ruleNames = makeRuleNames(); + + private static String[] makeLiteralNames() { + return new String[] { + 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'", "'void'", "'volatile'", "'while'", null, null, + null, null, null, "'null'", "'('", "')'", "'{'", "'}'", "'['", "']'", + "';'", "','", "'.'", "'='", "'>'", "'<'", "'!'", "'~'", "'?'", "':'", + "'=='", "'<='", "'>='", "'!='", "'&&'", "'||'", "'++'", "'--'", "'+'", + "'-'", "'*'", "'/'", "'&'", "'|'", "'^'", "'%'", "'->'", "'::'", "'+='", + "'-='", "'*='", "'/='", "'&='", "'|='", "'^='", "'%='", "'<<='", "'>>='", + "'>>>='", null, "'@'", "'...'" + }; + } + private static final String[] _LITERAL_NAMES = makeLiteralNames(); + private static String[] makeSymbolicNames() { + return new String[] { + 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", "VOID", "VOLATILE", "WHILE", "IntegerLiteral", + "FloatingPointLiteral", "BooleanLiteral", "CharacterLiteral", "StringLiteral", + "NullLiteral", "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", "ARROW", + "COLONCOLON", "ADD_ASSIGN", "SUB_ASSIGN", "MUL_ASSIGN", "DIV_ASSIGN", + "AND_ASSIGN", "OR_ASSIGN", "XOR_ASSIGN", "MOD_ASSIGN", "LSHIFT_ASSIGN", + "RSHIFT_ASSIGN", "URSHIFT_ASSIGN", "Identifier", "AT", "ELLIPSIS", "WS", + "COMMENT", "LINE_COMMENT" + }; + } + 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 Java8Lexer(CharStream input) { + super(input); + _interp = new LexerATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache); + } + + @Override + public String getGrammarFileName() { return "Java8.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; } + + @Override + public boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) { + switch (ruleIndex) { + case 146: + return JavaLetter_sempred((RuleContext)_localctx, predIndex); + case 147: + return JavaLetterOrDigit_sempred((RuleContext)_localctx, predIndex); + } + return true; + } + private boolean JavaLetter_sempred(RuleContext _localctx, int predIndex) { + switch (predIndex) { + case 0: + return Character.isJavaIdentifierStart(_input.LA(-1)); + case 1: + return Character.isJavaIdentifierStart(Character.toCodePoint((char)_input.LA(-2), (char)_input.LA(-1))); + } + return true; + } + private boolean JavaLetterOrDigit_sempred(RuleContext _localctx, int predIndex) { + switch (predIndex) { + case 2: + return Character.isJavaIdentifierPart(_input.LA(-1)); + case 3: + return Character.isJavaIdentifierPart(Character.toCodePoint((char)_input.LA(-2), (char)_input.LA(-1))); + } + return true; + } + + public static final String _serializedATN = + "\u0004\u0000k\u0446\u0006\uffff\uffff\u0002\u0000\u0007\u0000\u0002\u0001"+ + "\u0007\u0001\u0002\u0002\u0007\u0002\u0002\u0003\u0007\u0003\u0002\u0004"+ + "\u0007\u0004\u0002\u0005\u0007\u0005\u0002\u0006\u0007\u0006\u0002\u0007"+ + "\u0007\u0007\u0002\b\u0007\b\u0002\t\u0007\t\u0002\n\u0007\n\u0002\u000b"+ + "\u0007\u000b\u0002\f\u0007\f\u0002\r\u0007\r\u0002\u000e\u0007\u000e\u0002"+ + "\u000f\u0007\u000f\u0002\u0010\u0007\u0010\u0002\u0011\u0007\u0011\u0002"+ + "\u0012\u0007\u0012\u0002\u0013\u0007\u0013\u0002\u0014\u0007\u0014\u0002"+ + "\u0015\u0007\u0015\u0002\u0016\u0007\u0016\u0002\u0017\u0007\u0017\u0002"+ + "\u0018\u0007\u0018\u0002\u0019\u0007\u0019\u0002\u001a\u0007\u001a\u0002"+ + "\u001b\u0007\u001b\u0002\u001c\u0007\u001c\u0002\u001d\u0007\u001d\u0002"+ + "\u001e\u0007\u001e\u0002\u001f\u0007\u001f\u0002 \u0007 \u0002!\u0007"+ + "!\u0002\"\u0007\"\u0002#\u0007#\u0002$\u0007$\u0002%\u0007%\u0002&\u0007"+ + "&\u0002\'\u0007\'\u0002(\u0007(\u0002)\u0007)\u0002*\u0007*\u0002+\u0007"+ + "+\u0002,\u0007,\u0002-\u0007-\u0002.\u0007.\u0002/\u0007/\u00020\u0007"+ + "0\u00021\u00071\u00022\u00072\u00023\u00073\u00024\u00074\u00025\u0007"+ + "5\u00026\u00076\u00027\u00077\u00028\u00078\u00029\u00079\u0002:\u0007"+ + ":\u0002;\u0007;\u0002<\u0007<\u0002=\u0007=\u0002>\u0007>\u0002?\u0007"+ + "?\u0002@\u0007@\u0002A\u0007A\u0002B\u0007B\u0002C\u0007C\u0002D\u0007"+ + "D\u0002E\u0007E\u0002F\u0007F\u0002G\u0007G\u0002H\u0007H\u0002I\u0007"+ + "I\u0002J\u0007J\u0002K\u0007K\u0002L\u0007L\u0002M\u0007M\u0002N\u0007"+ + "N\u0002O\u0007O\u0002P\u0007P\u0002Q\u0007Q\u0002R\u0007R\u0002S\u0007"+ + "S\u0002T\u0007T\u0002U\u0007U\u0002V\u0007V\u0002W\u0007W\u0002X\u0007"+ + "X\u0002Y\u0007Y\u0002Z\u0007Z\u0002[\u0007[\u0002\\\u0007\\\u0002]\u0007"+ + "]\u0002^\u0007^\u0002_\u0007_\u0002`\u0007`\u0002a\u0007a\u0002b\u0007"+ + "b\u0002c\u0007c\u0002d\u0007d\u0002e\u0007e\u0002f\u0007f\u0002g\u0007"+ + "g\u0002h\u0007h\u0002i\u0007i\u0002j\u0007j\u0002k\u0007k\u0002l\u0007"+ + "l\u0002m\u0007m\u0002n\u0007n\u0002o\u0007o\u0002p\u0007p\u0002q\u0007"+ + "q\u0002r\u0007r\u0002s\u0007s\u0002t\u0007t\u0002u\u0007u\u0002v\u0007"+ + "v\u0002w\u0007w\u0002x\u0007x\u0002y\u0007y\u0002z\u0007z\u0002{\u0007"+ + "{\u0002|\u0007|\u0002}\u0007}\u0002~\u0007~\u0002\u007f\u0007\u007f\u0002"+ + "\u0080\u0007\u0080\u0002\u0081\u0007\u0081\u0002\u0082\u0007\u0082\u0002"+ + "\u0083\u0007\u0083\u0002\u0084\u0007\u0084\u0002\u0085\u0007\u0085\u0002"+ + "\u0086\u0007\u0086\u0002\u0087\u0007\u0087\u0002\u0088\u0007\u0088\u0002"+ + "\u0089\u0007\u0089\u0002\u008a\u0007\u008a\u0002\u008b\u0007\u008b\u0002"+ + "\u008c\u0007\u008c\u0002\u008d\u0007\u008d\u0002\u008e\u0007\u008e\u0002"+ + "\u008f\u0007\u008f\u0002\u0090\u0007\u0090\u0002\u0091\u0007\u0091\u0002"+ + "\u0092\u0007\u0092\u0002\u0093\u0007\u0093\u0002\u0094\u0007\u0094\u0002"+ + "\u0095\u0007\u0095\u0002\u0096\u0007\u0096\u0002\u0097\u0007\u0097\u0002"+ + "\u0098\u0007\u0098\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+ + "\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0001\u0001"+ + "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+ + "\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0001"+ + "\u0002\u0001\u0002\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003\u0001"+ + "\u0003\u0001\u0003\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0001"+ + "\u0004\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001"+ + "\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001"+ + "\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\b\u0001\b"+ + "\u0001\b\u0001\b\u0001\b\u0001\b\u0001\t\u0001\t\u0001\t\u0001\t\u0001"+ + "\t\u0001\t\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001"+ + "\n\u0001\n\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b"+ + "\u0001\u000b\u0001\u000b\u0001\u000b\u0001\f\u0001\f\u0001\f\u0001\r\u0001"+ + "\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\u000e\u0001\u000e\u0001"+ + "\u000e\u0001\u000e\u0001\u000e\u0001\u000f\u0001\u000f\u0001\u000f\u0001"+ + "\u000f\u0001\u000f\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0001"+ + "\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0011\u0001\u0011\u0001"+ + "\u0011\u0001\u0011\u0001\u0011\u0001\u0011\u0001\u0012\u0001\u0012\u0001"+ + "\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001"+ + "\u0013\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0013\u0001"+ + "\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0015\u0001\u0015\u0001"+ + "\u0015\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0001"+ + "\u0017\u0001\u0017\u0001\u0017\u0001\u0017\u0001\u0017\u0001\u0017\u0001"+ + "\u0017\u0001\u0017\u0001\u0017\u0001\u0017\u0001\u0017\u0001\u0018\u0001"+ + "\u0018\u0001\u0018\u0001\u0018\u0001\u0018\u0001\u0018\u0001\u0018\u0001"+ + "\u0019\u0001\u0019\u0001\u0019\u0001\u0019\u0001\u0019\u0001\u0019\u0001"+ + "\u0019\u0001\u0019\u0001\u0019\u0001\u0019\u0001\u0019\u0001\u001a\u0001"+ + "\u001a\u0001\u001a\u0001\u001a\u0001\u001b\u0001\u001b\u0001\u001b\u0001"+ + "\u001b\u0001\u001b\u0001\u001b\u0001\u001b\u0001\u001b\u0001\u001b\u0001"+ + "\u001b\u0001\u001c\u0001\u001c\u0001\u001c\u0001\u001c\u0001\u001c\u0001"+ + "\u001d\u0001\u001d\u0001\u001d\u0001\u001d\u0001\u001d\u0001\u001d\u0001"+ + "\u001d\u0001\u001e\u0001\u001e\u0001\u001e\u0001\u001e\u0001\u001f\u0001"+ + "\u001f\u0001\u001f\u0001\u001f\u0001\u001f\u0001\u001f\u0001\u001f\u0001"+ + "\u001f\u0001 \u0001 \u0001 \u0001 \u0001 \u0001 \u0001 \u0001 \u0001!"+ + "\u0001!\u0001!\u0001!\u0001!\u0001!\u0001!\u0001!\u0001!\u0001!\u0001"+ + "\"\u0001\"\u0001\"\u0001\"\u0001\"\u0001\"\u0001\"\u0001#\u0001#\u0001"+ + "#\u0001#\u0001#\u0001#\u0001#\u0001$\u0001$\u0001$\u0001$\u0001$\u0001"+ + "$\u0001%\u0001%\u0001%\u0001%\u0001%\u0001%\u0001%\u0001&\u0001&\u0001"+ + "&\u0001&\u0001&\u0001&\u0001&\u0001&\u0001&\u0001\'\u0001\'\u0001\'\u0001"+ + "\'\u0001\'\u0001\'\u0001(\u0001(\u0001(\u0001(\u0001(\u0001(\u0001(\u0001"+ + ")\u0001)\u0001)\u0001)\u0001)\u0001)\u0001)\u0001)\u0001)\u0001)\u0001"+ + ")\u0001)\u0001)\u0001*\u0001*\u0001*\u0001*\u0001*\u0001+\u0001+\u0001"+ + "+\u0001+\u0001+\u0001+\u0001,\u0001,\u0001,\u0001,\u0001,\u0001,\u0001"+ + ",\u0001-\u0001-\u0001-\u0001-\u0001-\u0001-\u0001-\u0001-\u0001-\u0001"+ + "-\u0001.\u0001.\u0001.\u0001.\u0001/\u0001/\u0001/\u0001/\u0001/\u0001"+ + "0\u00010\u00010\u00010\u00010\u00010\u00010\u00010\u00010\u00011\u0001"+ + "1\u00011\u00011\u00011\u00011\u00012\u00012\u00012\u00012\u00032\u028b"+ + "\b2\u00013\u00013\u00033\u028f\b3\u00014\u00014\u00034\u0293\b4\u0001"+ + "5\u00015\u00035\u0297\b5\u00016\u00016\u00036\u029b\b6\u00017\u00017\u0001"+ + "8\u00018\u00018\u00038\u02a2\b8\u00018\u00018\u00018\u00038\u02a7\b8\u0003"+ + "8\u02a9\b8\u00019\u00019\u00039\u02ad\b9\u00019\u00039\u02b0\b9\u0001"+ + ":\u0001:\u0003:\u02b4\b:\u0001;\u0001;\u0001<\u0004<\u02b9\b<\u000b<\f"+ + "<\u02ba\u0001=\u0001=\u0003=\u02bf\b=\u0001>\u0004>\u02c2\b>\u000b>\f"+ + ">\u02c3\u0001?\u0001?\u0001?\u0001?\u0001@\u0001@\u0003@\u02cc\b@\u0001"+ + "@\u0003@\u02cf\b@\u0001A\u0001A\u0001B\u0004B\u02d4\bB\u000bB\fB\u02d5"+ + "\u0001C\u0001C\u0003C\u02da\bC\u0001D\u0001D\u0003D\u02de\bD\u0001D\u0001"+ + "D\u0001E\u0001E\u0003E\u02e4\bE\u0001E\u0003E\u02e7\bE\u0001F\u0001F\u0001"+ + "G\u0004G\u02ec\bG\u000bG\fG\u02ed\u0001H\u0001H\u0003H\u02f2\bH\u0001"+ + "I\u0001I\u0001I\u0001I\u0001J\u0001J\u0003J\u02fa\bJ\u0001J\u0003J\u02fd"+ + "\bJ\u0001K\u0001K\u0001L\u0004L\u0302\bL\u000bL\fL\u0303\u0001M\u0001"+ + "M\u0003M\u0308\bM\u0001N\u0001N\u0003N\u030c\bN\u0001O\u0001O\u0001O\u0003"+ + "O\u0311\bO\u0001O\u0003O\u0314\bO\u0001O\u0003O\u0317\bO\u0001O\u0001"+ + "O\u0001O\u0003O\u031c\bO\u0001O\u0003O\u031f\bO\u0001O\u0001O\u0001O\u0003"+ + "O\u0324\bO\u0001O\u0001O\u0001O\u0003O\u0329\bO\u0001P\u0001P\u0001P\u0001"+ + "Q\u0001Q\u0001R\u0003R\u0331\bR\u0001R\u0001R\u0001S\u0001S\u0001T\u0001"+ + "T\u0001U\u0001U\u0001U\u0003U\u033c\bU\u0001V\u0001V\u0003V\u0340\bV\u0001"+ + "V\u0001V\u0001V\u0003V\u0345\bV\u0001V\u0001V\u0003V\u0349\bV\u0001W\u0001"+ + "W\u0001W\u0001X\u0001X\u0001Y\u0001Y\u0001Y\u0001Y\u0001Y\u0001Y\u0001"+ + "Y\u0001Y\u0001Y\u0003Y\u0359\bY\u0001Z\u0001Z\u0001Z\u0001Z\u0001Z\u0001"+ + "Z\u0001Z\u0001Z\u0003Z\u0363\bZ\u0001[\u0001[\u0001\\\u0001\\\u0003\\"+ + "\u0369\b\\\u0001\\\u0001\\\u0001]\u0004]\u036e\b]\u000b]\f]\u036f\u0001"+ + "^\u0001^\u0003^\u0374\b^\u0001_\u0001_\u0001_\u0001_\u0003_\u037a\b_\u0001"+ + "`\u0001`\u0001`\u0001`\u0001`\u0001`\u0001`\u0001`\u0001`\u0001`\u0001"+ + "`\u0003`\u0387\b`\u0001a\u0001a\u0001b\u0001b\u0001b\u0001b\u0001b\u0001"+ + "b\u0001b\u0001c\u0001c\u0001c\u0001c\u0001c\u0001d\u0001d\u0001e\u0001"+ + "e\u0001f\u0001f\u0001g\u0001g\u0001h\u0001h\u0001i\u0001i\u0001j\u0001"+ + "j\u0001k\u0001k\u0001l\u0001l\u0001m\u0001m\u0001n\u0001n\u0001o\u0001"+ + "o\u0001p\u0001p\u0001q\u0001q\u0001r\u0001r\u0001s\u0001s\u0001t\u0001"+ + "t\u0001t\u0001u\u0001u\u0001u\u0001v\u0001v\u0001v\u0001w\u0001w\u0001"+ + "w\u0001x\u0001x\u0001x\u0001y\u0001y\u0001y\u0001z\u0001z\u0001z\u0001"+ + "{\u0001{\u0001{\u0001|\u0001|\u0001}\u0001}\u0001~\u0001~\u0001\u007f"+ + "\u0001\u007f\u0001\u0080\u0001\u0080\u0001\u0081\u0001\u0081\u0001\u0082"+ + "\u0001\u0082\u0001\u0083\u0001\u0083\u0001\u0084\u0001\u0084\u0001\u0084"+ + "\u0001\u0085\u0001\u0085\u0001\u0085\u0001\u0086\u0001\u0086\u0001\u0086"+ + "\u0001\u0087\u0001\u0087\u0001\u0087\u0001\u0088\u0001\u0088\u0001\u0088"+ + "\u0001\u0089\u0001\u0089\u0001\u0089\u0001\u008a\u0001\u008a\u0001\u008a"+ + "\u0001\u008b\u0001\u008b\u0001\u008b\u0001\u008c\u0001\u008c\u0001\u008c"+ + "\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008e\u0001\u008e\u0001\u008e"+ + "\u0001\u008e\u0001\u008f\u0001\u008f\u0001\u008f\u0001\u008f\u0001\u0090"+ + "\u0001\u0090\u0001\u0090\u0001\u0090\u0001\u0090\u0001\u0091\u0001\u0091"+ + "\u0005\u0091\u040c\b\u0091\n\u0091\f\u0091\u040f\t\u0091\u0001\u0092\u0001"+ + "\u0092\u0001\u0092\u0001\u0092\u0001\u0092\u0001\u0092\u0003\u0092\u0417"+ + "\b\u0092\u0001\u0093\u0001\u0093\u0001\u0093\u0001\u0093\u0001\u0093\u0001"+ + "\u0093\u0003\u0093\u041f\b\u0093\u0001\u0094\u0001\u0094\u0001\u0095\u0001"+ + "\u0095\u0001\u0095\u0001\u0095\u0001\u0096\u0004\u0096\u0428\b\u0096\u000b"+ + "\u0096\f\u0096\u0429\u0001\u0096\u0001\u0096\u0001\u0097\u0001\u0097\u0001"+ + "\u0097\u0001\u0097\u0005\u0097\u0432\b\u0097\n\u0097\f\u0097\u0435\t\u0097"+ + "\u0001\u0097\u0001\u0097\u0001\u0097\u0001\u0097\u0001\u0097\u0001\u0098"+ + "\u0001\u0098\u0001\u0098\u0001\u0098\u0005\u0098\u0440\b\u0098\n\u0098"+ + "\f\u0098\u0443\t\u0098\u0001\u0098\u0001\u0098\u0001\u0433\u0000\u0099"+ + "\u0001\u0001\u0003\u0002\u0005\u0003\u0007\u0004\t\u0005\u000b\u0006\r"+ + "\u0007\u000f\b\u0011\t\u0013\n\u0015\u000b\u0017\f\u0019\r\u001b\u000e"+ + "\u001d\u000f\u001f\u0010!\u0011#\u0012%\u0013\'\u0014)\u0015+\u0016-\u0017"+ + "/\u00181\u00193\u001a5\u001b7\u001c9\u001d;\u001e=\u001f? A!C\"E#G$I%"+ + "K&M\'O(Q)S*U+W,Y-[.]/_0a1c2e3g\u0000i\u0000k\u0000m\u0000o\u0000q\u0000"+ + "s\u0000u\u0000w\u0000y\u0000{\u0000}\u0000\u007f\u0000\u0081\u0000\u0083"+ + "\u0000\u0085\u0000\u0087\u0000\u0089\u0000\u008b\u0000\u008d\u0000\u008f"+ + "\u0000\u0091\u0000\u0093\u0000\u0095\u0000\u0097\u0000\u0099\u0000\u009b"+ + "\u0000\u009d4\u009f\u0000\u00a1\u0000\u00a3\u0000\u00a5\u0000\u00a7\u0000"+ + "\u00a9\u0000\u00ab\u0000\u00ad\u0000\u00af\u0000\u00b1\u0000\u00b35\u00b5"+ + "6\u00b7\u0000\u00b97\u00bb\u0000\u00bd\u0000\u00bf\u0000\u00c1\u0000\u00c3"+ + "\u0000\u00c5\u0000\u00c78\u00c99\u00cb:\u00cd;\u00cf<\u00d1=\u00d3>\u00d5"+ + "?\u00d7@\u00d9A\u00dbB\u00ddC\u00dfD\u00e1E\u00e3F\u00e5G\u00e7H\u00e9"+ + "I\u00ebJ\u00edK\u00efL\u00f1M\u00f3N\u00f5O\u00f7P\u00f9Q\u00fbR\u00fd"+ + "S\u00ffT\u0101U\u0103V\u0105W\u0107X\u0109Y\u010bZ\u010d[\u010f\\\u0111"+ + "]\u0113^\u0115_\u0117`\u0119a\u011bb\u011dc\u011fd\u0121e\u0123f\u0125"+ + "\u0000\u0127\u0000\u0129g\u012bh\u012di\u012fj\u0131k\u0001\u0000\u0016"+ + "\u0002\u0000LLll\u0001\u000019\u0002\u0000XXxx\u0003\u000009AFaf\u0001"+ + "\u000007\u0002\u0000BBbb\u0001\u000001\u0002\u0000EEee\u0002\u0000++-"+ + "-\u0004\u0000DDFFddff\u0002\u0000PPpp\u0002\u0000\'\'\\\\\u0002\u0000"+ + "\"\"\\\\\b\u0000\"\"\'\'\\\\bbffnnrrtt\u0001\u000003\u0004\u0000$$AZ_"+ + "_az\u0002\u0000\u0000\u007f\u8000\ud800\u8000\udbff\u0001\u0000\u8000"+ + "\ud800\u8000\udbff\u0001\u0000\u8000\udc00\u8000\udfff\u0005\u0000$$0"+ + "9AZ__az\u0003\u0000\t\n\f\r \u0002\u0000\n\n\r\r\u0454\u0000\u0001\u0001"+ + "\u0000\u0000\u0000\u0000\u0003\u0001\u0000\u0000\u0000\u0000\u0005\u0001"+ + "\u0000\u0000\u0000\u0000\u0007\u0001\u0000\u0000\u0000\u0000\t\u0001\u0000"+ + "\u0000\u0000\u0000\u000b\u0001\u0000\u0000\u0000\u0000\r\u0001\u0000\u0000"+ + "\u0000\u0000\u000f\u0001\u0000\u0000\u0000\u0000\u0011\u0001\u0000\u0000"+ + "\u0000\u0000\u0013\u0001\u0000\u0000\u0000\u0000\u0015\u0001\u0000\u0000"+ + "\u0000\u0000\u0017\u0001\u0000\u0000\u0000\u0000\u0019\u0001\u0000\u0000"+ + "\u0000\u0000\u001b\u0001\u0000\u0000\u0000\u0000\u001d\u0001\u0000\u0000"+ + "\u0000\u0000\u001f\u0001\u0000\u0000\u0000\u0000!\u0001\u0000\u0000\u0000"+ + "\u0000#\u0001\u0000\u0000\u0000\u0000%\u0001\u0000\u0000\u0000\u0000\'"+ + "\u0001\u0000\u0000\u0000\u0000)\u0001\u0000\u0000\u0000\u0000+\u0001\u0000"+ + "\u0000\u0000\u0000-\u0001\u0000\u0000\u0000\u0000/\u0001\u0000\u0000\u0000"+ + "\u00001\u0001\u0000\u0000\u0000\u00003\u0001\u0000\u0000\u0000\u00005"+ + "\u0001\u0000\u0000\u0000\u00007\u0001\u0000\u0000\u0000\u00009\u0001\u0000"+ + "\u0000\u0000\u0000;\u0001\u0000\u0000\u0000\u0000=\u0001\u0000\u0000\u0000"+ + "\u0000?\u0001\u0000\u0000\u0000\u0000A\u0001\u0000\u0000\u0000\u0000C"+ + "\u0001\u0000\u0000\u0000\u0000E\u0001\u0000\u0000\u0000\u0000G\u0001\u0000"+ + "\u0000\u0000\u0000I\u0001\u0000\u0000\u0000\u0000K\u0001\u0000\u0000\u0000"+ + "\u0000M\u0001\u0000\u0000\u0000\u0000O\u0001\u0000\u0000\u0000\u0000Q"+ + "\u0001\u0000\u0000\u0000\u0000S\u0001\u0000\u0000\u0000\u0000U\u0001\u0000"+ + "\u0000\u0000\u0000W\u0001\u0000\u0000\u0000\u0000Y\u0001\u0000\u0000\u0000"+ + "\u0000[\u0001\u0000\u0000\u0000\u0000]\u0001\u0000\u0000\u0000\u0000_"+ + "\u0001\u0000\u0000\u0000\u0000a\u0001\u0000\u0000\u0000\u0000c\u0001\u0000"+ + "\u0000\u0000\u0000e\u0001\u0000\u0000\u0000\u0000\u009d\u0001\u0000\u0000"+ + "\u0000\u0000\u00b3\u0001\u0000\u0000\u0000\u0000\u00b5\u0001\u0000\u0000"+ + "\u0000\u0000\u00b9\u0001\u0000\u0000\u0000\u0000\u00c7\u0001\u0000\u0000"+ + "\u0000\u0000\u00c9\u0001\u0000\u0000\u0000\u0000\u00cb\u0001\u0000\u0000"+ + "\u0000\u0000\u00cd\u0001\u0000\u0000\u0000\u0000\u00cf\u0001\u0000\u0000"+ + "\u0000\u0000\u00d1\u0001\u0000\u0000\u0000\u0000\u00d3\u0001\u0000\u0000"+ + "\u0000\u0000\u00d5\u0001\u0000\u0000\u0000\u0000\u00d7\u0001\u0000\u0000"+ + "\u0000\u0000\u00d9\u0001\u0000\u0000\u0000\u0000\u00db\u0001\u0000\u0000"+ + "\u0000\u0000\u00dd\u0001\u0000\u0000\u0000\u0000\u00df\u0001\u0000\u0000"+ + "\u0000\u0000\u00e1\u0001\u0000\u0000\u0000\u0000\u00e3\u0001\u0000\u0000"+ + "\u0000\u0000\u00e5\u0001\u0000\u0000\u0000\u0000\u00e7\u0001\u0000\u0000"+ + "\u0000\u0000\u00e9\u0001\u0000\u0000\u0000\u0000\u00eb\u0001\u0000\u0000"+ + "\u0000\u0000\u00ed\u0001\u0000\u0000\u0000\u0000\u00ef\u0001\u0000\u0000"+ + "\u0000\u0000\u00f1\u0001\u0000\u0000\u0000\u0000\u00f3\u0001\u0000\u0000"+ + "\u0000\u0000\u00f5\u0001\u0000\u0000\u0000\u0000\u00f7\u0001\u0000\u0000"+ + "\u0000\u0000\u00f9\u0001\u0000\u0000\u0000\u0000\u00fb\u0001\u0000\u0000"+ + "\u0000\u0000\u00fd\u0001\u0000\u0000\u0000\u0000\u00ff\u0001\u0000\u0000"+ + "\u0000\u0000\u0101\u0001\u0000\u0000\u0000\u0000\u0103\u0001\u0000\u0000"+ + "\u0000\u0000\u0105\u0001\u0000\u0000\u0000\u0000\u0107\u0001\u0000\u0000"+ + "\u0000\u0000\u0109\u0001\u0000\u0000\u0000\u0000\u010b\u0001\u0000\u0000"+ + "\u0000\u0000\u010d\u0001\u0000\u0000\u0000\u0000\u010f\u0001\u0000\u0000"+ + "\u0000\u0000\u0111\u0001\u0000\u0000\u0000\u0000\u0113\u0001\u0000\u0000"+ + "\u0000\u0000\u0115\u0001\u0000\u0000\u0000\u0000\u0117\u0001\u0000\u0000"+ + "\u0000\u0000\u0119\u0001\u0000\u0000\u0000\u0000\u011b\u0001\u0000\u0000"+ + "\u0000\u0000\u011d\u0001\u0000\u0000\u0000\u0000\u011f\u0001\u0000\u0000"+ + "\u0000\u0000\u0121\u0001\u0000\u0000\u0000\u0000\u0123\u0001\u0000\u0000"+ + "\u0000\u0000\u0129\u0001\u0000\u0000\u0000\u0000\u012b\u0001\u0000\u0000"+ + "\u0000\u0000\u012d\u0001\u0000\u0000\u0000\u0000\u012f\u0001\u0000\u0000"+ + "\u0000\u0000\u0131\u0001\u0000\u0000\u0000\u0001\u0133\u0001\u0000\u0000"+ + "\u0000\u0003\u013c\u0001\u0000\u0000\u0000\u0005\u0143\u0001\u0000\u0000"+ + "\u0000\u0007\u014b\u0001\u0000\u0000\u0000\t\u0151\u0001\u0000\u0000\u0000"+ + "\u000b\u0156\u0001\u0000\u0000\u0000\r\u015b\u0001\u0000\u0000\u0000\u000f"+ + "\u0161\u0001\u0000\u0000\u0000\u0011\u0166\u0001\u0000\u0000\u0000\u0013"+ + "\u016c\u0001\u0000\u0000\u0000\u0015\u0172\u0001\u0000\u0000\u0000\u0017"+ + "\u017b\u0001\u0000\u0000\u0000\u0019\u0183\u0001\u0000\u0000\u0000\u001b"+ + "\u0186\u0001\u0000\u0000\u0000\u001d\u018d\u0001\u0000\u0000\u0000\u001f"+ + "\u0192\u0001\u0000\u0000\u0000!\u0197\u0001\u0000\u0000\u0000#\u019f\u0001"+ + "\u0000\u0000\u0000%\u01a5\u0001\u0000\u0000\u0000\'\u01ad\u0001\u0000"+ + "\u0000\u0000)\u01b3\u0001\u0000\u0000\u0000+\u01b7\u0001\u0000\u0000\u0000"+ + "-\u01ba\u0001\u0000\u0000\u0000/\u01bf\u0001\u0000\u0000\u00001\u01ca"+ + "\u0001\u0000\u0000\u00003\u01d1\u0001\u0000\u0000\u00005\u01dc\u0001\u0000"+ + "\u0000\u00007\u01e0\u0001\u0000\u0000\u00009\u01ea\u0001\u0000\u0000\u0000"+ + ";\u01ef\u0001\u0000\u0000\u0000=\u01f6\u0001\u0000\u0000\u0000?\u01fa"+ + "\u0001\u0000\u0000\u0000A\u0202\u0001\u0000\u0000\u0000C\u020a\u0001\u0000"+ + "\u0000\u0000E\u0214\u0001\u0000\u0000\u0000G\u021b\u0001\u0000\u0000\u0000"+ + "I\u0222\u0001\u0000\u0000\u0000K\u0228\u0001\u0000\u0000\u0000M\u022f"+ + "\u0001\u0000\u0000\u0000O\u0238\u0001\u0000\u0000\u0000Q\u023e\u0001\u0000"+ + "\u0000\u0000S\u0245\u0001\u0000\u0000\u0000U\u0252\u0001\u0000\u0000\u0000"+ + "W\u0257\u0001\u0000\u0000\u0000Y\u025d\u0001\u0000\u0000\u0000[\u0264"+ + "\u0001\u0000\u0000\u0000]\u026e\u0001\u0000\u0000\u0000_\u0272\u0001\u0000"+ + "\u0000\u0000a\u0277\u0001\u0000\u0000\u0000c\u0280\u0001\u0000\u0000\u0000"+ + "e\u028a\u0001\u0000\u0000\u0000g\u028c\u0001\u0000\u0000\u0000i\u0290"+ + "\u0001\u0000\u0000\u0000k\u0294\u0001\u0000\u0000\u0000m\u0298\u0001\u0000"+ + "\u0000\u0000o\u029c\u0001\u0000\u0000\u0000q\u02a8\u0001\u0000\u0000\u0000"+ + "s\u02aa\u0001\u0000\u0000\u0000u\u02b3\u0001\u0000\u0000\u0000w\u02b5"+ + "\u0001\u0000\u0000\u0000y\u02b8\u0001\u0000\u0000\u0000{\u02be\u0001\u0000"+ + "\u0000\u0000}\u02c1\u0001\u0000\u0000\u0000\u007f\u02c5\u0001\u0000\u0000"+ + "\u0000\u0081\u02c9\u0001\u0000\u0000\u0000\u0083\u02d0\u0001\u0000\u0000"+ + "\u0000\u0085\u02d3\u0001\u0000\u0000\u0000\u0087\u02d9\u0001\u0000\u0000"+ + "\u0000\u0089\u02db\u0001\u0000\u0000\u0000\u008b\u02e1\u0001\u0000\u0000"+ + "\u0000\u008d\u02e8\u0001\u0000\u0000\u0000\u008f\u02eb\u0001\u0000\u0000"+ + "\u0000\u0091\u02f1\u0001\u0000\u0000\u0000\u0093\u02f3\u0001\u0000\u0000"+ + "\u0000\u0095\u02f7\u0001\u0000\u0000\u0000\u0097\u02fe\u0001\u0000\u0000"+ + "\u0000\u0099\u0301\u0001\u0000\u0000\u0000\u009b\u0307\u0001\u0000\u0000"+ + "\u0000\u009d\u030b\u0001\u0000\u0000\u0000\u009f\u0328\u0001\u0000\u0000"+ + "\u0000\u00a1\u032a\u0001\u0000\u0000\u0000\u00a3\u032d\u0001\u0000\u0000"+ + "\u0000\u00a5\u0330\u0001\u0000\u0000\u0000\u00a7\u0334\u0001\u0000\u0000"+ + "\u0000\u00a9\u0336\u0001\u0000\u0000\u0000\u00ab\u0338\u0001\u0000\u0000"+ + "\u0000\u00ad\u0348\u0001\u0000\u0000\u0000\u00af\u034a\u0001\u0000\u0000"+ + "\u0000\u00b1\u034d\u0001\u0000\u0000\u0000\u00b3\u0358\u0001\u0000\u0000"+ + "\u0000\u00b5\u0362\u0001\u0000\u0000\u0000\u00b7\u0364\u0001\u0000\u0000"+ + "\u0000\u00b9\u0366\u0001\u0000\u0000\u0000\u00bb\u036d\u0001\u0000\u0000"+ + "\u0000\u00bd\u0373\u0001\u0000\u0000\u0000\u00bf\u0379\u0001\u0000\u0000"+ + "\u0000\u00c1\u0386\u0001\u0000\u0000\u0000\u00c3\u0388\u0001\u0000\u0000"+ + "\u0000\u00c5\u038a\u0001\u0000\u0000\u0000\u00c7\u0391\u0001\u0000\u0000"+ + "\u0000\u00c9\u0396\u0001\u0000\u0000\u0000\u00cb\u0398\u0001\u0000\u0000"+ + "\u0000\u00cd\u039a\u0001\u0000\u0000\u0000\u00cf\u039c\u0001\u0000\u0000"+ + "\u0000\u00d1\u039e\u0001\u0000\u0000\u0000\u00d3\u03a0\u0001\u0000\u0000"+ + "\u0000\u00d5\u03a2\u0001\u0000\u0000\u0000\u00d7\u03a4\u0001\u0000\u0000"+ + "\u0000\u00d9\u03a6\u0001\u0000\u0000\u0000\u00db\u03a8\u0001\u0000\u0000"+ + "\u0000\u00dd\u03aa\u0001\u0000\u0000\u0000\u00df\u03ac\u0001\u0000\u0000"+ + "\u0000\u00e1\u03ae\u0001\u0000\u0000\u0000\u00e3\u03b0\u0001\u0000\u0000"+ + "\u0000\u00e5\u03b2\u0001\u0000\u0000\u0000\u00e7\u03b4\u0001\u0000\u0000"+ + "\u0000\u00e9\u03b6\u0001\u0000\u0000\u0000\u00eb\u03b9\u0001\u0000\u0000"+ + "\u0000\u00ed\u03bc\u0001\u0000\u0000\u0000\u00ef\u03bf\u0001\u0000\u0000"+ + "\u0000\u00f1\u03c2\u0001\u0000\u0000\u0000\u00f3\u03c5\u0001\u0000\u0000"+ + "\u0000\u00f5\u03c8\u0001\u0000\u0000\u0000\u00f7\u03cb\u0001\u0000\u0000"+ + "\u0000\u00f9\u03ce\u0001\u0000\u0000\u0000\u00fb\u03d0\u0001\u0000\u0000"+ + "\u0000\u00fd\u03d2\u0001\u0000\u0000\u0000\u00ff\u03d4\u0001\u0000\u0000"+ + "\u0000\u0101\u03d6\u0001\u0000\u0000\u0000\u0103\u03d8\u0001\u0000\u0000"+ + "\u0000\u0105\u03da\u0001\u0000\u0000\u0000\u0107\u03dc\u0001\u0000\u0000"+ + "\u0000\u0109\u03de\u0001\u0000\u0000\u0000\u010b\u03e1\u0001\u0000\u0000"+ + "\u0000\u010d\u03e4\u0001\u0000\u0000\u0000\u010f\u03e7\u0001\u0000\u0000"+ + "\u0000\u0111\u03ea\u0001\u0000\u0000\u0000\u0113\u03ed\u0001\u0000\u0000"+ + "\u0000\u0115\u03f0\u0001\u0000\u0000\u0000\u0117\u03f3\u0001\u0000\u0000"+ + "\u0000\u0119\u03f6\u0001\u0000\u0000\u0000\u011b\u03f9\u0001\u0000\u0000"+ + "\u0000\u011d\u03fc\u0001\u0000\u0000\u0000\u011f\u0400\u0001\u0000\u0000"+ + "\u0000\u0121\u0404\u0001\u0000\u0000\u0000\u0123\u0409\u0001\u0000\u0000"+ + "\u0000\u0125\u0416\u0001\u0000\u0000\u0000\u0127\u041e\u0001\u0000\u0000"+ + "\u0000\u0129\u0420\u0001\u0000\u0000\u0000\u012b\u0422\u0001\u0000\u0000"+ + "\u0000\u012d\u0427\u0001\u0000\u0000\u0000\u012f\u042d\u0001\u0000\u0000"+ + "\u0000\u0131\u043b\u0001\u0000\u0000\u0000\u0133\u0134\u0005a\u0000\u0000"+ + "\u0134\u0135\u0005b\u0000\u0000\u0135\u0136\u0005s\u0000\u0000\u0136\u0137"+ + "\u0005t\u0000\u0000\u0137\u0138\u0005r\u0000\u0000\u0138\u0139\u0005a"+ + "\u0000\u0000\u0139\u013a\u0005c\u0000\u0000\u013a\u013b\u0005t\u0000\u0000"+ + "\u013b\u0002\u0001\u0000\u0000\u0000\u013c\u013d\u0005a\u0000\u0000\u013d"+ + "\u013e\u0005s\u0000\u0000\u013e\u013f\u0005s\u0000\u0000\u013f\u0140\u0005"+ + "e\u0000\u0000\u0140\u0141\u0005r\u0000\u0000\u0141\u0142\u0005t\u0000"+ + "\u0000\u0142\u0004\u0001\u0000\u0000\u0000\u0143\u0144\u0005b\u0000\u0000"+ + "\u0144\u0145\u0005o\u0000\u0000\u0145\u0146\u0005o\u0000\u0000\u0146\u0147"+ + "\u0005l\u0000\u0000\u0147\u0148\u0005e\u0000\u0000\u0148\u0149\u0005a"+ + "\u0000\u0000\u0149\u014a\u0005n\u0000\u0000\u014a\u0006\u0001\u0000\u0000"+ + "\u0000\u014b\u014c\u0005b\u0000\u0000\u014c\u014d\u0005r\u0000\u0000\u014d"+ + "\u014e\u0005e\u0000\u0000\u014e\u014f\u0005a\u0000\u0000\u014f\u0150\u0005"+ + "k\u0000\u0000\u0150\b\u0001\u0000\u0000\u0000\u0151\u0152\u0005b\u0000"+ + "\u0000\u0152\u0153\u0005y\u0000\u0000\u0153\u0154\u0005t\u0000\u0000\u0154"+ + "\u0155\u0005e\u0000\u0000\u0155\n\u0001\u0000\u0000\u0000\u0156\u0157"+ + "\u0005c\u0000\u0000\u0157\u0158\u0005a\u0000\u0000\u0158\u0159\u0005s"+ + "\u0000\u0000\u0159\u015a\u0005e\u0000\u0000\u015a\f\u0001\u0000\u0000"+ + "\u0000\u015b\u015c\u0005c\u0000\u0000\u015c\u015d\u0005a\u0000\u0000\u015d"+ + "\u015e\u0005t\u0000\u0000\u015e\u015f\u0005c\u0000\u0000\u015f\u0160\u0005"+ + "h\u0000\u0000\u0160\u000e\u0001\u0000\u0000\u0000\u0161\u0162\u0005c\u0000"+ + "\u0000\u0162\u0163\u0005h\u0000\u0000\u0163\u0164\u0005a\u0000\u0000\u0164"+ + "\u0165\u0005r\u0000\u0000\u0165\u0010\u0001\u0000\u0000\u0000\u0166\u0167"+ + "\u0005c\u0000\u0000\u0167\u0168\u0005l\u0000\u0000\u0168\u0169\u0005a"+ + "\u0000\u0000\u0169\u016a\u0005s\u0000\u0000\u016a\u016b\u0005s\u0000\u0000"+ + "\u016b\u0012\u0001\u0000\u0000\u0000\u016c\u016d\u0005c\u0000\u0000\u016d"+ + "\u016e\u0005o\u0000\u0000\u016e\u016f\u0005n\u0000\u0000\u016f\u0170\u0005"+ + "s\u0000\u0000\u0170\u0171\u0005t\u0000\u0000\u0171\u0014\u0001\u0000\u0000"+ + "\u0000\u0172\u0173\u0005c\u0000\u0000\u0173\u0174\u0005o\u0000\u0000\u0174"+ + "\u0175\u0005n\u0000\u0000\u0175\u0176\u0005t\u0000\u0000\u0176\u0177\u0005"+ + "i\u0000\u0000\u0177\u0178\u0005n\u0000\u0000\u0178\u0179\u0005u\u0000"+ + "\u0000\u0179\u017a\u0005e\u0000\u0000\u017a\u0016\u0001\u0000\u0000\u0000"+ + "\u017b\u017c\u0005d\u0000\u0000\u017c\u017d\u0005e\u0000\u0000\u017d\u017e"+ + "\u0005f\u0000\u0000\u017e\u017f\u0005a\u0000\u0000\u017f\u0180\u0005u"+ + "\u0000\u0000\u0180\u0181\u0005l\u0000\u0000\u0181\u0182\u0005t\u0000\u0000"+ + "\u0182\u0018\u0001\u0000\u0000\u0000\u0183\u0184\u0005d\u0000\u0000\u0184"+ + "\u0185\u0005o\u0000\u0000\u0185\u001a\u0001\u0000\u0000\u0000\u0186\u0187"+ + "\u0005d\u0000\u0000\u0187\u0188\u0005o\u0000\u0000\u0188\u0189\u0005u"+ + "\u0000\u0000\u0189\u018a\u0005b\u0000\u0000\u018a\u018b\u0005l\u0000\u0000"+ + "\u018b\u018c\u0005e\u0000\u0000\u018c\u001c\u0001\u0000\u0000\u0000\u018d"+ + "\u018e\u0005e\u0000\u0000\u018e\u018f\u0005l\u0000\u0000\u018f\u0190\u0005"+ + "s\u0000\u0000\u0190\u0191\u0005e\u0000\u0000\u0191\u001e\u0001\u0000\u0000"+ + "\u0000\u0192\u0193\u0005e\u0000\u0000\u0193\u0194\u0005n\u0000\u0000\u0194"+ + "\u0195\u0005u\u0000\u0000\u0195\u0196\u0005m\u0000\u0000\u0196 \u0001"+ + "\u0000\u0000\u0000\u0197\u0198\u0005e\u0000\u0000\u0198\u0199\u0005x\u0000"+ + "\u0000\u0199\u019a\u0005t\u0000\u0000\u019a\u019b\u0005e\u0000\u0000\u019b"+ + "\u019c\u0005n\u0000\u0000\u019c\u019d\u0005d\u0000\u0000\u019d\u019e\u0005"+ + "s\u0000\u0000\u019e\"\u0001\u0000\u0000\u0000\u019f\u01a0\u0005f\u0000"+ + "\u0000\u01a0\u01a1\u0005i\u0000\u0000\u01a1\u01a2\u0005n\u0000\u0000\u01a2"+ + "\u01a3\u0005a\u0000\u0000\u01a3\u01a4\u0005l\u0000\u0000\u01a4$\u0001"+ + "\u0000\u0000\u0000\u01a5\u01a6\u0005f\u0000\u0000\u01a6\u01a7\u0005i\u0000"+ + "\u0000\u01a7\u01a8\u0005n\u0000\u0000\u01a8\u01a9\u0005a\u0000\u0000\u01a9"+ + "\u01aa\u0005l\u0000\u0000\u01aa\u01ab\u0005l\u0000\u0000\u01ab\u01ac\u0005"+ + "y\u0000\u0000\u01ac&\u0001\u0000\u0000\u0000\u01ad\u01ae\u0005f\u0000"+ + "\u0000\u01ae\u01af\u0005l\u0000\u0000\u01af\u01b0\u0005o\u0000\u0000\u01b0"+ + "\u01b1\u0005a\u0000\u0000\u01b1\u01b2\u0005t\u0000\u0000\u01b2(\u0001"+ + "\u0000\u0000\u0000\u01b3\u01b4\u0005f\u0000\u0000\u01b4\u01b5\u0005o\u0000"+ + "\u0000\u01b5\u01b6\u0005r\u0000\u0000\u01b6*\u0001\u0000\u0000\u0000\u01b7"+ + "\u01b8\u0005i\u0000\u0000\u01b8\u01b9\u0005f\u0000\u0000\u01b9,\u0001"+ + "\u0000\u0000\u0000\u01ba\u01bb\u0005g\u0000\u0000\u01bb\u01bc\u0005o\u0000"+ + "\u0000\u01bc\u01bd\u0005t\u0000\u0000\u01bd\u01be\u0005o\u0000\u0000\u01be"+ + ".\u0001\u0000\u0000\u0000\u01bf\u01c0\u0005i\u0000\u0000\u01c0\u01c1\u0005"+ + "m\u0000\u0000\u01c1\u01c2\u0005p\u0000\u0000\u01c2\u01c3\u0005l\u0000"+ + "\u0000\u01c3\u01c4\u0005e\u0000\u0000\u01c4\u01c5\u0005m\u0000\u0000\u01c5"+ + "\u01c6\u0005e\u0000\u0000\u01c6\u01c7\u0005n\u0000\u0000\u01c7\u01c8\u0005"+ + "t\u0000\u0000\u01c8\u01c9\u0005s\u0000\u0000\u01c90\u0001\u0000\u0000"+ + "\u0000\u01ca\u01cb\u0005i\u0000\u0000\u01cb\u01cc\u0005m\u0000\u0000\u01cc"+ + "\u01cd\u0005p\u0000\u0000\u01cd\u01ce\u0005o\u0000\u0000\u01ce\u01cf\u0005"+ + "r\u0000\u0000\u01cf\u01d0\u0005t\u0000\u0000\u01d02\u0001\u0000\u0000"+ + "\u0000\u01d1\u01d2\u0005i\u0000\u0000\u01d2\u01d3\u0005n\u0000\u0000\u01d3"+ + "\u01d4\u0005s\u0000\u0000\u01d4\u01d5\u0005t\u0000\u0000\u01d5\u01d6\u0005"+ + "a\u0000\u0000\u01d6\u01d7\u0005n\u0000\u0000\u01d7\u01d8\u0005c\u0000"+ + "\u0000\u01d8\u01d9\u0005e\u0000\u0000\u01d9\u01da\u0005o\u0000\u0000\u01da"+ + "\u01db\u0005f\u0000\u0000\u01db4\u0001\u0000\u0000\u0000\u01dc\u01dd\u0005"+ + "i\u0000\u0000\u01dd\u01de\u0005n\u0000\u0000\u01de\u01df\u0005t\u0000"+ + "\u0000\u01df6\u0001\u0000\u0000\u0000\u01e0\u01e1\u0005i\u0000\u0000\u01e1"+ + "\u01e2\u0005n\u0000\u0000\u01e2\u01e3\u0005t\u0000\u0000\u01e3\u01e4\u0005"+ + "e\u0000\u0000\u01e4\u01e5\u0005r\u0000\u0000\u01e5\u01e6\u0005f\u0000"+ + "\u0000\u01e6\u01e7\u0005a\u0000\u0000\u01e7\u01e8\u0005c\u0000\u0000\u01e8"+ + "\u01e9\u0005e\u0000\u0000\u01e98\u0001\u0000\u0000\u0000\u01ea\u01eb\u0005"+ + "l\u0000\u0000\u01eb\u01ec\u0005o\u0000\u0000\u01ec\u01ed\u0005n\u0000"+ + "\u0000\u01ed\u01ee\u0005g\u0000\u0000\u01ee:\u0001\u0000\u0000\u0000\u01ef"+ + "\u01f0\u0005n\u0000\u0000\u01f0\u01f1\u0005a\u0000\u0000\u01f1\u01f2\u0005"+ + "t\u0000\u0000\u01f2\u01f3\u0005i\u0000\u0000\u01f3\u01f4\u0005v\u0000"+ + "\u0000\u01f4\u01f5\u0005e\u0000\u0000\u01f5<\u0001\u0000\u0000\u0000\u01f6"+ + "\u01f7\u0005n\u0000\u0000\u01f7\u01f8\u0005e\u0000\u0000\u01f8\u01f9\u0005"+ + "w\u0000\u0000\u01f9>\u0001\u0000\u0000\u0000\u01fa\u01fb\u0005p\u0000"+ + "\u0000\u01fb\u01fc\u0005a\u0000\u0000\u01fc\u01fd\u0005c\u0000\u0000\u01fd"+ + "\u01fe\u0005k\u0000\u0000\u01fe\u01ff\u0005a\u0000\u0000\u01ff\u0200\u0005"+ + "g\u0000\u0000\u0200\u0201\u0005e\u0000\u0000\u0201@\u0001\u0000\u0000"+ + "\u0000\u0202\u0203\u0005p\u0000\u0000\u0203\u0204\u0005r\u0000\u0000\u0204"+ + "\u0205\u0005i\u0000\u0000\u0205\u0206\u0005v\u0000\u0000\u0206\u0207\u0005"+ + "a\u0000\u0000\u0207\u0208\u0005t\u0000\u0000\u0208\u0209\u0005e\u0000"+ + "\u0000\u0209B\u0001\u0000\u0000\u0000\u020a\u020b\u0005p\u0000\u0000\u020b"+ + "\u020c\u0005r\u0000\u0000\u020c\u020d\u0005o\u0000\u0000\u020d\u020e\u0005"+ + "t\u0000\u0000\u020e\u020f\u0005e\u0000\u0000\u020f\u0210\u0005c\u0000"+ + "\u0000\u0210\u0211\u0005t\u0000\u0000\u0211\u0212\u0005e\u0000\u0000\u0212"+ + "\u0213\u0005d\u0000\u0000\u0213D\u0001\u0000\u0000\u0000\u0214\u0215\u0005"+ + "p\u0000\u0000\u0215\u0216\u0005u\u0000\u0000\u0216\u0217\u0005b\u0000"+ + "\u0000\u0217\u0218\u0005l\u0000\u0000\u0218\u0219\u0005i\u0000\u0000\u0219"+ + "\u021a\u0005c\u0000\u0000\u021aF\u0001\u0000\u0000\u0000\u021b\u021c\u0005"+ + "r\u0000\u0000\u021c\u021d\u0005e\u0000\u0000\u021d\u021e\u0005t\u0000"+ + "\u0000\u021e\u021f\u0005u\u0000\u0000\u021f\u0220\u0005r\u0000\u0000\u0220"+ + "\u0221\u0005n\u0000\u0000\u0221H\u0001\u0000\u0000\u0000\u0222\u0223\u0005"+ + "s\u0000\u0000\u0223\u0224\u0005h\u0000\u0000\u0224\u0225\u0005o\u0000"+ + "\u0000\u0225\u0226\u0005r\u0000\u0000\u0226\u0227\u0005t\u0000\u0000\u0227"+ + "J\u0001\u0000\u0000\u0000\u0228\u0229\u0005s\u0000\u0000\u0229\u022a\u0005"+ + "t\u0000\u0000\u022a\u022b\u0005a\u0000\u0000\u022b\u022c\u0005t\u0000"+ + "\u0000\u022c\u022d\u0005i\u0000\u0000\u022d\u022e\u0005c\u0000\u0000\u022e"+ + "L\u0001\u0000\u0000\u0000\u022f\u0230\u0005s\u0000\u0000\u0230\u0231\u0005"+ + "t\u0000\u0000\u0231\u0232\u0005r\u0000\u0000\u0232\u0233\u0005i\u0000"+ + "\u0000\u0233\u0234\u0005c\u0000\u0000\u0234\u0235\u0005t\u0000\u0000\u0235"+ + "\u0236\u0005f\u0000\u0000\u0236\u0237\u0005p\u0000\u0000\u0237N\u0001"+ + "\u0000\u0000\u0000\u0238\u0239\u0005s\u0000\u0000\u0239\u023a\u0005u\u0000"+ + "\u0000\u023a\u023b\u0005p\u0000\u0000\u023b\u023c\u0005e\u0000\u0000\u023c"+ + "\u023d\u0005r\u0000\u0000\u023dP\u0001\u0000\u0000\u0000\u023e\u023f\u0005"+ + "s\u0000\u0000\u023f\u0240\u0005w\u0000\u0000\u0240\u0241\u0005i\u0000"+ + "\u0000\u0241\u0242\u0005t\u0000\u0000\u0242\u0243\u0005c\u0000\u0000\u0243"+ + "\u0244\u0005h\u0000\u0000\u0244R\u0001\u0000\u0000\u0000\u0245\u0246\u0005"+ + "s\u0000\u0000\u0246\u0247\u0005y\u0000\u0000\u0247\u0248\u0005n\u0000"+ + "\u0000\u0248\u0249\u0005c\u0000\u0000\u0249\u024a\u0005h\u0000\u0000\u024a"+ + "\u024b\u0005r\u0000\u0000\u024b\u024c\u0005o\u0000\u0000\u024c\u024d\u0005"+ + "n\u0000\u0000\u024d\u024e\u0005i\u0000\u0000\u024e\u024f\u0005z\u0000"+ + "\u0000\u024f\u0250\u0005e\u0000\u0000\u0250\u0251\u0005d\u0000\u0000\u0251"+ + "T\u0001\u0000\u0000\u0000\u0252\u0253\u0005t\u0000\u0000\u0253\u0254\u0005"+ + "h\u0000\u0000\u0254\u0255\u0005i\u0000\u0000\u0255\u0256\u0005s\u0000"+ + "\u0000\u0256V\u0001\u0000\u0000\u0000\u0257\u0258\u0005t\u0000\u0000\u0258"+ + "\u0259\u0005h\u0000\u0000\u0259\u025a\u0005r\u0000\u0000\u025a\u025b\u0005"+ + "o\u0000\u0000\u025b\u025c\u0005w\u0000\u0000\u025cX\u0001\u0000\u0000"+ + "\u0000\u025d\u025e\u0005t\u0000\u0000\u025e\u025f\u0005h\u0000\u0000\u025f"+ + "\u0260\u0005r\u0000\u0000\u0260\u0261\u0005o\u0000\u0000\u0261\u0262\u0005"+ + "w\u0000\u0000\u0262\u0263\u0005s\u0000\u0000\u0263Z\u0001\u0000\u0000"+ + "\u0000\u0264\u0265\u0005t\u0000\u0000\u0265\u0266\u0005r\u0000\u0000\u0266"+ + "\u0267\u0005a\u0000\u0000\u0267\u0268\u0005n\u0000\u0000\u0268\u0269\u0005"+ + "s\u0000\u0000\u0269\u026a\u0005i\u0000\u0000\u026a\u026b\u0005e\u0000"+ + "\u0000\u026b\u026c\u0005n\u0000\u0000\u026c\u026d\u0005t\u0000\u0000\u026d"+ + "\\\u0001\u0000\u0000\u0000\u026e\u026f\u0005t\u0000\u0000\u026f\u0270"+ + "\u0005r\u0000\u0000\u0270\u0271\u0005y\u0000\u0000\u0271^\u0001\u0000"+ + "\u0000\u0000\u0272\u0273\u0005v\u0000\u0000\u0273\u0274\u0005o\u0000\u0000"+ + "\u0274\u0275\u0005i\u0000\u0000\u0275\u0276\u0005d\u0000\u0000\u0276`"+ + "\u0001\u0000\u0000\u0000\u0277\u0278\u0005v\u0000\u0000\u0278\u0279\u0005"+ + "o\u0000\u0000\u0279\u027a\u0005l\u0000\u0000\u027a\u027b\u0005a\u0000"+ + "\u0000\u027b\u027c\u0005t\u0000\u0000\u027c\u027d\u0005i\u0000\u0000\u027d"+ + "\u027e\u0005l\u0000\u0000\u027e\u027f\u0005e\u0000\u0000\u027fb\u0001"+ + "\u0000\u0000\u0000\u0280\u0281\u0005w\u0000\u0000\u0281\u0282\u0005h\u0000"+ + "\u0000\u0282\u0283\u0005i\u0000\u0000\u0283\u0284\u0005l\u0000\u0000\u0284"+ + "\u0285\u0005e\u0000\u0000\u0285d\u0001\u0000\u0000\u0000\u0286\u028b\u0003"+ + "g3\u0000\u0287\u028b\u0003i4\u0000\u0288\u028b\u0003k5\u0000\u0289\u028b"+ + "\u0003m6\u0000\u028a\u0286\u0001\u0000\u0000\u0000\u028a\u0287\u0001\u0000"+ + "\u0000\u0000\u028a\u0288\u0001\u0000\u0000\u0000\u028a\u0289\u0001\u0000"+ + "\u0000\u0000\u028bf\u0001\u0000\u0000\u0000\u028c\u028e\u0003q8\u0000"+ + "\u028d\u028f\u0003o7\u0000\u028e\u028d\u0001\u0000\u0000\u0000\u028e\u028f"+ + "\u0001\u0000\u0000\u0000\u028fh\u0001\u0000\u0000\u0000\u0290\u0292\u0003"+ + "\u007f?\u0000\u0291\u0293\u0003o7\u0000\u0292\u0291\u0001\u0000\u0000"+ + "\u0000\u0292\u0293\u0001\u0000\u0000\u0000\u0293j\u0001\u0000\u0000\u0000"+ + "\u0294\u0296\u0003\u0089D\u0000\u0295\u0297\u0003o7\u0000\u0296\u0295"+ + "\u0001\u0000\u0000\u0000\u0296\u0297\u0001\u0000\u0000\u0000\u0297l\u0001"+ + "\u0000\u0000\u0000\u0298\u029a\u0003\u0093I\u0000\u0299\u029b\u0003o7"+ + "\u0000\u029a\u0299\u0001\u0000\u0000\u0000\u029a\u029b\u0001\u0000\u0000"+ + "\u0000\u029bn\u0001\u0000\u0000\u0000\u029c\u029d\u0007\u0000\u0000\u0000"+ + "\u029dp\u0001\u0000\u0000\u0000\u029e\u02a9\u00050\u0000\u0000\u029f\u02a6"+ + "\u0003w;\u0000\u02a0\u02a2\u0003s9\u0000\u02a1\u02a0\u0001\u0000\u0000"+ + "\u0000\u02a1\u02a2\u0001\u0000\u0000\u0000\u02a2\u02a7\u0001\u0000\u0000"+ + "\u0000\u02a3\u02a4\u0003}>\u0000\u02a4\u02a5\u0003s9\u0000\u02a5\u02a7"+ + "\u0001\u0000\u0000\u0000\u02a6\u02a1\u0001\u0000\u0000\u0000\u02a6\u02a3"+ + "\u0001\u0000\u0000\u0000\u02a7\u02a9\u0001\u0000\u0000\u0000\u02a8\u029e"+ + "\u0001\u0000\u0000\u0000\u02a8\u029f\u0001\u0000\u0000\u0000\u02a9r\u0001"+ + "\u0000\u0000\u0000\u02aa\u02af\u0003u:\u0000\u02ab\u02ad\u0003y<\u0000"+ + "\u02ac\u02ab\u0001\u0000\u0000\u0000\u02ac\u02ad\u0001\u0000\u0000\u0000"+ + "\u02ad\u02ae\u0001\u0000\u0000\u0000\u02ae\u02b0\u0003u:\u0000\u02af\u02ac"+ + "\u0001\u0000\u0000\u0000\u02af\u02b0\u0001\u0000\u0000\u0000\u02b0t\u0001"+ + "\u0000\u0000\u0000\u02b1\u02b4\u00050\u0000\u0000\u02b2\u02b4\u0003w;"+ + "\u0000\u02b3\u02b1\u0001\u0000\u0000\u0000\u02b3\u02b2\u0001\u0000\u0000"+ + "\u0000\u02b4v\u0001\u0000\u0000\u0000\u02b5\u02b6\u0007\u0001\u0000\u0000"+ + "\u02b6x\u0001\u0000\u0000\u0000\u02b7\u02b9\u0003{=\u0000\u02b8\u02b7"+ + "\u0001\u0000\u0000\u0000\u02b9\u02ba\u0001\u0000\u0000\u0000\u02ba\u02b8"+ + "\u0001\u0000\u0000\u0000\u02ba\u02bb\u0001\u0000\u0000\u0000\u02bbz\u0001"+ + "\u0000\u0000\u0000\u02bc\u02bf\u0003u:\u0000\u02bd\u02bf\u0005_\u0000"+ + "\u0000\u02be\u02bc\u0001\u0000\u0000\u0000\u02be\u02bd\u0001\u0000\u0000"+ + "\u0000\u02bf|\u0001\u0000\u0000\u0000\u02c0\u02c2\u0005_\u0000\u0000\u02c1"+ + "\u02c0\u0001\u0000\u0000\u0000\u02c2\u02c3\u0001\u0000\u0000\u0000\u02c3"+ + "\u02c1\u0001\u0000\u0000\u0000\u02c3\u02c4\u0001\u0000\u0000\u0000\u02c4"+ + "~\u0001\u0000\u0000\u0000\u02c5\u02c6\u00050\u0000\u0000\u02c6\u02c7\u0007"+ + "\u0002\u0000\u0000\u02c7\u02c8\u0003\u0081@\u0000\u02c8\u0080\u0001\u0000"+ + "\u0000\u0000\u02c9\u02ce\u0003\u0083A\u0000\u02ca\u02cc\u0003\u0085B\u0000"+ + "\u02cb\u02ca\u0001\u0000\u0000\u0000\u02cb\u02cc\u0001\u0000\u0000\u0000"+ + "\u02cc\u02cd\u0001\u0000\u0000\u0000\u02cd\u02cf\u0003\u0083A\u0000\u02ce"+ + "\u02cb\u0001\u0000\u0000\u0000\u02ce\u02cf\u0001\u0000\u0000\u0000\u02cf"+ + "\u0082\u0001\u0000\u0000\u0000\u02d0\u02d1\u0007\u0003\u0000\u0000\u02d1"+ + "\u0084\u0001\u0000\u0000\u0000\u02d2\u02d4\u0003\u0087C\u0000\u02d3\u02d2"+ + "\u0001\u0000\u0000\u0000\u02d4\u02d5\u0001\u0000\u0000\u0000\u02d5\u02d3"+ + "\u0001\u0000\u0000\u0000\u02d5\u02d6\u0001\u0000\u0000\u0000\u02d6\u0086"+ + "\u0001\u0000\u0000\u0000\u02d7\u02da\u0003\u0083A\u0000\u02d8\u02da\u0005"+ + "_\u0000\u0000\u02d9\u02d7\u0001\u0000\u0000\u0000\u02d9\u02d8\u0001\u0000"+ + "\u0000\u0000\u02da\u0088\u0001\u0000\u0000\u0000\u02db\u02dd\u00050\u0000"+ + "\u0000\u02dc\u02de\u0003}>\u0000\u02dd\u02dc\u0001\u0000\u0000\u0000\u02dd"+ + "\u02de\u0001\u0000\u0000\u0000\u02de\u02df\u0001\u0000\u0000\u0000\u02df"+ + "\u02e0\u0003\u008bE\u0000\u02e0\u008a\u0001\u0000\u0000\u0000\u02e1\u02e6"+ + "\u0003\u008dF\u0000\u02e2\u02e4\u0003\u008fG\u0000\u02e3\u02e2\u0001\u0000"+ + "\u0000\u0000\u02e3\u02e4\u0001\u0000\u0000\u0000\u02e4\u02e5\u0001\u0000"+ + "\u0000\u0000\u02e5\u02e7\u0003\u008dF\u0000\u02e6\u02e3\u0001\u0000\u0000"+ + "\u0000\u02e6\u02e7\u0001\u0000\u0000\u0000\u02e7\u008c\u0001\u0000\u0000"+ + "\u0000\u02e8\u02e9\u0007\u0004\u0000\u0000\u02e9\u008e\u0001\u0000\u0000"+ + "\u0000\u02ea\u02ec\u0003\u0091H\u0000\u02eb\u02ea\u0001\u0000\u0000\u0000"+ + "\u02ec\u02ed\u0001\u0000\u0000\u0000\u02ed\u02eb\u0001\u0000\u0000\u0000"+ + "\u02ed\u02ee\u0001\u0000\u0000\u0000\u02ee\u0090\u0001\u0000\u0000\u0000"+ + "\u02ef\u02f2\u0003\u008dF\u0000\u02f0\u02f2\u0005_\u0000\u0000\u02f1\u02ef"+ + "\u0001\u0000\u0000\u0000\u02f1\u02f0\u0001\u0000\u0000\u0000\u02f2\u0092"+ + "\u0001\u0000\u0000\u0000\u02f3\u02f4\u00050\u0000\u0000\u02f4\u02f5\u0007"+ + "\u0005\u0000\u0000\u02f5\u02f6\u0003\u0095J\u0000\u02f6\u0094\u0001\u0000"+ + "\u0000\u0000\u02f7\u02fc\u0003\u0097K\u0000\u02f8\u02fa\u0003\u0099L\u0000"+ + "\u02f9\u02f8\u0001\u0000\u0000\u0000\u02f9\u02fa\u0001\u0000\u0000\u0000"+ + "\u02fa\u02fb\u0001\u0000\u0000\u0000\u02fb\u02fd\u0003\u0097K\u0000\u02fc"+ + "\u02f9\u0001\u0000\u0000\u0000\u02fc\u02fd\u0001\u0000\u0000\u0000\u02fd"+ + "\u0096\u0001\u0000\u0000\u0000\u02fe\u02ff\u0007\u0006\u0000\u0000\u02ff"+ + "\u0098\u0001\u0000\u0000\u0000\u0300\u0302\u0003\u009bM\u0000\u0301\u0300"+ + "\u0001\u0000\u0000\u0000\u0302\u0303\u0001\u0000\u0000\u0000\u0303\u0301"+ + "\u0001\u0000\u0000\u0000\u0303\u0304\u0001\u0000\u0000\u0000\u0304\u009a"+ + "\u0001\u0000\u0000\u0000\u0305\u0308\u0003\u0097K\u0000\u0306\u0308\u0005"+ + "_\u0000\u0000\u0307\u0305\u0001\u0000\u0000\u0000\u0307\u0306\u0001\u0000"+ + "\u0000\u0000\u0308\u009c\u0001\u0000\u0000\u0000\u0309\u030c\u0003\u009f"+ + "O\u0000\u030a\u030c\u0003\u00abU\u0000\u030b\u0309\u0001\u0000\u0000\u0000"+ + "\u030b\u030a\u0001\u0000\u0000\u0000\u030c\u009e\u0001\u0000\u0000\u0000"+ + "\u030d\u030e\u0003s9\u0000\u030e\u0310\u0005.\u0000\u0000\u030f\u0311"+ + "\u0003s9\u0000\u0310\u030f\u0001\u0000\u0000\u0000\u0310\u0311\u0001\u0000"+ + "\u0000\u0000\u0311\u0313\u0001\u0000\u0000\u0000\u0312\u0314\u0003\u00a1"+ + "P\u0000\u0313\u0312\u0001\u0000\u0000\u0000\u0313\u0314\u0001\u0000\u0000"+ + "\u0000\u0314\u0316\u0001\u0000\u0000\u0000\u0315\u0317\u0003\u00a9T\u0000"+ + "\u0316\u0315\u0001\u0000\u0000\u0000\u0316\u0317\u0001\u0000\u0000\u0000"+ + "\u0317\u0329\u0001\u0000\u0000\u0000\u0318\u0319\u0005.\u0000\u0000\u0319"+ + "\u031b\u0003s9\u0000\u031a\u031c\u0003\u00a1P\u0000\u031b\u031a\u0001"+ + "\u0000\u0000\u0000\u031b\u031c\u0001\u0000\u0000\u0000\u031c\u031e\u0001"+ + "\u0000\u0000\u0000\u031d\u031f\u0003\u00a9T\u0000\u031e\u031d\u0001\u0000"+ + "\u0000\u0000\u031e\u031f\u0001\u0000\u0000\u0000\u031f\u0329\u0001\u0000"+ + "\u0000\u0000\u0320\u0321\u0003s9\u0000\u0321\u0323\u0003\u00a1P\u0000"+ + "\u0322\u0324\u0003\u00a9T\u0000\u0323\u0322\u0001\u0000\u0000\u0000\u0323"+ + "\u0324\u0001\u0000\u0000\u0000\u0324\u0329\u0001\u0000\u0000\u0000\u0325"+ + "\u0326\u0003s9\u0000\u0326\u0327\u0003\u00a9T\u0000\u0327\u0329\u0001"+ + "\u0000\u0000\u0000\u0328\u030d\u0001\u0000\u0000\u0000\u0328\u0318\u0001"+ + "\u0000\u0000\u0000\u0328\u0320\u0001\u0000\u0000\u0000\u0328\u0325\u0001"+ + "\u0000\u0000\u0000\u0329\u00a0\u0001\u0000\u0000\u0000\u032a\u032b\u0003"+ + "\u00a3Q\u0000\u032b\u032c\u0003\u00a5R\u0000\u032c\u00a2\u0001\u0000\u0000"+ + "\u0000\u032d\u032e\u0007\u0007\u0000\u0000\u032e\u00a4\u0001\u0000\u0000"+ + "\u0000\u032f\u0331\u0003\u00a7S\u0000\u0330\u032f\u0001\u0000\u0000\u0000"+ + "\u0330\u0331\u0001\u0000\u0000\u0000\u0331\u0332\u0001\u0000\u0000\u0000"+ + "\u0332\u0333\u0003s9\u0000\u0333\u00a6\u0001\u0000\u0000\u0000\u0334\u0335"+ + "\u0007\b\u0000\u0000\u0335\u00a8\u0001\u0000\u0000\u0000\u0336\u0337\u0007"+ + "\t\u0000\u0000\u0337\u00aa\u0001\u0000\u0000\u0000\u0338\u0339\u0003\u00ad"+ + "V\u0000\u0339\u033b\u0003\u00afW\u0000\u033a\u033c\u0003\u00a9T\u0000"+ + "\u033b\u033a\u0001\u0000\u0000\u0000\u033b\u033c\u0001\u0000\u0000\u0000"+ + "\u033c\u00ac\u0001\u0000\u0000\u0000\u033d\u033f\u0003\u007f?\u0000\u033e"+ + "\u0340\u0005.\u0000\u0000\u033f\u033e\u0001\u0000\u0000\u0000\u033f\u0340"+ + "\u0001\u0000\u0000\u0000\u0340\u0349\u0001\u0000\u0000\u0000\u0341\u0342"+ + "\u00050\u0000\u0000\u0342\u0344\u0007\u0002\u0000\u0000\u0343\u0345\u0003"+ + "\u0081@\u0000\u0344\u0343\u0001\u0000\u0000\u0000\u0344\u0345\u0001\u0000"+ + "\u0000\u0000\u0345\u0346\u0001\u0000\u0000\u0000\u0346\u0347\u0005.\u0000"+ + "\u0000\u0347\u0349\u0003\u0081@\u0000\u0348\u033d\u0001\u0000\u0000\u0000"+ + "\u0348\u0341\u0001\u0000\u0000\u0000\u0349\u00ae\u0001\u0000\u0000\u0000"+ + "\u034a\u034b\u0003\u00b1X\u0000\u034b\u034c\u0003\u00a5R\u0000\u034c\u00b0"+ + "\u0001\u0000\u0000\u0000\u034d\u034e\u0007\n\u0000\u0000\u034e\u00b2\u0001"+ + "\u0000\u0000\u0000\u034f\u0350\u0005t\u0000\u0000\u0350\u0351\u0005r\u0000"+ + "\u0000\u0351\u0352\u0005u\u0000\u0000\u0352\u0359\u0005e\u0000\u0000\u0353"+ + "\u0354\u0005f\u0000\u0000\u0354\u0355\u0005a\u0000\u0000\u0355\u0356\u0005"+ + "l\u0000\u0000\u0356\u0357\u0005s\u0000\u0000\u0357\u0359\u0005e\u0000"+ + "\u0000\u0358\u034f\u0001\u0000\u0000\u0000\u0358\u0353\u0001\u0000\u0000"+ + "\u0000\u0359\u00b4\u0001\u0000\u0000\u0000\u035a\u035b\u0005\'\u0000\u0000"+ + "\u035b\u035c\u0003\u00b7[\u0000\u035c\u035d\u0005\'\u0000\u0000\u035d"+ + "\u0363\u0001\u0000\u0000\u0000\u035e\u035f\u0005\'\u0000\u0000\u035f\u0360"+ + "\u0003\u00bf_\u0000\u0360\u0361\u0005\'\u0000\u0000\u0361\u0363\u0001"+ + "\u0000\u0000\u0000\u0362\u035a\u0001\u0000\u0000\u0000\u0362\u035e\u0001"+ + "\u0000\u0000\u0000\u0363\u00b6\u0001\u0000\u0000\u0000\u0364\u0365\b\u000b"+ + "\u0000\u0000\u0365\u00b8\u0001\u0000\u0000\u0000\u0366\u0368\u0005\"\u0000"+ + "\u0000\u0367\u0369\u0003\u00bb]\u0000\u0368\u0367\u0001\u0000\u0000\u0000"+ + "\u0368\u0369\u0001\u0000\u0000\u0000\u0369\u036a\u0001\u0000\u0000\u0000"+ + "\u036a\u036b\u0005\"\u0000\u0000\u036b\u00ba\u0001\u0000\u0000\u0000\u036c"+ + "\u036e\u0003\u00bd^\u0000\u036d\u036c\u0001\u0000\u0000\u0000\u036e\u036f"+ + "\u0001\u0000\u0000\u0000\u036f\u036d\u0001\u0000\u0000\u0000\u036f\u0370"+ + "\u0001\u0000\u0000\u0000\u0370\u00bc\u0001\u0000\u0000\u0000\u0371\u0374"+ + "\b\f\u0000\u0000\u0372\u0374\u0003\u00bf_\u0000\u0373\u0371\u0001\u0000"+ + "\u0000\u0000\u0373\u0372\u0001\u0000\u0000\u0000\u0374\u00be\u0001\u0000"+ + "\u0000\u0000\u0375\u0376\u0005\\\u0000\u0000\u0376\u037a\u0007\r\u0000"+ + "\u0000\u0377\u037a\u0003\u00c1`\u0000\u0378\u037a\u0003\u00c5b\u0000\u0379"+ + "\u0375\u0001\u0000\u0000\u0000\u0379\u0377\u0001\u0000\u0000\u0000\u0379"+ + "\u0378\u0001\u0000\u0000\u0000\u037a\u00c0\u0001\u0000\u0000\u0000\u037b"+ + "\u037c\u0005\\\u0000\u0000\u037c\u0387\u0003\u008dF\u0000\u037d\u037e"+ + "\u0005\\\u0000\u0000\u037e\u037f\u0003\u008dF\u0000\u037f\u0380\u0003"+ + "\u008dF\u0000\u0380\u0387\u0001\u0000\u0000\u0000\u0381\u0382\u0005\\"+ + "\u0000\u0000\u0382\u0383\u0003\u00c3a\u0000\u0383\u0384\u0003\u008dF\u0000"+ + "\u0384\u0385\u0003\u008dF\u0000\u0385\u0387\u0001\u0000\u0000\u0000\u0386"+ + "\u037b\u0001\u0000\u0000\u0000\u0386\u037d\u0001\u0000\u0000\u0000\u0386"+ + "\u0381\u0001\u0000\u0000\u0000\u0387\u00c2\u0001\u0000\u0000\u0000\u0388"+ + "\u0389\u0007\u000e\u0000\u0000\u0389\u00c4\u0001\u0000\u0000\u0000\u038a"+ + "\u038b\u0005\\\u0000\u0000\u038b\u038c\u0005u\u0000\u0000\u038c\u038d"+ + "\u0003\u0083A\u0000\u038d\u038e\u0003\u0083A\u0000\u038e\u038f\u0003\u0083"+ + "A\u0000\u038f\u0390\u0003\u0083A\u0000\u0390\u00c6\u0001\u0000\u0000\u0000"+ + "\u0391\u0392\u0005n\u0000\u0000\u0392\u0393\u0005u\u0000\u0000\u0393\u0394"+ + "\u0005l\u0000\u0000\u0394\u0395\u0005l\u0000\u0000\u0395\u00c8\u0001\u0000"+ + "\u0000\u0000\u0396\u0397\u0005(\u0000\u0000\u0397\u00ca\u0001\u0000\u0000"+ + "\u0000\u0398\u0399\u0005)\u0000\u0000\u0399\u00cc\u0001\u0000\u0000\u0000"+ + "\u039a\u039b\u0005{\u0000\u0000\u039b\u00ce\u0001\u0000\u0000\u0000\u039c"+ + "\u039d\u0005}\u0000\u0000\u039d\u00d0\u0001\u0000\u0000\u0000\u039e\u039f"+ + "\u0005[\u0000\u0000\u039f\u00d2\u0001\u0000\u0000\u0000\u03a0\u03a1\u0005"+ + "]\u0000\u0000\u03a1\u00d4\u0001\u0000\u0000\u0000\u03a2\u03a3\u0005;\u0000"+ + "\u0000\u03a3\u00d6\u0001\u0000\u0000\u0000\u03a4\u03a5\u0005,\u0000\u0000"+ + "\u03a5\u00d8\u0001\u0000\u0000\u0000\u03a6\u03a7\u0005.\u0000\u0000\u03a7"+ + "\u00da\u0001\u0000\u0000\u0000\u03a8\u03a9\u0005=\u0000\u0000\u03a9\u00dc"+ + "\u0001\u0000\u0000\u0000\u03aa\u03ab\u0005>\u0000\u0000\u03ab\u00de\u0001"+ + "\u0000\u0000\u0000\u03ac\u03ad\u0005<\u0000\u0000\u03ad\u00e0\u0001\u0000"+ + "\u0000\u0000\u03ae\u03af\u0005!\u0000\u0000\u03af\u00e2\u0001\u0000\u0000"+ + "\u0000\u03b0\u03b1\u0005~\u0000\u0000\u03b1\u00e4\u0001\u0000\u0000\u0000"+ + "\u03b2\u03b3\u0005?\u0000\u0000\u03b3\u00e6\u0001\u0000\u0000\u0000\u03b4"+ + "\u03b5\u0005:\u0000\u0000\u03b5\u00e8\u0001\u0000\u0000\u0000\u03b6\u03b7"+ + "\u0005=\u0000\u0000\u03b7\u03b8\u0005=\u0000\u0000\u03b8\u00ea\u0001\u0000"+ + "\u0000\u0000\u03b9\u03ba\u0005<\u0000\u0000\u03ba\u03bb\u0005=\u0000\u0000"+ + "\u03bb\u00ec\u0001\u0000\u0000\u0000\u03bc\u03bd\u0005>\u0000\u0000\u03bd"+ + "\u03be\u0005=\u0000\u0000\u03be\u00ee\u0001\u0000\u0000\u0000\u03bf\u03c0"+ + "\u0005!\u0000\u0000\u03c0\u03c1\u0005=\u0000\u0000\u03c1\u00f0\u0001\u0000"+ + "\u0000\u0000\u03c2\u03c3\u0005&\u0000\u0000\u03c3\u03c4\u0005&\u0000\u0000"+ + "\u03c4\u00f2\u0001\u0000\u0000\u0000\u03c5\u03c6\u0005|\u0000\u0000\u03c6"+ + "\u03c7\u0005|\u0000\u0000\u03c7\u00f4\u0001\u0000\u0000\u0000\u03c8\u03c9"+ + "\u0005+\u0000\u0000\u03c9\u03ca\u0005+\u0000\u0000\u03ca\u00f6\u0001\u0000"+ + "\u0000\u0000\u03cb\u03cc\u0005-\u0000\u0000\u03cc\u03cd\u0005-\u0000\u0000"+ + "\u03cd\u00f8\u0001\u0000\u0000\u0000\u03ce\u03cf\u0005+\u0000\u0000\u03cf"+ + "\u00fa\u0001\u0000\u0000\u0000\u03d0\u03d1\u0005-\u0000\u0000\u03d1\u00fc"+ + "\u0001\u0000\u0000\u0000\u03d2\u03d3\u0005*\u0000\u0000\u03d3\u00fe\u0001"+ + "\u0000\u0000\u0000\u03d4\u03d5\u0005/\u0000\u0000\u03d5\u0100\u0001\u0000"+ + "\u0000\u0000\u03d6\u03d7\u0005&\u0000\u0000\u03d7\u0102\u0001\u0000\u0000"+ + "\u0000\u03d8\u03d9\u0005|\u0000\u0000\u03d9\u0104\u0001\u0000\u0000\u0000"+ + "\u03da\u03db\u0005^\u0000\u0000\u03db\u0106\u0001\u0000\u0000\u0000\u03dc"+ + "\u03dd\u0005%\u0000\u0000\u03dd\u0108\u0001\u0000\u0000\u0000\u03de\u03df"+ + "\u0005-\u0000\u0000\u03df\u03e0\u0005>\u0000\u0000\u03e0\u010a\u0001\u0000"+ + "\u0000\u0000\u03e1\u03e2\u0005:\u0000\u0000\u03e2\u03e3\u0005:\u0000\u0000"+ + "\u03e3\u010c\u0001\u0000\u0000\u0000\u03e4\u03e5\u0005+\u0000\u0000\u03e5"+ + "\u03e6\u0005=\u0000\u0000\u03e6\u010e\u0001\u0000\u0000\u0000\u03e7\u03e8"+ + "\u0005-\u0000\u0000\u03e8\u03e9\u0005=\u0000\u0000\u03e9\u0110\u0001\u0000"+ + "\u0000\u0000\u03ea\u03eb\u0005*\u0000\u0000\u03eb\u03ec\u0005=\u0000\u0000"+ + "\u03ec\u0112\u0001\u0000\u0000\u0000\u03ed\u03ee\u0005/\u0000\u0000\u03ee"+ + "\u03ef\u0005=\u0000\u0000\u03ef\u0114\u0001\u0000\u0000\u0000\u03f0\u03f1"+ + "\u0005&\u0000\u0000\u03f1\u03f2\u0005=\u0000\u0000\u03f2\u0116\u0001\u0000"+ + "\u0000\u0000\u03f3\u03f4\u0005|\u0000\u0000\u03f4\u03f5\u0005=\u0000\u0000"+ + "\u03f5\u0118\u0001\u0000\u0000\u0000\u03f6\u03f7\u0005^\u0000\u0000\u03f7"+ + "\u03f8\u0005=\u0000\u0000\u03f8\u011a\u0001\u0000\u0000\u0000\u03f9\u03fa"+ + "\u0005%\u0000\u0000\u03fa\u03fb\u0005=\u0000\u0000\u03fb\u011c\u0001\u0000"+ + "\u0000\u0000\u03fc\u03fd\u0005<\u0000\u0000\u03fd\u03fe\u0005<\u0000\u0000"+ + "\u03fe\u03ff\u0005=\u0000\u0000\u03ff\u011e\u0001\u0000\u0000\u0000\u0400"+ + "\u0401\u0005>\u0000\u0000\u0401\u0402\u0005>\u0000\u0000\u0402\u0403\u0005"+ + "=\u0000\u0000\u0403\u0120\u0001\u0000\u0000\u0000\u0404\u0405\u0005>\u0000"+ + "\u0000\u0405\u0406\u0005>\u0000\u0000\u0406\u0407\u0005>\u0000\u0000\u0407"+ + "\u0408\u0005=\u0000\u0000\u0408\u0122\u0001\u0000\u0000\u0000\u0409\u040d"+ + "\u0003\u0125\u0092\u0000\u040a\u040c\u0003\u0127\u0093\u0000\u040b\u040a"+ + "\u0001\u0000\u0000\u0000\u040c\u040f\u0001\u0000\u0000\u0000\u040d\u040b"+ + "\u0001\u0000\u0000\u0000\u040d\u040e\u0001\u0000\u0000\u0000\u040e\u0124"+ + "\u0001\u0000\u0000\u0000\u040f\u040d\u0001\u0000\u0000\u0000\u0410\u0417"+ + "\u0007\u000f\u0000\u0000\u0411\u0412\b\u0010\u0000\u0000\u0412\u0417\u0004"+ + "\u0092\u0000\u0000\u0413\u0414\u0007\u0011\u0000\u0000\u0414\u0415\u0007"+ + "\u0012\u0000\u0000\u0415\u0417\u0004\u0092\u0001\u0000\u0416\u0410\u0001"+ + "\u0000\u0000\u0000\u0416\u0411\u0001\u0000\u0000\u0000\u0416\u0413\u0001"+ + "\u0000\u0000\u0000\u0417\u0126\u0001\u0000\u0000\u0000\u0418\u041f\u0007"+ + "\u0013\u0000\u0000\u0419\u041a\b\u0010\u0000\u0000\u041a\u041f\u0004\u0093"+ + "\u0002\u0000\u041b\u041c\u0007\u0011\u0000\u0000\u041c\u041d\u0007\u0012"+ + "\u0000\u0000\u041d\u041f\u0004\u0093\u0003\u0000\u041e\u0418\u0001\u0000"+ + "\u0000\u0000\u041e\u0419\u0001\u0000\u0000\u0000\u041e\u041b\u0001\u0000"+ + "\u0000\u0000\u041f\u0128\u0001\u0000\u0000\u0000\u0420\u0421\u0005@\u0000"+ + "\u0000\u0421\u012a\u0001\u0000\u0000\u0000\u0422\u0423\u0005.\u0000\u0000"+ + "\u0423\u0424\u0005.\u0000\u0000\u0424\u0425\u0005.\u0000\u0000\u0425\u012c"+ + "\u0001\u0000\u0000\u0000\u0426\u0428\u0007\u0014\u0000\u0000\u0427\u0426"+ + "\u0001\u0000\u0000\u0000\u0428\u0429\u0001\u0000\u0000\u0000\u0429\u0427"+ + "\u0001\u0000\u0000\u0000\u0429\u042a\u0001\u0000\u0000\u0000\u042a\u042b"+ + "\u0001\u0000\u0000\u0000\u042b\u042c\u0006\u0096\u0000\u0000\u042c\u012e"+ + "\u0001\u0000\u0000\u0000\u042d\u042e\u0005/\u0000\u0000\u042e\u042f\u0005"+ + "*\u0000\u0000\u042f\u0433\u0001\u0000\u0000\u0000\u0430\u0432\t\u0000"+ + "\u0000\u0000\u0431\u0430\u0001\u0000\u0000\u0000\u0432\u0435\u0001\u0000"+ + "\u0000\u0000\u0433\u0434\u0001\u0000\u0000\u0000\u0433\u0431\u0001\u0000"+ + "\u0000\u0000\u0434\u0436\u0001\u0000\u0000\u0000\u0435\u0433\u0001\u0000"+ + "\u0000\u0000\u0436\u0437\u0005*\u0000\u0000\u0437\u0438\u0005/\u0000\u0000"+ + "\u0438\u0439\u0001\u0000\u0000\u0000\u0439\u043a\u0006\u0097\u0000\u0000"+ + "\u043a\u0130\u0001\u0000\u0000\u0000\u043b\u043c\u0005/\u0000\u0000\u043c"+ + "\u043d\u0005/\u0000\u0000\u043d\u0441\u0001\u0000\u0000\u0000\u043e\u0440"+ + "\b\u0015\u0000\u0000\u043f\u043e\u0001\u0000\u0000\u0000\u0440\u0443\u0001"+ + "\u0000\u0000\u0000\u0441\u043f\u0001\u0000\u0000\u0000\u0441\u0442\u0001"+ + "\u0000\u0000\u0000\u0442\u0444\u0001\u0000\u0000\u0000\u0443\u0441\u0001"+ + "\u0000\u0000\u0000\u0444\u0445\u0006\u0098\u0000\u0000\u0445\u0132\u0001"+ + "\u0000\u0000\u00006\u0000\u028a\u028e\u0292\u0296\u029a\u02a1\u02a6\u02a8"+ + "\u02ac\u02af\u02b3\u02ba\u02be\u02c3\u02cb\u02ce\u02d5\u02d9\u02dd\u02e3"+ + "\u02e6\u02ed\u02f1\u02f9\u02fc\u0303\u0307\u030b\u0310\u0313\u0316\u031b"+ + "\u031e\u0323\u0328\u0330\u033b\u033f\u0344\u0348\u0358\u0362\u0368\u036f"+ + "\u0373\u0379\u0386\u040d\u0416\u041e\u0429\u0433\u0441\u0001\u0000\u0001"+ + "\u0000"; + 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/benchmarks/src/main/java/org/antlr/Java8Lexer.tokens b/benchmarks/src/main/java/org/antlr/Java8Lexer.tokens new file mode 100644 index 000000000..52ef1eee3 --- /dev/null +++ b/benchmarks/src/main/java/org/antlr/Java8Lexer.tokens @@ -0,0 +1,205 @@ +ABSTRACT=1 +ASSERT=2 +BOOLEAN=3 +BREAK=4 +BYTE=5 +CASE=6 +CATCH=7 +CHAR=8 +CLASS=9 +CONST=10 +CONTINUE=11 +DEFAULT=12 +DO=13 +DOUBLE=14 +ELSE=15 +ENUM=16 +EXTENDS=17 +FINAL=18 +FINALLY=19 +FLOAT=20 +FOR=21 +IF=22 +GOTO=23 +IMPLEMENTS=24 +IMPORT=25 +INSTANCEOF=26 +INT=27 +INTERFACE=28 +LONG=29 +NATIVE=30 +NEW=31 +PACKAGE=32 +PRIVATE=33 +PROTECTED=34 +PUBLIC=35 +RETURN=36 +SHORT=37 +STATIC=38 +STRICTFP=39 +SUPER=40 +SWITCH=41 +SYNCHRONIZED=42 +THIS=43 +THROW=44 +THROWS=45 +TRANSIENT=46 +TRY=47 +VOID=48 +VOLATILE=49 +WHILE=50 +IntegerLiteral=51 +FloatingPointLiteral=52 +BooleanLiteral=53 +CharacterLiteral=54 +StringLiteral=55 +NullLiteral=56 +LPAREN=57 +RPAREN=58 +LBRACE=59 +RBRACE=60 +LBRACK=61 +RBRACK=62 +SEMI=63 +COMMA=64 +DOT=65 +ASSIGN=66 +GT=67 +LT=68 +BANG=69 +TILDE=70 +QUESTION=71 +COLON=72 +EQUAL=73 +LE=74 +GE=75 +NOTEQUAL=76 +AND=77 +OR=78 +INC=79 +DEC=80 +ADD=81 +SUB=82 +MUL=83 +DIV=84 +BITAND=85 +BITOR=86 +CARET=87 +MOD=88 +ARROW=89 +COLONCOLON=90 +ADD_ASSIGN=91 +SUB_ASSIGN=92 +MUL_ASSIGN=93 +DIV_ASSIGN=94 +AND_ASSIGN=95 +OR_ASSIGN=96 +XOR_ASSIGN=97 +MOD_ASSIGN=98 +LSHIFT_ASSIGN=99 +RSHIFT_ASSIGN=100 +URSHIFT_ASSIGN=101 +Identifier=102 +AT=103 +ELLIPSIS=104 +WS=105 +COMMENT=106 +LINE_COMMENT=107 +'abstract'=1 +'assert'=2 +'boolean'=3 +'break'=4 +'byte'=5 +'case'=6 +'catch'=7 +'char'=8 +'class'=9 +'const'=10 +'continue'=11 +'default'=12 +'do'=13 +'double'=14 +'else'=15 +'enum'=16 +'extends'=17 +'final'=18 +'finally'=19 +'float'=20 +'for'=21 +'if'=22 +'goto'=23 +'implements'=24 +'import'=25 +'instanceof'=26 +'int'=27 +'interface'=28 +'long'=29 +'native'=30 +'new'=31 +'package'=32 +'private'=33 +'protected'=34 +'public'=35 +'return'=36 +'short'=37 +'static'=38 +'strictfp'=39 +'super'=40 +'switch'=41 +'synchronized'=42 +'this'=43 +'throw'=44 +'throws'=45 +'transient'=46 +'try'=47 +'void'=48 +'volatile'=49 +'while'=50 +'null'=56 +'('=57 +')'=58 +'{'=59 +'}'=60 +'['=61 +']'=62 +';'=63 +','=64 +'.'=65 +'='=66 +'>'=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 +'@'=103 +'...'=104 diff --git a/benchmarks/src/main/java/org/antlr/Java8Listener.java b/benchmarks/src/main/java/org/antlr/Java8Listener.java new file mode 100644 index 000000000..6deaf88fb --- /dev/null +++ b/benchmarks/src/main/java/org/antlr/Java8Listener.java @@ -0,0 +1,2382 @@ +// Generated from Java8.g4 by ANTLR 4.13.1 + +package org.antlr; + +import org.antlr.v4.runtime.tree.ParseTreeListener; + +/** + * This interface defines a complete listener for a parse tree produced by + * {@link Java8Parser}. + */ +public interface Java8Listener extends ParseTreeListener { + /** + * Enter a parse tree produced by {@link Java8Parser#literal}. + * @param ctx the parse tree + */ + void enterLiteral(Java8Parser.LiteralContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#literal}. + * @param ctx the parse tree + */ + void exitLiteral(Java8Parser.LiteralContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#type}. + * @param ctx the parse tree + */ + void enterType(Java8Parser.TypeContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#type}. + * @param ctx the parse tree + */ + void exitType(Java8Parser.TypeContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#primitiveType}. + * @param ctx the parse tree + */ + void enterPrimitiveType(Java8Parser.PrimitiveTypeContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#primitiveType}. + * @param ctx the parse tree + */ + void exitPrimitiveType(Java8Parser.PrimitiveTypeContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#numericType}. + * @param ctx the parse tree + */ + void enterNumericType(Java8Parser.NumericTypeContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#numericType}. + * @param ctx the parse tree + */ + void exitNumericType(Java8Parser.NumericTypeContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#integralType}. + * @param ctx the parse tree + */ + void enterIntegralType(Java8Parser.IntegralTypeContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#integralType}. + * @param ctx the parse tree + */ + void exitIntegralType(Java8Parser.IntegralTypeContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#floatingPointType}. + * @param ctx the parse tree + */ + void enterFloatingPointType(Java8Parser.FloatingPointTypeContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#floatingPointType}. + * @param ctx the parse tree + */ + void exitFloatingPointType(Java8Parser.FloatingPointTypeContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#referenceType}. + * @param ctx the parse tree + */ + void enterReferenceType(Java8Parser.ReferenceTypeContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#referenceType}. + * @param ctx the parse tree + */ + void exitReferenceType(Java8Parser.ReferenceTypeContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#classOrInterfaceType}. + * @param ctx the parse tree + */ + void enterClassOrInterfaceType(Java8Parser.ClassOrInterfaceTypeContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#classOrInterfaceType}. + * @param ctx the parse tree + */ + void exitClassOrInterfaceType(Java8Parser.ClassOrInterfaceTypeContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#classType}. + * @param ctx the parse tree + */ + void enterClassType(Java8Parser.ClassTypeContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#classType}. + * @param ctx the parse tree + */ + void exitClassType(Java8Parser.ClassTypeContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#classType_lf_classOrInterfaceType}. + * @param ctx the parse tree + */ + void enterClassType_lf_classOrInterfaceType(Java8Parser.ClassType_lf_classOrInterfaceTypeContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#classType_lf_classOrInterfaceType}. + * @param ctx the parse tree + */ + void exitClassType_lf_classOrInterfaceType(Java8Parser.ClassType_lf_classOrInterfaceTypeContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#classType_lfno_classOrInterfaceType}. + * @param ctx the parse tree + */ + void enterClassType_lfno_classOrInterfaceType(Java8Parser.ClassType_lfno_classOrInterfaceTypeContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#classType_lfno_classOrInterfaceType}. + * @param ctx the parse tree + */ + void exitClassType_lfno_classOrInterfaceType(Java8Parser.ClassType_lfno_classOrInterfaceTypeContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#interfaceType}. + * @param ctx the parse tree + */ + void enterInterfaceType(Java8Parser.InterfaceTypeContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#interfaceType}. + * @param ctx the parse tree + */ + void exitInterfaceType(Java8Parser.InterfaceTypeContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#interfaceType_lf_classOrInterfaceType}. + * @param ctx the parse tree + */ + void enterInterfaceType_lf_classOrInterfaceType(Java8Parser.InterfaceType_lf_classOrInterfaceTypeContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#interfaceType_lf_classOrInterfaceType}. + * @param ctx the parse tree + */ + void exitInterfaceType_lf_classOrInterfaceType(Java8Parser.InterfaceType_lf_classOrInterfaceTypeContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#interfaceType_lfno_classOrInterfaceType}. + * @param ctx the parse tree + */ + void enterInterfaceType_lfno_classOrInterfaceType(Java8Parser.InterfaceType_lfno_classOrInterfaceTypeContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#interfaceType_lfno_classOrInterfaceType}. + * @param ctx the parse tree + */ + void exitInterfaceType_lfno_classOrInterfaceType(Java8Parser.InterfaceType_lfno_classOrInterfaceTypeContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#typeVariable}. + * @param ctx the parse tree + */ + void enterTypeVariable(Java8Parser.TypeVariableContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#typeVariable}. + * @param ctx the parse tree + */ + void exitTypeVariable(Java8Parser.TypeVariableContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#arrayType}. + * @param ctx the parse tree + */ + void enterArrayType(Java8Parser.ArrayTypeContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#arrayType}. + * @param ctx the parse tree + */ + void exitArrayType(Java8Parser.ArrayTypeContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#dims}. + * @param ctx the parse tree + */ + void enterDims(Java8Parser.DimsContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#dims}. + * @param ctx the parse tree + */ + void exitDims(Java8Parser.DimsContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#typeParameter}. + * @param ctx the parse tree + */ + void enterTypeParameter(Java8Parser.TypeParameterContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#typeParameter}. + * @param ctx the parse tree + */ + void exitTypeParameter(Java8Parser.TypeParameterContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#typeParameterModifier}. + * @param ctx the parse tree + */ + void enterTypeParameterModifier(Java8Parser.TypeParameterModifierContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#typeParameterModifier}. + * @param ctx the parse tree + */ + void exitTypeParameterModifier(Java8Parser.TypeParameterModifierContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#typeBound}. + * @param ctx the parse tree + */ + void enterTypeBound(Java8Parser.TypeBoundContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#typeBound}. + * @param ctx the parse tree + */ + void exitTypeBound(Java8Parser.TypeBoundContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#additionalBound}. + * @param ctx the parse tree + */ + void enterAdditionalBound(Java8Parser.AdditionalBoundContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#additionalBound}. + * @param ctx the parse tree + */ + void exitAdditionalBound(Java8Parser.AdditionalBoundContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#typeArguments}. + * @param ctx the parse tree + */ + void enterTypeArguments(Java8Parser.TypeArgumentsContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#typeArguments}. + * @param ctx the parse tree + */ + void exitTypeArguments(Java8Parser.TypeArgumentsContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#typeArgumentList}. + * @param ctx the parse tree + */ + void enterTypeArgumentList(Java8Parser.TypeArgumentListContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#typeArgumentList}. + * @param ctx the parse tree + */ + void exitTypeArgumentList(Java8Parser.TypeArgumentListContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#typeArgument}. + * @param ctx the parse tree + */ + void enterTypeArgument(Java8Parser.TypeArgumentContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#typeArgument}. + * @param ctx the parse tree + */ + void exitTypeArgument(Java8Parser.TypeArgumentContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#wildcard}. + * @param ctx the parse tree + */ + void enterWildcard(Java8Parser.WildcardContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#wildcard}. + * @param ctx the parse tree + */ + void exitWildcard(Java8Parser.WildcardContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#wildcardBounds}. + * @param ctx the parse tree + */ + void enterWildcardBounds(Java8Parser.WildcardBoundsContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#wildcardBounds}. + * @param ctx the parse tree + */ + void exitWildcardBounds(Java8Parser.WildcardBoundsContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#packageName}. + * @param ctx the parse tree + */ + void enterPackageName(Java8Parser.PackageNameContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#packageName}. + * @param ctx the parse tree + */ + void exitPackageName(Java8Parser.PackageNameContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#typeName}. + * @param ctx the parse tree + */ + void enterTypeName(Java8Parser.TypeNameContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#typeName}. + * @param ctx the parse tree + */ + void exitTypeName(Java8Parser.TypeNameContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#packageOrTypeName}. + * @param ctx the parse tree + */ + void enterPackageOrTypeName(Java8Parser.PackageOrTypeNameContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#packageOrTypeName}. + * @param ctx the parse tree + */ + void exitPackageOrTypeName(Java8Parser.PackageOrTypeNameContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#expressionName}. + * @param ctx the parse tree + */ + void enterExpressionName(Java8Parser.ExpressionNameContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#expressionName}. + * @param ctx the parse tree + */ + void exitExpressionName(Java8Parser.ExpressionNameContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#methodName}. + * @param ctx the parse tree + */ + void enterMethodName(Java8Parser.MethodNameContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#methodName}. + * @param ctx the parse tree + */ + void exitMethodName(Java8Parser.MethodNameContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#ambiguousName}. + * @param ctx the parse tree + */ + void enterAmbiguousName(Java8Parser.AmbiguousNameContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#ambiguousName}. + * @param ctx the parse tree + */ + void exitAmbiguousName(Java8Parser.AmbiguousNameContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#compilationUnit}. + * @param ctx the parse tree + */ + void enterCompilationUnit(Java8Parser.CompilationUnitContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#compilationUnit}. + * @param ctx the parse tree + */ + void exitCompilationUnit(Java8Parser.CompilationUnitContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#packageDeclaration}. + * @param ctx the parse tree + */ + void enterPackageDeclaration(Java8Parser.PackageDeclarationContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#packageDeclaration}. + * @param ctx the parse tree + */ + void exitPackageDeclaration(Java8Parser.PackageDeclarationContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#packageModifier}. + * @param ctx the parse tree + */ + void enterPackageModifier(Java8Parser.PackageModifierContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#packageModifier}. + * @param ctx the parse tree + */ + void exitPackageModifier(Java8Parser.PackageModifierContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#importDeclaration}. + * @param ctx the parse tree + */ + void enterImportDeclaration(Java8Parser.ImportDeclarationContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#importDeclaration}. + * @param ctx the parse tree + */ + void exitImportDeclaration(Java8Parser.ImportDeclarationContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#singleTypeImportDeclaration}. + * @param ctx the parse tree + */ + void enterSingleTypeImportDeclaration(Java8Parser.SingleTypeImportDeclarationContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#singleTypeImportDeclaration}. + * @param ctx the parse tree + */ + void exitSingleTypeImportDeclaration(Java8Parser.SingleTypeImportDeclarationContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#typeImportOnDemandDeclaration}. + * @param ctx the parse tree + */ + void enterTypeImportOnDemandDeclaration(Java8Parser.TypeImportOnDemandDeclarationContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#typeImportOnDemandDeclaration}. + * @param ctx the parse tree + */ + void exitTypeImportOnDemandDeclaration(Java8Parser.TypeImportOnDemandDeclarationContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#singleStaticImportDeclaration}. + * @param ctx the parse tree + */ + void enterSingleStaticImportDeclaration(Java8Parser.SingleStaticImportDeclarationContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#singleStaticImportDeclaration}. + * @param ctx the parse tree + */ + void exitSingleStaticImportDeclaration(Java8Parser.SingleStaticImportDeclarationContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#staticImportOnDemandDeclaration}. + * @param ctx the parse tree + */ + void enterStaticImportOnDemandDeclaration(Java8Parser.StaticImportOnDemandDeclarationContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#staticImportOnDemandDeclaration}. + * @param ctx the parse tree + */ + void exitStaticImportOnDemandDeclaration(Java8Parser.StaticImportOnDemandDeclarationContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#typeDeclaration}. + * @param ctx the parse tree + */ + void enterTypeDeclaration(Java8Parser.TypeDeclarationContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#typeDeclaration}. + * @param ctx the parse tree + */ + void exitTypeDeclaration(Java8Parser.TypeDeclarationContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#classDeclaration}. + * @param ctx the parse tree + */ + void enterClassDeclaration(Java8Parser.ClassDeclarationContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#classDeclaration}. + * @param ctx the parse tree + */ + void exitClassDeclaration(Java8Parser.ClassDeclarationContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#normalClassDeclaration}. + * @param ctx the parse tree + */ + void enterNormalClassDeclaration(Java8Parser.NormalClassDeclarationContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#normalClassDeclaration}. + * @param ctx the parse tree + */ + void exitNormalClassDeclaration(Java8Parser.NormalClassDeclarationContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#classModifier}. + * @param ctx the parse tree + */ + void enterClassModifier(Java8Parser.ClassModifierContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#classModifier}. + * @param ctx the parse tree + */ + void exitClassModifier(Java8Parser.ClassModifierContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#typeParameters}. + * @param ctx the parse tree + */ + void enterTypeParameters(Java8Parser.TypeParametersContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#typeParameters}. + * @param ctx the parse tree + */ + void exitTypeParameters(Java8Parser.TypeParametersContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#typeParameterList}. + * @param ctx the parse tree + */ + void enterTypeParameterList(Java8Parser.TypeParameterListContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#typeParameterList}. + * @param ctx the parse tree + */ + void exitTypeParameterList(Java8Parser.TypeParameterListContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#superclass}. + * @param ctx the parse tree + */ + void enterSuperclass(Java8Parser.SuperclassContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#superclass}. + * @param ctx the parse tree + */ + void exitSuperclass(Java8Parser.SuperclassContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#superinterfaces}. + * @param ctx the parse tree + */ + void enterSuperinterfaces(Java8Parser.SuperinterfacesContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#superinterfaces}. + * @param ctx the parse tree + */ + void exitSuperinterfaces(Java8Parser.SuperinterfacesContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#interfaceTypeList}. + * @param ctx the parse tree + */ + void enterInterfaceTypeList(Java8Parser.InterfaceTypeListContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#interfaceTypeList}. + * @param ctx the parse tree + */ + void exitInterfaceTypeList(Java8Parser.InterfaceTypeListContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#classBody}. + * @param ctx the parse tree + */ + void enterClassBody(Java8Parser.ClassBodyContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#classBody}. + * @param ctx the parse tree + */ + void exitClassBody(Java8Parser.ClassBodyContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#classBodyDeclaration}. + * @param ctx the parse tree + */ + void enterClassBodyDeclaration(Java8Parser.ClassBodyDeclarationContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#classBodyDeclaration}. + * @param ctx the parse tree + */ + void exitClassBodyDeclaration(Java8Parser.ClassBodyDeclarationContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#classMemberDeclaration}. + * @param ctx the parse tree + */ + void enterClassMemberDeclaration(Java8Parser.ClassMemberDeclarationContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#classMemberDeclaration}. + * @param ctx the parse tree + */ + void exitClassMemberDeclaration(Java8Parser.ClassMemberDeclarationContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#fieldDeclaration}. + * @param ctx the parse tree + */ + void enterFieldDeclaration(Java8Parser.FieldDeclarationContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#fieldDeclaration}. + * @param ctx the parse tree + */ + void exitFieldDeclaration(Java8Parser.FieldDeclarationContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#fieldModifier}. + * @param ctx the parse tree + */ + void enterFieldModifier(Java8Parser.FieldModifierContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#fieldModifier}. + * @param ctx the parse tree + */ + void exitFieldModifier(Java8Parser.FieldModifierContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#variableDeclaratorList}. + * @param ctx the parse tree + */ + void enterVariableDeclaratorList(Java8Parser.VariableDeclaratorListContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#variableDeclaratorList}. + * @param ctx the parse tree + */ + void exitVariableDeclaratorList(Java8Parser.VariableDeclaratorListContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#variableDeclarator}. + * @param ctx the parse tree + */ + void enterVariableDeclarator(Java8Parser.VariableDeclaratorContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#variableDeclarator}. + * @param ctx the parse tree + */ + void exitVariableDeclarator(Java8Parser.VariableDeclaratorContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#variableDeclaratorId}. + * @param ctx the parse tree + */ + void enterVariableDeclaratorId(Java8Parser.VariableDeclaratorIdContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#variableDeclaratorId}. + * @param ctx the parse tree + */ + void exitVariableDeclaratorId(Java8Parser.VariableDeclaratorIdContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#variableInitializer}. + * @param ctx the parse tree + */ + void enterVariableInitializer(Java8Parser.VariableInitializerContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#variableInitializer}. + * @param ctx the parse tree + */ + void exitVariableInitializer(Java8Parser.VariableInitializerContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#unannType}. + * @param ctx the parse tree + */ + void enterUnannType(Java8Parser.UnannTypeContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#unannType}. + * @param ctx the parse tree + */ + void exitUnannType(Java8Parser.UnannTypeContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#unannPrimitiveType}. + * @param ctx the parse tree + */ + void enterUnannPrimitiveType(Java8Parser.UnannPrimitiveTypeContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#unannPrimitiveType}. + * @param ctx the parse tree + */ + void exitUnannPrimitiveType(Java8Parser.UnannPrimitiveTypeContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#unannReferenceType}. + * @param ctx the parse tree + */ + void enterUnannReferenceType(Java8Parser.UnannReferenceTypeContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#unannReferenceType}. + * @param ctx the parse tree + */ + void exitUnannReferenceType(Java8Parser.UnannReferenceTypeContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#unannClassOrInterfaceType}. + * @param ctx the parse tree + */ + void enterUnannClassOrInterfaceType(Java8Parser.UnannClassOrInterfaceTypeContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#unannClassOrInterfaceType}. + * @param ctx the parse tree + */ + void exitUnannClassOrInterfaceType(Java8Parser.UnannClassOrInterfaceTypeContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#unannClassType}. + * @param ctx the parse tree + */ + void enterUnannClassType(Java8Parser.UnannClassTypeContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#unannClassType}. + * @param ctx the parse tree + */ + void exitUnannClassType(Java8Parser.UnannClassTypeContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#unannClassType_lf_unannClassOrInterfaceType}. + * @param ctx the parse tree + */ + void enterUnannClassType_lf_unannClassOrInterfaceType(Java8Parser.UnannClassType_lf_unannClassOrInterfaceTypeContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#unannClassType_lf_unannClassOrInterfaceType}. + * @param ctx the parse tree + */ + void exitUnannClassType_lf_unannClassOrInterfaceType(Java8Parser.UnannClassType_lf_unannClassOrInterfaceTypeContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#unannClassType_lfno_unannClassOrInterfaceType}. + * @param ctx the parse tree + */ + void enterUnannClassType_lfno_unannClassOrInterfaceType(Java8Parser.UnannClassType_lfno_unannClassOrInterfaceTypeContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#unannClassType_lfno_unannClassOrInterfaceType}. + * @param ctx the parse tree + */ + void exitUnannClassType_lfno_unannClassOrInterfaceType(Java8Parser.UnannClassType_lfno_unannClassOrInterfaceTypeContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#unannInterfaceType}. + * @param ctx the parse tree + */ + void enterUnannInterfaceType(Java8Parser.UnannInterfaceTypeContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#unannInterfaceType}. + * @param ctx the parse tree + */ + void exitUnannInterfaceType(Java8Parser.UnannInterfaceTypeContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#unannInterfaceType_lf_unannClassOrInterfaceType}. + * @param ctx the parse tree + */ + void enterUnannInterfaceType_lf_unannClassOrInterfaceType(Java8Parser.UnannInterfaceType_lf_unannClassOrInterfaceTypeContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#unannInterfaceType_lf_unannClassOrInterfaceType}. + * @param ctx the parse tree + */ + void exitUnannInterfaceType_lf_unannClassOrInterfaceType(Java8Parser.UnannInterfaceType_lf_unannClassOrInterfaceTypeContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#unannInterfaceType_lfno_unannClassOrInterfaceType}. + * @param ctx the parse tree + */ + void enterUnannInterfaceType_lfno_unannClassOrInterfaceType(Java8Parser.UnannInterfaceType_lfno_unannClassOrInterfaceTypeContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#unannInterfaceType_lfno_unannClassOrInterfaceType}. + * @param ctx the parse tree + */ + void exitUnannInterfaceType_lfno_unannClassOrInterfaceType(Java8Parser.UnannInterfaceType_lfno_unannClassOrInterfaceTypeContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#unannTypeVariable}. + * @param ctx the parse tree + */ + void enterUnannTypeVariable(Java8Parser.UnannTypeVariableContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#unannTypeVariable}. + * @param ctx the parse tree + */ + void exitUnannTypeVariable(Java8Parser.UnannTypeVariableContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#unannArrayType}. + * @param ctx the parse tree + */ + void enterUnannArrayType(Java8Parser.UnannArrayTypeContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#unannArrayType}. + * @param ctx the parse tree + */ + void exitUnannArrayType(Java8Parser.UnannArrayTypeContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#methodDeclaration}. + * @param ctx the parse tree + */ + void enterMethodDeclaration(Java8Parser.MethodDeclarationContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#methodDeclaration}. + * @param ctx the parse tree + */ + void exitMethodDeclaration(Java8Parser.MethodDeclarationContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#methodModifier}. + * @param ctx the parse tree + */ + void enterMethodModifier(Java8Parser.MethodModifierContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#methodModifier}. + * @param ctx the parse tree + */ + void exitMethodModifier(Java8Parser.MethodModifierContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#methodHeader}. + * @param ctx the parse tree + */ + void enterMethodHeader(Java8Parser.MethodHeaderContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#methodHeader}. + * @param ctx the parse tree + */ + void exitMethodHeader(Java8Parser.MethodHeaderContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#result}. + * @param ctx the parse tree + */ + void enterResult(Java8Parser.ResultContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#result}. + * @param ctx the parse tree + */ + void exitResult(Java8Parser.ResultContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#methodDeclarator}. + * @param ctx the parse tree + */ + void enterMethodDeclarator(Java8Parser.MethodDeclaratorContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#methodDeclarator}. + * @param ctx the parse tree + */ + void exitMethodDeclarator(Java8Parser.MethodDeclaratorContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#formalParameterList}. + * @param ctx the parse tree + */ + void enterFormalParameterList(Java8Parser.FormalParameterListContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#formalParameterList}. + * @param ctx the parse tree + */ + void exitFormalParameterList(Java8Parser.FormalParameterListContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#formalParameters}. + * @param ctx the parse tree + */ + void enterFormalParameters(Java8Parser.FormalParametersContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#formalParameters}. + * @param ctx the parse tree + */ + void exitFormalParameters(Java8Parser.FormalParametersContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#formalParameter}. + * @param ctx the parse tree + */ + void enterFormalParameter(Java8Parser.FormalParameterContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#formalParameter}. + * @param ctx the parse tree + */ + void exitFormalParameter(Java8Parser.FormalParameterContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#variableModifier}. + * @param ctx the parse tree + */ + void enterVariableModifier(Java8Parser.VariableModifierContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#variableModifier}. + * @param ctx the parse tree + */ + void exitVariableModifier(Java8Parser.VariableModifierContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#lastFormalParameter}. + * @param ctx the parse tree + */ + void enterLastFormalParameter(Java8Parser.LastFormalParameterContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#lastFormalParameter}. + * @param ctx the parse tree + */ + void exitLastFormalParameter(Java8Parser.LastFormalParameterContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#receiverParameter}. + * @param ctx the parse tree + */ + void enterReceiverParameter(Java8Parser.ReceiverParameterContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#receiverParameter}. + * @param ctx the parse tree + */ + void exitReceiverParameter(Java8Parser.ReceiverParameterContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#throws_}. + * @param ctx the parse tree + */ + void enterThrows_(Java8Parser.Throws_Context ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#throws_}. + * @param ctx the parse tree + */ + void exitThrows_(Java8Parser.Throws_Context ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#exceptionTypeList}. + * @param ctx the parse tree + */ + void enterExceptionTypeList(Java8Parser.ExceptionTypeListContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#exceptionTypeList}. + * @param ctx the parse tree + */ + void exitExceptionTypeList(Java8Parser.ExceptionTypeListContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#exceptionType}. + * @param ctx the parse tree + */ + void enterExceptionType(Java8Parser.ExceptionTypeContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#exceptionType}. + * @param ctx the parse tree + */ + void exitExceptionType(Java8Parser.ExceptionTypeContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#methodBody}. + * @param ctx the parse tree + */ + void enterMethodBody(Java8Parser.MethodBodyContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#methodBody}. + * @param ctx the parse tree + */ + void exitMethodBody(Java8Parser.MethodBodyContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#instanceInitializer}. + * @param ctx the parse tree + */ + void enterInstanceInitializer(Java8Parser.InstanceInitializerContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#instanceInitializer}. + * @param ctx the parse tree + */ + void exitInstanceInitializer(Java8Parser.InstanceInitializerContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#staticInitializer}. + * @param ctx the parse tree + */ + void enterStaticInitializer(Java8Parser.StaticInitializerContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#staticInitializer}. + * @param ctx the parse tree + */ + void exitStaticInitializer(Java8Parser.StaticInitializerContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#constructorDeclaration}. + * @param ctx the parse tree + */ + void enterConstructorDeclaration(Java8Parser.ConstructorDeclarationContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#constructorDeclaration}. + * @param ctx the parse tree + */ + void exitConstructorDeclaration(Java8Parser.ConstructorDeclarationContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#constructorModifier}. + * @param ctx the parse tree + */ + void enterConstructorModifier(Java8Parser.ConstructorModifierContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#constructorModifier}. + * @param ctx the parse tree + */ + void exitConstructorModifier(Java8Parser.ConstructorModifierContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#constructorDeclarator}. + * @param ctx the parse tree + */ + void enterConstructorDeclarator(Java8Parser.ConstructorDeclaratorContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#constructorDeclarator}. + * @param ctx the parse tree + */ + void exitConstructorDeclarator(Java8Parser.ConstructorDeclaratorContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#simpleTypeName}. + * @param ctx the parse tree + */ + void enterSimpleTypeName(Java8Parser.SimpleTypeNameContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#simpleTypeName}. + * @param ctx the parse tree + */ + void exitSimpleTypeName(Java8Parser.SimpleTypeNameContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#constructorBody}. + * @param ctx the parse tree + */ + void enterConstructorBody(Java8Parser.ConstructorBodyContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#constructorBody}. + * @param ctx the parse tree + */ + void exitConstructorBody(Java8Parser.ConstructorBodyContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#explicitConstructorInvocation}. + * @param ctx the parse tree + */ + void enterExplicitConstructorInvocation(Java8Parser.ExplicitConstructorInvocationContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#explicitConstructorInvocation}. + * @param ctx the parse tree + */ + void exitExplicitConstructorInvocation(Java8Parser.ExplicitConstructorInvocationContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#enumDeclaration}. + * @param ctx the parse tree + */ + void enterEnumDeclaration(Java8Parser.EnumDeclarationContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#enumDeclaration}. + * @param ctx the parse tree + */ + void exitEnumDeclaration(Java8Parser.EnumDeclarationContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#enumBody}. + * @param ctx the parse tree + */ + void enterEnumBody(Java8Parser.EnumBodyContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#enumBody}. + * @param ctx the parse tree + */ + void exitEnumBody(Java8Parser.EnumBodyContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#enumConstantList}. + * @param ctx the parse tree + */ + void enterEnumConstantList(Java8Parser.EnumConstantListContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#enumConstantList}. + * @param ctx the parse tree + */ + void exitEnumConstantList(Java8Parser.EnumConstantListContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#enumConstant}. + * @param ctx the parse tree + */ + void enterEnumConstant(Java8Parser.EnumConstantContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#enumConstant}. + * @param ctx the parse tree + */ + void exitEnumConstant(Java8Parser.EnumConstantContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#enumConstantModifier}. + * @param ctx the parse tree + */ + void enterEnumConstantModifier(Java8Parser.EnumConstantModifierContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#enumConstantModifier}. + * @param ctx the parse tree + */ + void exitEnumConstantModifier(Java8Parser.EnumConstantModifierContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#enumBodyDeclarations}. + * @param ctx the parse tree + */ + void enterEnumBodyDeclarations(Java8Parser.EnumBodyDeclarationsContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#enumBodyDeclarations}. + * @param ctx the parse tree + */ + void exitEnumBodyDeclarations(Java8Parser.EnumBodyDeclarationsContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#interfaceDeclaration}. + * @param ctx the parse tree + */ + void enterInterfaceDeclaration(Java8Parser.InterfaceDeclarationContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#interfaceDeclaration}. + * @param ctx the parse tree + */ + void exitInterfaceDeclaration(Java8Parser.InterfaceDeclarationContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#normalInterfaceDeclaration}. + * @param ctx the parse tree + */ + void enterNormalInterfaceDeclaration(Java8Parser.NormalInterfaceDeclarationContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#normalInterfaceDeclaration}. + * @param ctx the parse tree + */ + void exitNormalInterfaceDeclaration(Java8Parser.NormalInterfaceDeclarationContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#interfaceModifier}. + * @param ctx the parse tree + */ + void enterInterfaceModifier(Java8Parser.InterfaceModifierContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#interfaceModifier}. + * @param ctx the parse tree + */ + void exitInterfaceModifier(Java8Parser.InterfaceModifierContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#extendsInterfaces}. + * @param ctx the parse tree + */ + void enterExtendsInterfaces(Java8Parser.ExtendsInterfacesContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#extendsInterfaces}. + * @param ctx the parse tree + */ + void exitExtendsInterfaces(Java8Parser.ExtendsInterfacesContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#interfaceBody}. + * @param ctx the parse tree + */ + void enterInterfaceBody(Java8Parser.InterfaceBodyContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#interfaceBody}. + * @param ctx the parse tree + */ + void exitInterfaceBody(Java8Parser.InterfaceBodyContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#interfaceMemberDeclaration}. + * @param ctx the parse tree + */ + void enterInterfaceMemberDeclaration(Java8Parser.InterfaceMemberDeclarationContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#interfaceMemberDeclaration}. + * @param ctx the parse tree + */ + void exitInterfaceMemberDeclaration(Java8Parser.InterfaceMemberDeclarationContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#constantDeclaration}. + * @param ctx the parse tree + */ + void enterConstantDeclaration(Java8Parser.ConstantDeclarationContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#constantDeclaration}. + * @param ctx the parse tree + */ + void exitConstantDeclaration(Java8Parser.ConstantDeclarationContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#constantModifier}. + * @param ctx the parse tree + */ + void enterConstantModifier(Java8Parser.ConstantModifierContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#constantModifier}. + * @param ctx the parse tree + */ + void exitConstantModifier(Java8Parser.ConstantModifierContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#interfaceMethodDeclaration}. + * @param ctx the parse tree + */ + void enterInterfaceMethodDeclaration(Java8Parser.InterfaceMethodDeclarationContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#interfaceMethodDeclaration}. + * @param ctx the parse tree + */ + void exitInterfaceMethodDeclaration(Java8Parser.InterfaceMethodDeclarationContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#interfaceMethodModifier}. + * @param ctx the parse tree + */ + void enterInterfaceMethodModifier(Java8Parser.InterfaceMethodModifierContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#interfaceMethodModifier}. + * @param ctx the parse tree + */ + void exitInterfaceMethodModifier(Java8Parser.InterfaceMethodModifierContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#annotationTypeDeclaration}. + * @param ctx the parse tree + */ + void enterAnnotationTypeDeclaration(Java8Parser.AnnotationTypeDeclarationContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#annotationTypeDeclaration}. + * @param ctx the parse tree + */ + void exitAnnotationTypeDeclaration(Java8Parser.AnnotationTypeDeclarationContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#annotationTypeBody}. + * @param ctx the parse tree + */ + void enterAnnotationTypeBody(Java8Parser.AnnotationTypeBodyContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#annotationTypeBody}. + * @param ctx the parse tree + */ + void exitAnnotationTypeBody(Java8Parser.AnnotationTypeBodyContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#annotationTypeMemberDeclaration}. + * @param ctx the parse tree + */ + void enterAnnotationTypeMemberDeclaration(Java8Parser.AnnotationTypeMemberDeclarationContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#annotationTypeMemberDeclaration}. + * @param ctx the parse tree + */ + void exitAnnotationTypeMemberDeclaration(Java8Parser.AnnotationTypeMemberDeclarationContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#annotationTypeElementDeclaration}. + * @param ctx the parse tree + */ + void enterAnnotationTypeElementDeclaration(Java8Parser.AnnotationTypeElementDeclarationContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#annotationTypeElementDeclaration}. + * @param ctx the parse tree + */ + void exitAnnotationTypeElementDeclaration(Java8Parser.AnnotationTypeElementDeclarationContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#annotationTypeElementModifier}. + * @param ctx the parse tree + */ + void enterAnnotationTypeElementModifier(Java8Parser.AnnotationTypeElementModifierContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#annotationTypeElementModifier}. + * @param ctx the parse tree + */ + void exitAnnotationTypeElementModifier(Java8Parser.AnnotationTypeElementModifierContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#defaultValue}. + * @param ctx the parse tree + */ + void enterDefaultValue(Java8Parser.DefaultValueContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#defaultValue}. + * @param ctx the parse tree + */ + void exitDefaultValue(Java8Parser.DefaultValueContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#annotation}. + * @param ctx the parse tree + */ + void enterAnnotation(Java8Parser.AnnotationContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#annotation}. + * @param ctx the parse tree + */ + void exitAnnotation(Java8Parser.AnnotationContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#normalAnnotation}. + * @param ctx the parse tree + */ + void enterNormalAnnotation(Java8Parser.NormalAnnotationContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#normalAnnotation}. + * @param ctx the parse tree + */ + void exitNormalAnnotation(Java8Parser.NormalAnnotationContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#elementValuePairList}. + * @param ctx the parse tree + */ + void enterElementValuePairList(Java8Parser.ElementValuePairListContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#elementValuePairList}. + * @param ctx the parse tree + */ + void exitElementValuePairList(Java8Parser.ElementValuePairListContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#elementValuePair}. + * @param ctx the parse tree + */ + void enterElementValuePair(Java8Parser.ElementValuePairContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#elementValuePair}. + * @param ctx the parse tree + */ + void exitElementValuePair(Java8Parser.ElementValuePairContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#elementValue}. + * @param ctx the parse tree + */ + void enterElementValue(Java8Parser.ElementValueContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#elementValue}. + * @param ctx the parse tree + */ + void exitElementValue(Java8Parser.ElementValueContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#elementValueArrayInitializer}. + * @param ctx the parse tree + */ + void enterElementValueArrayInitializer(Java8Parser.ElementValueArrayInitializerContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#elementValueArrayInitializer}. + * @param ctx the parse tree + */ + void exitElementValueArrayInitializer(Java8Parser.ElementValueArrayInitializerContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#elementValueList}. + * @param ctx the parse tree + */ + void enterElementValueList(Java8Parser.ElementValueListContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#elementValueList}. + * @param ctx the parse tree + */ + void exitElementValueList(Java8Parser.ElementValueListContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#markerAnnotation}. + * @param ctx the parse tree + */ + void enterMarkerAnnotation(Java8Parser.MarkerAnnotationContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#markerAnnotation}. + * @param ctx the parse tree + */ + void exitMarkerAnnotation(Java8Parser.MarkerAnnotationContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#singleElementAnnotation}. + * @param ctx the parse tree + */ + void enterSingleElementAnnotation(Java8Parser.SingleElementAnnotationContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#singleElementAnnotation}. + * @param ctx the parse tree + */ + void exitSingleElementAnnotation(Java8Parser.SingleElementAnnotationContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#arrayInitializer}. + * @param ctx the parse tree + */ + void enterArrayInitializer(Java8Parser.ArrayInitializerContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#arrayInitializer}. + * @param ctx the parse tree + */ + void exitArrayInitializer(Java8Parser.ArrayInitializerContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#variableInitializerList}. + * @param ctx the parse tree + */ + void enterVariableInitializerList(Java8Parser.VariableInitializerListContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#variableInitializerList}. + * @param ctx the parse tree + */ + void exitVariableInitializerList(Java8Parser.VariableInitializerListContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#block}. + * @param ctx the parse tree + */ + void enterBlock(Java8Parser.BlockContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#block}. + * @param ctx the parse tree + */ + void exitBlock(Java8Parser.BlockContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#blockStatements}. + * @param ctx the parse tree + */ + void enterBlockStatements(Java8Parser.BlockStatementsContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#blockStatements}. + * @param ctx the parse tree + */ + void exitBlockStatements(Java8Parser.BlockStatementsContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#blockStatement}. + * @param ctx the parse tree + */ + void enterBlockStatement(Java8Parser.BlockStatementContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#blockStatement}. + * @param ctx the parse tree + */ + void exitBlockStatement(Java8Parser.BlockStatementContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#localVariableDeclarationStatement}. + * @param ctx the parse tree + */ + void enterLocalVariableDeclarationStatement(Java8Parser.LocalVariableDeclarationStatementContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#localVariableDeclarationStatement}. + * @param ctx the parse tree + */ + void exitLocalVariableDeclarationStatement(Java8Parser.LocalVariableDeclarationStatementContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#localVariableDeclaration}. + * @param ctx the parse tree + */ + void enterLocalVariableDeclaration(Java8Parser.LocalVariableDeclarationContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#localVariableDeclaration}. + * @param ctx the parse tree + */ + void exitLocalVariableDeclaration(Java8Parser.LocalVariableDeclarationContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#statement}. + * @param ctx the parse tree + */ + void enterStatement(Java8Parser.StatementContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#statement}. + * @param ctx the parse tree + */ + void exitStatement(Java8Parser.StatementContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#statementNoShortIf}. + * @param ctx the parse tree + */ + void enterStatementNoShortIf(Java8Parser.StatementNoShortIfContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#statementNoShortIf}. + * @param ctx the parse tree + */ + void exitStatementNoShortIf(Java8Parser.StatementNoShortIfContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#statementWithoutTrailingSubstatement}. + * @param ctx the parse tree + */ + void enterStatementWithoutTrailingSubstatement(Java8Parser.StatementWithoutTrailingSubstatementContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#statementWithoutTrailingSubstatement}. + * @param ctx the parse tree + */ + void exitStatementWithoutTrailingSubstatement(Java8Parser.StatementWithoutTrailingSubstatementContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#emptyStatement}. + * @param ctx the parse tree + */ + void enterEmptyStatement(Java8Parser.EmptyStatementContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#emptyStatement}. + * @param ctx the parse tree + */ + void exitEmptyStatement(Java8Parser.EmptyStatementContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#labeledStatement}. + * @param ctx the parse tree + */ + void enterLabeledStatement(Java8Parser.LabeledStatementContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#labeledStatement}. + * @param ctx the parse tree + */ + void exitLabeledStatement(Java8Parser.LabeledStatementContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#labeledStatementNoShortIf}. + * @param ctx the parse tree + */ + void enterLabeledStatementNoShortIf(Java8Parser.LabeledStatementNoShortIfContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#labeledStatementNoShortIf}. + * @param ctx the parse tree + */ + void exitLabeledStatementNoShortIf(Java8Parser.LabeledStatementNoShortIfContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#expressionStatement}. + * @param ctx the parse tree + */ + void enterExpressionStatement(Java8Parser.ExpressionStatementContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#expressionStatement}. + * @param ctx the parse tree + */ + void exitExpressionStatement(Java8Parser.ExpressionStatementContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#statementExpression}. + * @param ctx the parse tree + */ + void enterStatementExpression(Java8Parser.StatementExpressionContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#statementExpression}. + * @param ctx the parse tree + */ + void exitStatementExpression(Java8Parser.StatementExpressionContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#ifThenStatement}. + * @param ctx the parse tree + */ + void enterIfThenStatement(Java8Parser.IfThenStatementContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#ifThenStatement}. + * @param ctx the parse tree + */ + void exitIfThenStatement(Java8Parser.IfThenStatementContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#ifThenElseStatement}. + * @param ctx the parse tree + */ + void enterIfThenElseStatement(Java8Parser.IfThenElseStatementContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#ifThenElseStatement}. + * @param ctx the parse tree + */ + void exitIfThenElseStatement(Java8Parser.IfThenElseStatementContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#ifThenElseStatementNoShortIf}. + * @param ctx the parse tree + */ + void enterIfThenElseStatementNoShortIf(Java8Parser.IfThenElseStatementNoShortIfContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#ifThenElseStatementNoShortIf}. + * @param ctx the parse tree + */ + void exitIfThenElseStatementNoShortIf(Java8Parser.IfThenElseStatementNoShortIfContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#assertStatement}. + * @param ctx the parse tree + */ + void enterAssertStatement(Java8Parser.AssertStatementContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#assertStatement}. + * @param ctx the parse tree + */ + void exitAssertStatement(Java8Parser.AssertStatementContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#switchStatement}. + * @param ctx the parse tree + */ + void enterSwitchStatement(Java8Parser.SwitchStatementContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#switchStatement}. + * @param ctx the parse tree + */ + void exitSwitchStatement(Java8Parser.SwitchStatementContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#switchBlock}. + * @param ctx the parse tree + */ + void enterSwitchBlock(Java8Parser.SwitchBlockContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#switchBlock}. + * @param ctx the parse tree + */ + void exitSwitchBlock(Java8Parser.SwitchBlockContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#switchBlockStatementGroup}. + * @param ctx the parse tree + */ + void enterSwitchBlockStatementGroup(Java8Parser.SwitchBlockStatementGroupContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#switchBlockStatementGroup}. + * @param ctx the parse tree + */ + void exitSwitchBlockStatementGroup(Java8Parser.SwitchBlockStatementGroupContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#switchLabels}. + * @param ctx the parse tree + */ + void enterSwitchLabels(Java8Parser.SwitchLabelsContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#switchLabels}. + * @param ctx the parse tree + */ + void exitSwitchLabels(Java8Parser.SwitchLabelsContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#switchLabel}. + * @param ctx the parse tree + */ + void enterSwitchLabel(Java8Parser.SwitchLabelContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#switchLabel}. + * @param ctx the parse tree + */ + void exitSwitchLabel(Java8Parser.SwitchLabelContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#enumConstantName}. + * @param ctx the parse tree + */ + void enterEnumConstantName(Java8Parser.EnumConstantNameContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#enumConstantName}. + * @param ctx the parse tree + */ + void exitEnumConstantName(Java8Parser.EnumConstantNameContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#whileStatement}. + * @param ctx the parse tree + */ + void enterWhileStatement(Java8Parser.WhileStatementContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#whileStatement}. + * @param ctx the parse tree + */ + void exitWhileStatement(Java8Parser.WhileStatementContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#whileStatementNoShortIf}. + * @param ctx the parse tree + */ + void enterWhileStatementNoShortIf(Java8Parser.WhileStatementNoShortIfContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#whileStatementNoShortIf}. + * @param ctx the parse tree + */ + void exitWhileStatementNoShortIf(Java8Parser.WhileStatementNoShortIfContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#doStatement}. + * @param ctx the parse tree + */ + void enterDoStatement(Java8Parser.DoStatementContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#doStatement}. + * @param ctx the parse tree + */ + void exitDoStatement(Java8Parser.DoStatementContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#forStatement}. + * @param ctx the parse tree + */ + void enterForStatement(Java8Parser.ForStatementContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#forStatement}. + * @param ctx the parse tree + */ + void exitForStatement(Java8Parser.ForStatementContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#forStatementNoShortIf}. + * @param ctx the parse tree + */ + void enterForStatementNoShortIf(Java8Parser.ForStatementNoShortIfContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#forStatementNoShortIf}. + * @param ctx the parse tree + */ + void exitForStatementNoShortIf(Java8Parser.ForStatementNoShortIfContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#basicForStatement}. + * @param ctx the parse tree + */ + void enterBasicForStatement(Java8Parser.BasicForStatementContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#basicForStatement}. + * @param ctx the parse tree + */ + void exitBasicForStatement(Java8Parser.BasicForStatementContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#basicForStatementNoShortIf}. + * @param ctx the parse tree + */ + void enterBasicForStatementNoShortIf(Java8Parser.BasicForStatementNoShortIfContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#basicForStatementNoShortIf}. + * @param ctx the parse tree + */ + void exitBasicForStatementNoShortIf(Java8Parser.BasicForStatementNoShortIfContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#forInit}. + * @param ctx the parse tree + */ + void enterForInit(Java8Parser.ForInitContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#forInit}. + * @param ctx the parse tree + */ + void exitForInit(Java8Parser.ForInitContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#forUpdate}. + * @param ctx the parse tree + */ + void enterForUpdate(Java8Parser.ForUpdateContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#forUpdate}. + * @param ctx the parse tree + */ + void exitForUpdate(Java8Parser.ForUpdateContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#statementExpressionList}. + * @param ctx the parse tree + */ + void enterStatementExpressionList(Java8Parser.StatementExpressionListContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#statementExpressionList}. + * @param ctx the parse tree + */ + void exitStatementExpressionList(Java8Parser.StatementExpressionListContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#enhancedForStatement}. + * @param ctx the parse tree + */ + void enterEnhancedForStatement(Java8Parser.EnhancedForStatementContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#enhancedForStatement}. + * @param ctx the parse tree + */ + void exitEnhancedForStatement(Java8Parser.EnhancedForStatementContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#enhancedForStatementNoShortIf}. + * @param ctx the parse tree + */ + void enterEnhancedForStatementNoShortIf(Java8Parser.EnhancedForStatementNoShortIfContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#enhancedForStatementNoShortIf}. + * @param ctx the parse tree + */ + void exitEnhancedForStatementNoShortIf(Java8Parser.EnhancedForStatementNoShortIfContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#breakStatement}. + * @param ctx the parse tree + */ + void enterBreakStatement(Java8Parser.BreakStatementContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#breakStatement}. + * @param ctx the parse tree + */ + void exitBreakStatement(Java8Parser.BreakStatementContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#continueStatement}. + * @param ctx the parse tree + */ + void enterContinueStatement(Java8Parser.ContinueStatementContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#continueStatement}. + * @param ctx the parse tree + */ + void exitContinueStatement(Java8Parser.ContinueStatementContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#returnStatement}. + * @param ctx the parse tree + */ + void enterReturnStatement(Java8Parser.ReturnStatementContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#returnStatement}. + * @param ctx the parse tree + */ + void exitReturnStatement(Java8Parser.ReturnStatementContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#throwStatement}. + * @param ctx the parse tree + */ + void enterThrowStatement(Java8Parser.ThrowStatementContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#throwStatement}. + * @param ctx the parse tree + */ + void exitThrowStatement(Java8Parser.ThrowStatementContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#synchronizedStatement}. + * @param ctx the parse tree + */ + void enterSynchronizedStatement(Java8Parser.SynchronizedStatementContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#synchronizedStatement}. + * @param ctx the parse tree + */ + void exitSynchronizedStatement(Java8Parser.SynchronizedStatementContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#tryStatement}. + * @param ctx the parse tree + */ + void enterTryStatement(Java8Parser.TryStatementContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#tryStatement}. + * @param ctx the parse tree + */ + void exitTryStatement(Java8Parser.TryStatementContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#catches}. + * @param ctx the parse tree + */ + void enterCatches(Java8Parser.CatchesContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#catches}. + * @param ctx the parse tree + */ + void exitCatches(Java8Parser.CatchesContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#catchClause}. + * @param ctx the parse tree + */ + void enterCatchClause(Java8Parser.CatchClauseContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#catchClause}. + * @param ctx the parse tree + */ + void exitCatchClause(Java8Parser.CatchClauseContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#catchFormalParameter}. + * @param ctx the parse tree + */ + void enterCatchFormalParameter(Java8Parser.CatchFormalParameterContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#catchFormalParameter}. + * @param ctx the parse tree + */ + void exitCatchFormalParameter(Java8Parser.CatchFormalParameterContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#catchType}. + * @param ctx the parse tree + */ + void enterCatchType(Java8Parser.CatchTypeContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#catchType}. + * @param ctx the parse tree + */ + void exitCatchType(Java8Parser.CatchTypeContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#finally_}. + * @param ctx the parse tree + */ + void enterFinally_(Java8Parser.Finally_Context ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#finally_}. + * @param ctx the parse tree + */ + void exitFinally_(Java8Parser.Finally_Context ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#tryWithResourcesStatement}. + * @param ctx the parse tree + */ + void enterTryWithResourcesStatement(Java8Parser.TryWithResourcesStatementContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#tryWithResourcesStatement}. + * @param ctx the parse tree + */ + void exitTryWithResourcesStatement(Java8Parser.TryWithResourcesStatementContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#resourceSpecification}. + * @param ctx the parse tree + */ + void enterResourceSpecification(Java8Parser.ResourceSpecificationContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#resourceSpecification}. + * @param ctx the parse tree + */ + void exitResourceSpecification(Java8Parser.ResourceSpecificationContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#resourceList}. + * @param ctx the parse tree + */ + void enterResourceList(Java8Parser.ResourceListContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#resourceList}. + * @param ctx the parse tree + */ + void exitResourceList(Java8Parser.ResourceListContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#resource}. + * @param ctx the parse tree + */ + void enterResource(Java8Parser.ResourceContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#resource}. + * @param ctx the parse tree + */ + void exitResource(Java8Parser.ResourceContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#primary}. + * @param ctx the parse tree + */ + void enterPrimary(Java8Parser.PrimaryContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#primary}. + * @param ctx the parse tree + */ + void exitPrimary(Java8Parser.PrimaryContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#primaryNoNewArray}. + * @param ctx the parse tree + */ + void enterPrimaryNoNewArray(Java8Parser.PrimaryNoNewArrayContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#primaryNoNewArray}. + * @param ctx the parse tree + */ + void exitPrimaryNoNewArray(Java8Parser.PrimaryNoNewArrayContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#primaryNoNewArray_lf_arrayAccess}. + * @param ctx the parse tree + */ + void enterPrimaryNoNewArray_lf_arrayAccess(Java8Parser.PrimaryNoNewArray_lf_arrayAccessContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#primaryNoNewArray_lf_arrayAccess}. + * @param ctx the parse tree + */ + void exitPrimaryNoNewArray_lf_arrayAccess(Java8Parser.PrimaryNoNewArray_lf_arrayAccessContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#primaryNoNewArray_lfno_arrayAccess}. + * @param ctx the parse tree + */ + void enterPrimaryNoNewArray_lfno_arrayAccess(Java8Parser.PrimaryNoNewArray_lfno_arrayAccessContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#primaryNoNewArray_lfno_arrayAccess}. + * @param ctx the parse tree + */ + void exitPrimaryNoNewArray_lfno_arrayAccess(Java8Parser.PrimaryNoNewArray_lfno_arrayAccessContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#primaryNoNewArray_lf_primary}. + * @param ctx the parse tree + */ + void enterPrimaryNoNewArray_lf_primary(Java8Parser.PrimaryNoNewArray_lf_primaryContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#primaryNoNewArray_lf_primary}. + * @param ctx the parse tree + */ + void exitPrimaryNoNewArray_lf_primary(Java8Parser.PrimaryNoNewArray_lf_primaryContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#primaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary}. + * @param ctx the parse tree + */ + void enterPrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary(Java8Parser.PrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primaryContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#primaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary}. + * @param ctx the parse tree + */ + void exitPrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary(Java8Parser.PrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primaryContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#primaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary}. + * @param ctx the parse tree + */ + void enterPrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary(Java8Parser.PrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primaryContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#primaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary}. + * @param ctx the parse tree + */ + void exitPrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary(Java8Parser.PrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primaryContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#primaryNoNewArray_lfno_primary}. + * @param ctx the parse tree + */ + void enterPrimaryNoNewArray_lfno_primary(Java8Parser.PrimaryNoNewArray_lfno_primaryContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#primaryNoNewArray_lfno_primary}. + * @param ctx the parse tree + */ + void exitPrimaryNoNewArray_lfno_primary(Java8Parser.PrimaryNoNewArray_lfno_primaryContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#primaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary}. + * @param ctx the parse tree + */ + void enterPrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary(Java8Parser.PrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primaryContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#primaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary}. + * @param ctx the parse tree + */ + void exitPrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary(Java8Parser.PrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primaryContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#primaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary}. + * @param ctx the parse tree + */ + void enterPrimaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary(Java8Parser.PrimaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primaryContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#primaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary}. + * @param ctx the parse tree + */ + void exitPrimaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary(Java8Parser.PrimaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primaryContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#classInstanceCreationExpression}. + * @param ctx the parse tree + */ + void enterClassInstanceCreationExpression(Java8Parser.ClassInstanceCreationExpressionContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#classInstanceCreationExpression}. + * @param ctx the parse tree + */ + void exitClassInstanceCreationExpression(Java8Parser.ClassInstanceCreationExpressionContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#classInstanceCreationExpression_lf_primary}. + * @param ctx the parse tree + */ + void enterClassInstanceCreationExpression_lf_primary(Java8Parser.ClassInstanceCreationExpression_lf_primaryContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#classInstanceCreationExpression_lf_primary}. + * @param ctx the parse tree + */ + void exitClassInstanceCreationExpression_lf_primary(Java8Parser.ClassInstanceCreationExpression_lf_primaryContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#classInstanceCreationExpression_lfno_primary}. + * @param ctx the parse tree + */ + void enterClassInstanceCreationExpression_lfno_primary(Java8Parser.ClassInstanceCreationExpression_lfno_primaryContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#classInstanceCreationExpression_lfno_primary}. + * @param ctx the parse tree + */ + void exitClassInstanceCreationExpression_lfno_primary(Java8Parser.ClassInstanceCreationExpression_lfno_primaryContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#typeArgumentsOrDiamond}. + * @param ctx the parse tree + */ + void enterTypeArgumentsOrDiamond(Java8Parser.TypeArgumentsOrDiamondContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#typeArgumentsOrDiamond}. + * @param ctx the parse tree + */ + void exitTypeArgumentsOrDiamond(Java8Parser.TypeArgumentsOrDiamondContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#fieldAccess}. + * @param ctx the parse tree + */ + void enterFieldAccess(Java8Parser.FieldAccessContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#fieldAccess}. + * @param ctx the parse tree + */ + void exitFieldAccess(Java8Parser.FieldAccessContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#fieldAccess_lf_primary}. + * @param ctx the parse tree + */ + void enterFieldAccess_lf_primary(Java8Parser.FieldAccess_lf_primaryContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#fieldAccess_lf_primary}. + * @param ctx the parse tree + */ + void exitFieldAccess_lf_primary(Java8Parser.FieldAccess_lf_primaryContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#fieldAccess_lfno_primary}. + * @param ctx the parse tree + */ + void enterFieldAccess_lfno_primary(Java8Parser.FieldAccess_lfno_primaryContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#fieldAccess_lfno_primary}. + * @param ctx the parse tree + */ + void exitFieldAccess_lfno_primary(Java8Parser.FieldAccess_lfno_primaryContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#arrayAccess}. + * @param ctx the parse tree + */ + void enterArrayAccess(Java8Parser.ArrayAccessContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#arrayAccess}. + * @param ctx the parse tree + */ + void exitArrayAccess(Java8Parser.ArrayAccessContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#arrayAccess_lf_primary}. + * @param ctx the parse tree + */ + void enterArrayAccess_lf_primary(Java8Parser.ArrayAccess_lf_primaryContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#arrayAccess_lf_primary}. + * @param ctx the parse tree + */ + void exitArrayAccess_lf_primary(Java8Parser.ArrayAccess_lf_primaryContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#arrayAccess_lfno_primary}. + * @param ctx the parse tree + */ + void enterArrayAccess_lfno_primary(Java8Parser.ArrayAccess_lfno_primaryContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#arrayAccess_lfno_primary}. + * @param ctx the parse tree + */ + void exitArrayAccess_lfno_primary(Java8Parser.ArrayAccess_lfno_primaryContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#methodInvocation}. + * @param ctx the parse tree + */ + void enterMethodInvocation(Java8Parser.MethodInvocationContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#methodInvocation}. + * @param ctx the parse tree + */ + void exitMethodInvocation(Java8Parser.MethodInvocationContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#methodInvocation_lf_primary}. + * @param ctx the parse tree + */ + void enterMethodInvocation_lf_primary(Java8Parser.MethodInvocation_lf_primaryContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#methodInvocation_lf_primary}. + * @param ctx the parse tree + */ + void exitMethodInvocation_lf_primary(Java8Parser.MethodInvocation_lf_primaryContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#methodInvocation_lfno_primary}. + * @param ctx the parse tree + */ + void enterMethodInvocation_lfno_primary(Java8Parser.MethodInvocation_lfno_primaryContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#methodInvocation_lfno_primary}. + * @param ctx the parse tree + */ + void exitMethodInvocation_lfno_primary(Java8Parser.MethodInvocation_lfno_primaryContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#argumentList}. + * @param ctx the parse tree + */ + void enterArgumentList(Java8Parser.ArgumentListContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#argumentList}. + * @param ctx the parse tree + */ + void exitArgumentList(Java8Parser.ArgumentListContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#methodReference}. + * @param ctx the parse tree + */ + void enterMethodReference(Java8Parser.MethodReferenceContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#methodReference}. + * @param ctx the parse tree + */ + void exitMethodReference(Java8Parser.MethodReferenceContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#methodReference_lf_primary}. + * @param ctx the parse tree + */ + void enterMethodReference_lf_primary(Java8Parser.MethodReference_lf_primaryContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#methodReference_lf_primary}. + * @param ctx the parse tree + */ + void exitMethodReference_lf_primary(Java8Parser.MethodReference_lf_primaryContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#methodReference_lfno_primary}. + * @param ctx the parse tree + */ + void enterMethodReference_lfno_primary(Java8Parser.MethodReference_lfno_primaryContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#methodReference_lfno_primary}. + * @param ctx the parse tree + */ + void exitMethodReference_lfno_primary(Java8Parser.MethodReference_lfno_primaryContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#arrayCreationExpression}. + * @param ctx the parse tree + */ + void enterArrayCreationExpression(Java8Parser.ArrayCreationExpressionContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#arrayCreationExpression}. + * @param ctx the parse tree + */ + void exitArrayCreationExpression(Java8Parser.ArrayCreationExpressionContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#dimExprs}. + * @param ctx the parse tree + */ + void enterDimExprs(Java8Parser.DimExprsContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#dimExprs}. + * @param ctx the parse tree + */ + void exitDimExprs(Java8Parser.DimExprsContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#dimExpr}. + * @param ctx the parse tree + */ + void enterDimExpr(Java8Parser.DimExprContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#dimExpr}. + * @param ctx the parse tree + */ + void exitDimExpr(Java8Parser.DimExprContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#constantExpression}. + * @param ctx the parse tree + */ + void enterConstantExpression(Java8Parser.ConstantExpressionContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#constantExpression}. + * @param ctx the parse tree + */ + void exitConstantExpression(Java8Parser.ConstantExpressionContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#expression}. + * @param ctx the parse tree + */ + void enterExpression(Java8Parser.ExpressionContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#expression}. + * @param ctx the parse tree + */ + void exitExpression(Java8Parser.ExpressionContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#lambdaExpression}. + * @param ctx the parse tree + */ + void enterLambdaExpression(Java8Parser.LambdaExpressionContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#lambdaExpression}. + * @param ctx the parse tree + */ + void exitLambdaExpression(Java8Parser.LambdaExpressionContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#lambdaParameters}. + * @param ctx the parse tree + */ + void enterLambdaParameters(Java8Parser.LambdaParametersContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#lambdaParameters}. + * @param ctx the parse tree + */ + void exitLambdaParameters(Java8Parser.LambdaParametersContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#inferredFormalParameterList}. + * @param ctx the parse tree + */ + void enterInferredFormalParameterList(Java8Parser.InferredFormalParameterListContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#inferredFormalParameterList}. + * @param ctx the parse tree + */ + void exitInferredFormalParameterList(Java8Parser.InferredFormalParameterListContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#lambdaBody}. + * @param ctx the parse tree + */ + void enterLambdaBody(Java8Parser.LambdaBodyContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#lambdaBody}. + * @param ctx the parse tree + */ + void exitLambdaBody(Java8Parser.LambdaBodyContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#assignmentExpression}. + * @param ctx the parse tree + */ + void enterAssignmentExpression(Java8Parser.AssignmentExpressionContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#assignmentExpression}. + * @param ctx the parse tree + */ + void exitAssignmentExpression(Java8Parser.AssignmentExpressionContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#assignment}. + * @param ctx the parse tree + */ + void enterAssignment(Java8Parser.AssignmentContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#assignment}. + * @param ctx the parse tree + */ + void exitAssignment(Java8Parser.AssignmentContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#leftHandSide}. + * @param ctx the parse tree + */ + void enterLeftHandSide(Java8Parser.LeftHandSideContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#leftHandSide}. + * @param ctx the parse tree + */ + void exitLeftHandSide(Java8Parser.LeftHandSideContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#assignmentOperator}. + * @param ctx the parse tree + */ + void enterAssignmentOperator(Java8Parser.AssignmentOperatorContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#assignmentOperator}. + * @param ctx the parse tree + */ + void exitAssignmentOperator(Java8Parser.AssignmentOperatorContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#conditionalExpression}. + * @param ctx the parse tree + */ + void enterConditionalExpression(Java8Parser.ConditionalExpressionContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#conditionalExpression}. + * @param ctx the parse tree + */ + void exitConditionalExpression(Java8Parser.ConditionalExpressionContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#conditionalOrExpression}. + * @param ctx the parse tree + */ + void enterConditionalOrExpression(Java8Parser.ConditionalOrExpressionContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#conditionalOrExpression}. + * @param ctx the parse tree + */ + void exitConditionalOrExpression(Java8Parser.ConditionalOrExpressionContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#conditionalAndExpression}. + * @param ctx the parse tree + */ + void enterConditionalAndExpression(Java8Parser.ConditionalAndExpressionContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#conditionalAndExpression}. + * @param ctx the parse tree + */ + void exitConditionalAndExpression(Java8Parser.ConditionalAndExpressionContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#inclusiveOrExpression}. + * @param ctx the parse tree + */ + void enterInclusiveOrExpression(Java8Parser.InclusiveOrExpressionContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#inclusiveOrExpression}. + * @param ctx the parse tree + */ + void exitInclusiveOrExpression(Java8Parser.InclusiveOrExpressionContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#exclusiveOrExpression}. + * @param ctx the parse tree + */ + void enterExclusiveOrExpression(Java8Parser.ExclusiveOrExpressionContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#exclusiveOrExpression}. + * @param ctx the parse tree + */ + void exitExclusiveOrExpression(Java8Parser.ExclusiveOrExpressionContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#andExpression}. + * @param ctx the parse tree + */ + void enterAndExpression(Java8Parser.AndExpressionContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#andExpression}. + * @param ctx the parse tree + */ + void exitAndExpression(Java8Parser.AndExpressionContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#equalityExpression}. + * @param ctx the parse tree + */ + void enterEqualityExpression(Java8Parser.EqualityExpressionContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#equalityExpression}. + * @param ctx the parse tree + */ + void exitEqualityExpression(Java8Parser.EqualityExpressionContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#relationalExpression}. + * @param ctx the parse tree + */ + void enterRelationalExpression(Java8Parser.RelationalExpressionContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#relationalExpression}. + * @param ctx the parse tree + */ + void exitRelationalExpression(Java8Parser.RelationalExpressionContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#shiftExpression}. + * @param ctx the parse tree + */ + void enterShiftExpression(Java8Parser.ShiftExpressionContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#shiftExpression}. + * @param ctx the parse tree + */ + void exitShiftExpression(Java8Parser.ShiftExpressionContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#additiveExpression}. + * @param ctx the parse tree + */ + void enterAdditiveExpression(Java8Parser.AdditiveExpressionContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#additiveExpression}. + * @param ctx the parse tree + */ + void exitAdditiveExpression(Java8Parser.AdditiveExpressionContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#multiplicativeExpression}. + * @param ctx the parse tree + */ + void enterMultiplicativeExpression(Java8Parser.MultiplicativeExpressionContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#multiplicativeExpression}. + * @param ctx the parse tree + */ + void exitMultiplicativeExpression(Java8Parser.MultiplicativeExpressionContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#unaryExpression}. + * @param ctx the parse tree + */ + void enterUnaryExpression(Java8Parser.UnaryExpressionContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#unaryExpression}. + * @param ctx the parse tree + */ + void exitUnaryExpression(Java8Parser.UnaryExpressionContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#preIncrementExpression}. + * @param ctx the parse tree + */ + void enterPreIncrementExpression(Java8Parser.PreIncrementExpressionContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#preIncrementExpression}. + * @param ctx the parse tree + */ + void exitPreIncrementExpression(Java8Parser.PreIncrementExpressionContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#preDecrementExpression}. + * @param ctx the parse tree + */ + void enterPreDecrementExpression(Java8Parser.PreDecrementExpressionContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#preDecrementExpression}. + * @param ctx the parse tree + */ + void exitPreDecrementExpression(Java8Parser.PreDecrementExpressionContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#unaryExpressionNotPlusMinus}. + * @param ctx the parse tree + */ + void enterUnaryExpressionNotPlusMinus(Java8Parser.UnaryExpressionNotPlusMinusContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#unaryExpressionNotPlusMinus}. + * @param ctx the parse tree + */ + void exitUnaryExpressionNotPlusMinus(Java8Parser.UnaryExpressionNotPlusMinusContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#postfixExpression}. + * @param ctx the parse tree + */ + void enterPostfixExpression(Java8Parser.PostfixExpressionContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#postfixExpression}. + * @param ctx the parse tree + */ + void exitPostfixExpression(Java8Parser.PostfixExpressionContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#postIncrementExpression}. + * @param ctx the parse tree + */ + void enterPostIncrementExpression(Java8Parser.PostIncrementExpressionContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#postIncrementExpression}. + * @param ctx the parse tree + */ + void exitPostIncrementExpression(Java8Parser.PostIncrementExpressionContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#postIncrementExpression_lf_postfixExpression}. + * @param ctx the parse tree + */ + void enterPostIncrementExpression_lf_postfixExpression(Java8Parser.PostIncrementExpression_lf_postfixExpressionContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#postIncrementExpression_lf_postfixExpression}. + * @param ctx the parse tree + */ + void exitPostIncrementExpression_lf_postfixExpression(Java8Parser.PostIncrementExpression_lf_postfixExpressionContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#postDecrementExpression}. + * @param ctx the parse tree + */ + void enterPostDecrementExpression(Java8Parser.PostDecrementExpressionContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#postDecrementExpression}. + * @param ctx the parse tree + */ + void exitPostDecrementExpression(Java8Parser.PostDecrementExpressionContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#postDecrementExpression_lf_postfixExpression}. + * @param ctx the parse tree + */ + void enterPostDecrementExpression_lf_postfixExpression(Java8Parser.PostDecrementExpression_lf_postfixExpressionContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#postDecrementExpression_lf_postfixExpression}. + * @param ctx the parse tree + */ + void exitPostDecrementExpression_lf_postfixExpression(Java8Parser.PostDecrementExpression_lf_postfixExpressionContext ctx); + /** + * Enter a parse tree produced by {@link Java8Parser#castExpression}. + * @param ctx the parse tree + */ + void enterCastExpression(Java8Parser.CastExpressionContext ctx); + /** + * Exit a parse tree produced by {@link Java8Parser#castExpression}. + * @param ctx the parse tree + */ + void exitCastExpression(Java8Parser.CastExpressionContext ctx); +} \ No newline at end of file diff --git a/benchmarks/src/main/java/org/antlr/Java8Parser.java b/benchmarks/src/main/java/org/antlr/Java8Parser.java new file mode 100644 index 000000000..76672e734 --- /dev/null +++ b/benchmarks/src/main/java/org/antlr/Java8Parser.java @@ -0,0 +1,20153 @@ +// Generated from Java8.g4 by ANTLR 4.13.1 + +package org.antlr; + +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; + +@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast", "CheckReturnValue"}) +public class Java8Parser extends Parser { + static { RuntimeMetaData.checkVersion("4.13.1", RuntimeMetaData.VERSION); } + + protected static final DFA[] _decisionToDFA; + protected static final PredictionContextCache _sharedContextCache = + new PredictionContextCache(); + public static final int + ABSTRACT=1, ASSERT=2, BOOLEAN=3, BREAK=4, BYTE=5, CASE=6, CATCH=7, CHAR=8, + CLASS=9, CONST=10, CONTINUE=11, DEFAULT=12, DO=13, DOUBLE=14, ELSE=15, + ENUM=16, EXTENDS=17, FINAL=18, FINALLY=19, FLOAT=20, FOR=21, IF=22, GOTO=23, + IMPLEMENTS=24, IMPORT=25, INSTANCEOF=26, INT=27, INTERFACE=28, LONG=29, + NATIVE=30, NEW=31, PACKAGE=32, PRIVATE=33, PROTECTED=34, PUBLIC=35, RETURN=36, + SHORT=37, STATIC=38, STRICTFP=39, SUPER=40, SWITCH=41, SYNCHRONIZED=42, + THIS=43, THROW=44, THROWS=45, TRANSIENT=46, TRY=47, VOID=48, VOLATILE=49, + WHILE=50, IntegerLiteral=51, FloatingPointLiteral=52, BooleanLiteral=53, + CharacterLiteral=54, StringLiteral=55, NullLiteral=56, LPAREN=57, RPAREN=58, + LBRACE=59, RBRACE=60, LBRACK=61, RBRACK=62, SEMI=63, COMMA=64, DOT=65, + ASSIGN=66, GT=67, LT=68, BANG=69, TILDE=70, QUESTION=71, COLON=72, EQUAL=73, + LE=74, GE=75, NOTEQUAL=76, AND=77, OR=78, INC=79, DEC=80, ADD=81, SUB=82, + MUL=83, DIV=84, BITAND=85, BITOR=86, CARET=87, MOD=88, ARROW=89, COLONCOLON=90, + ADD_ASSIGN=91, SUB_ASSIGN=92, MUL_ASSIGN=93, DIV_ASSIGN=94, AND_ASSIGN=95, + OR_ASSIGN=96, XOR_ASSIGN=97, MOD_ASSIGN=98, LSHIFT_ASSIGN=99, RSHIFT_ASSIGN=100, + URSHIFT_ASSIGN=101, Identifier=102, AT=103, ELLIPSIS=104, WS=105, COMMENT=106, + LINE_COMMENT=107; + public static final int + RULE_literal = 0, RULE_type = 1, RULE_primitiveType = 2, RULE_numericType = 3, + RULE_integralType = 4, RULE_floatingPointType = 5, RULE_referenceType = 6, + RULE_classOrInterfaceType = 7, RULE_classType = 8, RULE_classType_lf_classOrInterfaceType = 9, + RULE_classType_lfno_classOrInterfaceType = 10, RULE_interfaceType = 11, + RULE_interfaceType_lf_classOrInterfaceType = 12, RULE_interfaceType_lfno_classOrInterfaceType = 13, + RULE_typeVariable = 14, RULE_arrayType = 15, RULE_dims = 16, RULE_typeParameter = 17, + RULE_typeParameterModifier = 18, RULE_typeBound = 19, RULE_additionalBound = 20, + RULE_typeArguments = 21, RULE_typeArgumentList = 22, RULE_typeArgument = 23, + RULE_wildcard = 24, RULE_wildcardBounds = 25, RULE_packageName = 26, RULE_typeName = 27, + RULE_packageOrTypeName = 28, RULE_expressionName = 29, RULE_methodName = 30, + RULE_ambiguousName = 31, RULE_compilationUnit = 32, RULE_packageDeclaration = 33, + RULE_packageModifier = 34, RULE_importDeclaration = 35, RULE_singleTypeImportDeclaration = 36, + RULE_typeImportOnDemandDeclaration = 37, RULE_singleStaticImportDeclaration = 38, + RULE_staticImportOnDemandDeclaration = 39, RULE_typeDeclaration = 40, + RULE_classDeclaration = 41, RULE_normalClassDeclaration = 42, RULE_classModifier = 43, + RULE_typeParameters = 44, RULE_typeParameterList = 45, RULE_superclass = 46, + RULE_superinterfaces = 47, RULE_interfaceTypeList = 48, RULE_classBody = 49, + RULE_classBodyDeclaration = 50, RULE_classMemberDeclaration = 51, RULE_fieldDeclaration = 52, + RULE_fieldModifier = 53, RULE_variableDeclaratorList = 54, RULE_variableDeclarator = 55, + RULE_variableDeclaratorId = 56, RULE_variableInitializer = 57, RULE_unannType = 58, + RULE_unannPrimitiveType = 59, RULE_unannReferenceType = 60, RULE_unannClassOrInterfaceType = 61, + RULE_unannClassType = 62, RULE_unannClassType_lf_unannClassOrInterfaceType = 63, + RULE_unannClassType_lfno_unannClassOrInterfaceType = 64, RULE_unannInterfaceType = 65, + RULE_unannInterfaceType_lf_unannClassOrInterfaceType = 66, RULE_unannInterfaceType_lfno_unannClassOrInterfaceType = 67, + RULE_unannTypeVariable = 68, RULE_unannArrayType = 69, RULE_methodDeclaration = 70, + RULE_methodModifier = 71, RULE_methodHeader = 72, RULE_result = 73, RULE_methodDeclarator = 74, + RULE_formalParameterList = 75, RULE_formalParameters = 76, RULE_formalParameter = 77, + RULE_variableModifier = 78, RULE_lastFormalParameter = 79, RULE_receiverParameter = 80, + RULE_throws_ = 81, RULE_exceptionTypeList = 82, RULE_exceptionType = 83, + RULE_methodBody = 84, RULE_instanceInitializer = 85, RULE_staticInitializer = 86, + RULE_constructorDeclaration = 87, RULE_constructorModifier = 88, RULE_constructorDeclarator = 89, + RULE_simpleTypeName = 90, RULE_constructorBody = 91, RULE_explicitConstructorInvocation = 92, + RULE_enumDeclaration = 93, RULE_enumBody = 94, RULE_enumConstantList = 95, + RULE_enumConstant = 96, RULE_enumConstantModifier = 97, RULE_enumBodyDeclarations = 98, + RULE_interfaceDeclaration = 99, RULE_normalInterfaceDeclaration = 100, + RULE_interfaceModifier = 101, RULE_extendsInterfaces = 102, RULE_interfaceBody = 103, + RULE_interfaceMemberDeclaration = 104, RULE_constantDeclaration = 105, + RULE_constantModifier = 106, RULE_interfaceMethodDeclaration = 107, RULE_interfaceMethodModifier = 108, + RULE_annotationTypeDeclaration = 109, RULE_annotationTypeBody = 110, RULE_annotationTypeMemberDeclaration = 111, + RULE_annotationTypeElementDeclaration = 112, RULE_annotationTypeElementModifier = 113, + RULE_defaultValue = 114, RULE_annotation = 115, RULE_normalAnnotation = 116, + RULE_elementValuePairList = 117, RULE_elementValuePair = 118, RULE_elementValue = 119, + RULE_elementValueArrayInitializer = 120, RULE_elementValueList = 121, + RULE_markerAnnotation = 122, RULE_singleElementAnnotation = 123, RULE_arrayInitializer = 124, + RULE_variableInitializerList = 125, RULE_block = 126, RULE_blockStatements = 127, + RULE_blockStatement = 128, RULE_localVariableDeclarationStatement = 129, + RULE_localVariableDeclaration = 130, RULE_statement = 131, RULE_statementNoShortIf = 132, + RULE_statementWithoutTrailingSubstatement = 133, RULE_emptyStatement = 134, + RULE_labeledStatement = 135, RULE_labeledStatementNoShortIf = 136, RULE_expressionStatement = 137, + RULE_statementExpression = 138, RULE_ifThenStatement = 139, RULE_ifThenElseStatement = 140, + RULE_ifThenElseStatementNoShortIf = 141, RULE_assertStatement = 142, RULE_switchStatement = 143, + RULE_switchBlock = 144, RULE_switchBlockStatementGroup = 145, RULE_switchLabels = 146, + RULE_switchLabel = 147, RULE_enumConstantName = 148, RULE_whileStatement = 149, + RULE_whileStatementNoShortIf = 150, RULE_doStatement = 151, RULE_forStatement = 152, + RULE_forStatementNoShortIf = 153, RULE_basicForStatement = 154, RULE_basicForStatementNoShortIf = 155, + RULE_forInit = 156, RULE_forUpdate = 157, RULE_statementExpressionList = 158, + RULE_enhancedForStatement = 159, RULE_enhancedForStatementNoShortIf = 160, + RULE_breakStatement = 161, RULE_continueStatement = 162, RULE_returnStatement = 163, + RULE_throwStatement = 164, RULE_synchronizedStatement = 165, RULE_tryStatement = 166, + RULE_catches = 167, RULE_catchClause = 168, RULE_catchFormalParameter = 169, + RULE_catchType = 170, RULE_finally_ = 171, RULE_tryWithResourcesStatement = 172, + RULE_resourceSpecification = 173, RULE_resourceList = 174, RULE_resource = 175, + RULE_primary = 176, RULE_primaryNoNewArray = 177, RULE_primaryNoNewArray_lf_arrayAccess = 178, + RULE_primaryNoNewArray_lfno_arrayAccess = 179, RULE_primaryNoNewArray_lf_primary = 180, + RULE_primaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary = 181, RULE_primaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary = 182, + RULE_primaryNoNewArray_lfno_primary = 183, RULE_primaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary = 184, + RULE_primaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary = 185, + RULE_classInstanceCreationExpression = 186, RULE_classInstanceCreationExpression_lf_primary = 187, + RULE_classInstanceCreationExpression_lfno_primary = 188, RULE_typeArgumentsOrDiamond = 189, + RULE_fieldAccess = 190, RULE_fieldAccess_lf_primary = 191, RULE_fieldAccess_lfno_primary = 192, + RULE_arrayAccess = 193, RULE_arrayAccess_lf_primary = 194, RULE_arrayAccess_lfno_primary = 195, + RULE_methodInvocation = 196, RULE_methodInvocation_lf_primary = 197, RULE_methodInvocation_lfno_primary = 198, + RULE_argumentList = 199, RULE_methodReference = 200, RULE_methodReference_lf_primary = 201, + RULE_methodReference_lfno_primary = 202, RULE_arrayCreationExpression = 203, + RULE_dimExprs = 204, RULE_dimExpr = 205, RULE_constantExpression = 206, + RULE_expression = 207, RULE_lambdaExpression = 208, RULE_lambdaParameters = 209, + RULE_inferredFormalParameterList = 210, RULE_lambdaBody = 211, RULE_assignmentExpression = 212, + RULE_assignment = 213, RULE_leftHandSide = 214, RULE_assignmentOperator = 215, + RULE_conditionalExpression = 216, RULE_conditionalOrExpression = 217, + RULE_conditionalAndExpression = 218, RULE_inclusiveOrExpression = 219, + RULE_exclusiveOrExpression = 220, RULE_andExpression = 221, RULE_equalityExpression = 222, + RULE_relationalExpression = 223, RULE_shiftExpression = 224, RULE_additiveExpression = 225, + RULE_multiplicativeExpression = 226, RULE_unaryExpression = 227, RULE_preIncrementExpression = 228, + RULE_preDecrementExpression = 229, RULE_unaryExpressionNotPlusMinus = 230, + RULE_postfixExpression = 231, RULE_postIncrementExpression = 232, RULE_postIncrementExpression_lf_postfixExpression = 233, + RULE_postDecrementExpression = 234, RULE_postDecrementExpression_lf_postfixExpression = 235, + RULE_castExpression = 236; + private static String[] makeRuleNames() { + return new String[] { + "literal", "type", "primitiveType", "numericType", "integralType", "floatingPointType", + "referenceType", "classOrInterfaceType", "classType", "classType_lf_classOrInterfaceType", + "classType_lfno_classOrInterfaceType", "interfaceType", "interfaceType_lf_classOrInterfaceType", + "interfaceType_lfno_classOrInterfaceType", "typeVariable", "arrayType", + "dims", "typeParameter", "typeParameterModifier", "typeBound", "additionalBound", + "typeArguments", "typeArgumentList", "typeArgument", "wildcard", "wildcardBounds", + "packageName", "typeName", "packageOrTypeName", "expressionName", "methodName", + "ambiguousName", "compilationUnit", "packageDeclaration", "packageModifier", + "importDeclaration", "singleTypeImportDeclaration", "typeImportOnDemandDeclaration", + "singleStaticImportDeclaration", "staticImportOnDemandDeclaration", "typeDeclaration", + "classDeclaration", "normalClassDeclaration", "classModifier", "typeParameters", + "typeParameterList", "superclass", "superinterfaces", "interfaceTypeList", + "classBody", "classBodyDeclaration", "classMemberDeclaration", "fieldDeclaration", + "fieldModifier", "variableDeclaratorList", "variableDeclarator", "variableDeclaratorId", + "variableInitializer", "unannType", "unannPrimitiveType", "unannReferenceType", + "unannClassOrInterfaceType", "unannClassType", "unannClassType_lf_unannClassOrInterfaceType", + "unannClassType_lfno_unannClassOrInterfaceType", "unannInterfaceType", + "unannInterfaceType_lf_unannClassOrInterfaceType", "unannInterfaceType_lfno_unannClassOrInterfaceType", + "unannTypeVariable", "unannArrayType", "methodDeclaration", "methodModifier", + "methodHeader", "result", "methodDeclarator", "formalParameterList", + "formalParameters", "formalParameter", "variableModifier", "lastFormalParameter", + "receiverParameter", "throws_", "exceptionTypeList", "exceptionType", + "methodBody", "instanceInitializer", "staticInitializer", "constructorDeclaration", + "constructorModifier", "constructorDeclarator", "simpleTypeName", "constructorBody", + "explicitConstructorInvocation", "enumDeclaration", "enumBody", "enumConstantList", + "enumConstant", "enumConstantModifier", "enumBodyDeclarations", "interfaceDeclaration", + "normalInterfaceDeclaration", "interfaceModifier", "extendsInterfaces", + "interfaceBody", "interfaceMemberDeclaration", "constantDeclaration", + "constantModifier", "interfaceMethodDeclaration", "interfaceMethodModifier", + "annotationTypeDeclaration", "annotationTypeBody", "annotationTypeMemberDeclaration", + "annotationTypeElementDeclaration", "annotationTypeElementModifier", + "defaultValue", "annotation", "normalAnnotation", "elementValuePairList", + "elementValuePair", "elementValue", "elementValueArrayInitializer", "elementValueList", + "markerAnnotation", "singleElementAnnotation", "arrayInitializer", "variableInitializerList", + "block", "blockStatements", "blockStatement", "localVariableDeclarationStatement", + "localVariableDeclaration", "statement", "statementNoShortIf", "statementWithoutTrailingSubstatement", + "emptyStatement", "labeledStatement", "labeledStatementNoShortIf", "expressionStatement", + "statementExpression", "ifThenStatement", "ifThenElseStatement", "ifThenElseStatementNoShortIf", + "assertStatement", "switchStatement", "switchBlock", "switchBlockStatementGroup", + "switchLabels", "switchLabel", "enumConstantName", "whileStatement", + "whileStatementNoShortIf", "doStatement", "forStatement", "forStatementNoShortIf", + "basicForStatement", "basicForStatementNoShortIf", "forInit", "forUpdate", + "statementExpressionList", "enhancedForStatement", "enhancedForStatementNoShortIf", + "breakStatement", "continueStatement", "returnStatement", "throwStatement", + "synchronizedStatement", "tryStatement", "catches", "catchClause", "catchFormalParameter", + "catchType", "finally_", "tryWithResourcesStatement", "resourceSpecification", + "resourceList", "resource", "primary", "primaryNoNewArray", "primaryNoNewArray_lf_arrayAccess", + "primaryNoNewArray_lfno_arrayAccess", "primaryNoNewArray_lf_primary", + "primaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary", "primaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary", + "primaryNoNewArray_lfno_primary", "primaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary", + "primaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary", "classInstanceCreationExpression", + "classInstanceCreationExpression_lf_primary", "classInstanceCreationExpression_lfno_primary", + "typeArgumentsOrDiamond", "fieldAccess", "fieldAccess_lf_primary", "fieldAccess_lfno_primary", + "arrayAccess", "arrayAccess_lf_primary", "arrayAccess_lfno_primary", + "methodInvocation", "methodInvocation_lf_primary", "methodInvocation_lfno_primary", + "argumentList", "methodReference", "methodReference_lf_primary", "methodReference_lfno_primary", + "arrayCreationExpression", "dimExprs", "dimExpr", "constantExpression", + "expression", "lambdaExpression", "lambdaParameters", "inferredFormalParameterList", + "lambdaBody", "assignmentExpression", "assignment", "leftHandSide", "assignmentOperator", + "conditionalExpression", "conditionalOrExpression", "conditionalAndExpression", + "inclusiveOrExpression", "exclusiveOrExpression", "andExpression", "equalityExpression", + "relationalExpression", "shiftExpression", "additiveExpression", "multiplicativeExpression", + "unaryExpression", "preIncrementExpression", "preDecrementExpression", + "unaryExpressionNotPlusMinus", "postfixExpression", "postIncrementExpression", + "postIncrementExpression_lf_postfixExpression", "postDecrementExpression", + "postDecrementExpression_lf_postfixExpression", "castExpression" + }; + } + public static final String[] ruleNames = makeRuleNames(); + + private static String[] makeLiteralNames() { + return new String[] { + 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'", "'void'", "'volatile'", "'while'", null, null, + null, null, null, "'null'", "'('", "')'", "'{'", "'}'", "'['", "']'", + "';'", "','", "'.'", "'='", "'>'", "'<'", "'!'", "'~'", "'?'", "':'", + "'=='", "'<='", "'>='", "'!='", "'&&'", "'||'", "'++'", "'--'", "'+'", + "'-'", "'*'", "'/'", "'&'", "'|'", "'^'", "'%'", "'->'", "'::'", "'+='", + "'-='", "'*='", "'/='", "'&='", "'|='", "'^='", "'%='", "'<<='", "'>>='", + "'>>>='", null, "'@'", "'...'" + }; + } + private static final String[] _LITERAL_NAMES = makeLiteralNames(); + private static String[] makeSymbolicNames() { + return new String[] { + 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", "VOID", "VOLATILE", "WHILE", "IntegerLiteral", + "FloatingPointLiteral", "BooleanLiteral", "CharacterLiteral", "StringLiteral", + "NullLiteral", "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", "ARROW", + "COLONCOLON", "ADD_ASSIGN", "SUB_ASSIGN", "MUL_ASSIGN", "DIV_ASSIGN", + "AND_ASSIGN", "OR_ASSIGN", "XOR_ASSIGN", "MOD_ASSIGN", "LSHIFT_ASSIGN", + "RSHIFT_ASSIGN", "URSHIFT_ASSIGN", "Identifier", "AT", "ELLIPSIS", "WS", + "COMMENT", "LINE_COMMENT" + }; + } + 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 "Java8.g4"; } + + @Override + public String[] getRuleNames() { return ruleNames; } + + @Override + public String getSerializedATN() { return _serializedATN; } + + @Override + public ATN getATN() { return _ATN; } + + public Java8Parser(TokenStream input) { + super(input); + _interp = new ParserATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache); + } + + @SuppressWarnings("CheckReturnValue") + public static class LiteralContext extends ParserRuleContext { + public TerminalNode IntegerLiteral() { return getToken(Java8Parser.IntegerLiteral, 0); } + public TerminalNode FloatingPointLiteral() { return getToken(Java8Parser.FloatingPointLiteral, 0); } + public TerminalNode BooleanLiteral() { return getToken(Java8Parser.BooleanLiteral, 0); } + public TerminalNode CharacterLiteral() { return getToken(Java8Parser.CharacterLiteral, 0); } + public TerminalNode StringLiteral() { return getToken(Java8Parser.StringLiteral, 0); } + public TerminalNode NullLiteral() { return getToken(Java8Parser.NullLiteral, 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 Java8Listener ) ((Java8Listener)listener).enterLiteral(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitLiteral(this); + } + } + + public final LiteralContext literal() throws RecognitionException { + LiteralContext _localctx = new LiteralContext(_ctx, getState()); + enterRule(_localctx, 0, RULE_literal); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(474); + _la = _input.LA(1); + if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & 141863388262170624L) != 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; + } + + @SuppressWarnings("CheckReturnValue") + public static class TypeContext extends ParserRuleContext { + public PrimitiveTypeContext primitiveType() { + return getRuleContext(PrimitiveTypeContext.class,0); + } + public ReferenceTypeContext referenceType() { + return getRuleContext(ReferenceTypeContext.class,0); + } + public TypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_type; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitType(this); + } + } + + public final TypeContext type() throws RecognitionException { + TypeContext _localctx = new TypeContext(_ctx, getState()); + enterRule(_localctx, 2, RULE_type); + try { + setState(478); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,0,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(476); + primitiveType(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(477); + referenceType(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class PrimitiveTypeContext extends ParserRuleContext { + public NumericTypeContext numericType() { + return getRuleContext(NumericTypeContext.class,0); + } + public List annotation() { + return getRuleContexts(AnnotationContext.class); + } + public AnnotationContext annotation(int i) { + return getRuleContext(AnnotationContext.class,i); + } + public TerminalNode BOOLEAN() { return getToken(Java8Parser.BOOLEAN, 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 Java8Listener ) ((Java8Listener)listener).enterPrimitiveType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitPrimitiveType(this); + } + } + + public final PrimitiveTypeContext primitiveType() throws RecognitionException { + PrimitiveTypeContext _localctx = new PrimitiveTypeContext(_ctx, getState()); + enterRule(_localctx, 4, RULE_primitiveType); + int _la; + try { + setState(494); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,3,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(483); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==AT) { + { + { + setState(480); + annotation(); + } + } + setState(485); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(486); + numericType(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(490); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==AT) { + { + { + setState(487); + annotation(); + } + } + setState(492); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(493); + match(BOOLEAN); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class NumericTypeContext extends ParserRuleContext { + public IntegralTypeContext integralType() { + return getRuleContext(IntegralTypeContext.class,0); + } + public FloatingPointTypeContext floatingPointType() { + return getRuleContext(FloatingPointTypeContext.class,0); + } + public NumericTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_numericType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterNumericType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitNumericType(this); + } + } + + public final NumericTypeContext numericType() throws RecognitionException { + NumericTypeContext _localctx = new NumericTypeContext(_ctx, getState()); + enterRule(_localctx, 6, RULE_numericType); + try { + setState(498); + _errHandler.sync(this); + switch (_input.LA(1)) { + case BYTE: + case CHAR: + case INT: + case LONG: + case SHORT: + enterOuterAlt(_localctx, 1); + { + setState(496); + integralType(); + } + break; + case DOUBLE: + case FLOAT: + enterOuterAlt(_localctx, 2); + { + setState(497); + floatingPointType(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class IntegralTypeContext extends ParserRuleContext { + public TerminalNode BYTE() { return getToken(Java8Parser.BYTE, 0); } + public TerminalNode SHORT() { return getToken(Java8Parser.SHORT, 0); } + public TerminalNode INT() { return getToken(Java8Parser.INT, 0); } + public TerminalNode LONG() { return getToken(Java8Parser.LONG, 0); } + public TerminalNode CHAR() { return getToken(Java8Parser.CHAR, 0); } + public IntegralTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_integralType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterIntegralType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitIntegralType(this); + } + } + + public final IntegralTypeContext integralType() throws RecognitionException { + IntegralTypeContext _localctx = new IntegralTypeContext(_ctx, getState()); + enterRule(_localctx, 8, RULE_integralType); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(500); + _la = _input.LA(1); + if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & 138110042400L) != 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; + } + + @SuppressWarnings("CheckReturnValue") + public static class FloatingPointTypeContext extends ParserRuleContext { + public TerminalNode FLOAT() { return getToken(Java8Parser.FLOAT, 0); } + public TerminalNode DOUBLE() { return getToken(Java8Parser.DOUBLE, 0); } + public FloatingPointTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_floatingPointType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterFloatingPointType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitFloatingPointType(this); + } + } + + public final FloatingPointTypeContext floatingPointType() throws RecognitionException { + FloatingPointTypeContext _localctx = new FloatingPointTypeContext(_ctx, getState()); + enterRule(_localctx, 10, RULE_floatingPointType); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(502); + _la = _input.LA(1); + if ( !(_la==DOUBLE || _la==FLOAT) ) { + _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; + } + + @SuppressWarnings("CheckReturnValue") + public static class ReferenceTypeContext extends ParserRuleContext { + public ClassOrInterfaceTypeContext classOrInterfaceType() { + return getRuleContext(ClassOrInterfaceTypeContext.class,0); + } + public TypeVariableContext typeVariable() { + return getRuleContext(TypeVariableContext.class,0); + } + public ArrayTypeContext arrayType() { + return getRuleContext(ArrayTypeContext.class,0); + } + public ReferenceTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_referenceType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterReferenceType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitReferenceType(this); + } + } + + public final ReferenceTypeContext referenceType() throws RecognitionException { + ReferenceTypeContext _localctx = new ReferenceTypeContext(_ctx, getState()); + enterRule(_localctx, 12, RULE_referenceType); + try { + setState(507); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,5,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(504); + classOrInterfaceType(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(505); + typeVariable(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(506); + arrayType(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ClassOrInterfaceTypeContext extends ParserRuleContext { + public ClassType_lfno_classOrInterfaceTypeContext classType_lfno_classOrInterfaceType() { + return getRuleContext(ClassType_lfno_classOrInterfaceTypeContext.class,0); + } + public InterfaceType_lfno_classOrInterfaceTypeContext interfaceType_lfno_classOrInterfaceType() { + return getRuleContext(InterfaceType_lfno_classOrInterfaceTypeContext.class,0); + } + public List classType_lf_classOrInterfaceType() { + return getRuleContexts(ClassType_lf_classOrInterfaceTypeContext.class); + } + public ClassType_lf_classOrInterfaceTypeContext classType_lf_classOrInterfaceType(int i) { + return getRuleContext(ClassType_lf_classOrInterfaceTypeContext.class,i); + } + public List interfaceType_lf_classOrInterfaceType() { + return getRuleContexts(InterfaceType_lf_classOrInterfaceTypeContext.class); + } + public InterfaceType_lf_classOrInterfaceTypeContext interfaceType_lf_classOrInterfaceType(int i) { + return getRuleContext(InterfaceType_lf_classOrInterfaceTypeContext.class,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 Java8Listener ) ((Java8Listener)listener).enterClassOrInterfaceType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitClassOrInterfaceType(this); + } + } + + public final ClassOrInterfaceTypeContext classOrInterfaceType() throws RecognitionException { + ClassOrInterfaceTypeContext _localctx = new ClassOrInterfaceTypeContext(_ctx, getState()); + enterRule(_localctx, 14, RULE_classOrInterfaceType); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(511); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,6,_ctx) ) { + case 1: + { + setState(509); + classType_lfno_classOrInterfaceType(); + } + break; + case 2: + { + setState(510); + interfaceType_lfno_classOrInterfaceType(); + } + break; + } + setState(517); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,8,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + setState(515); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,7,_ctx) ) { + case 1: + { + setState(513); + classType_lf_classOrInterfaceType(); + } + break; + case 2: + { + setState(514); + interfaceType_lf_classOrInterfaceType(); + } + break; + } + } + } + setState(519); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,8,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ClassTypeContext extends ParserRuleContext { + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 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 ClassOrInterfaceTypeContext classOrInterfaceType() { + return getRuleContext(ClassOrInterfaceTypeContext.class,0); + } + public TerminalNode DOT() { return getToken(Java8Parser.DOT, 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 Java8Listener ) ((Java8Listener)listener).enterClassType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitClassType(this); + } + } + + public final ClassTypeContext classType() throws RecognitionException { + ClassTypeContext _localctx = new ClassTypeContext(_ctx, getState()); + enterRule(_localctx, 16, RULE_classType); + int _la; + try { + setState(542); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,13,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(523); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==AT) { + { + { + setState(520); + annotation(); + } + } + setState(525); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(526); + match(Identifier); + setState(528); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LT) { + { + setState(527); + typeArguments(); + } + } + + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(530); + classOrInterfaceType(); + setState(531); + match(DOT); + setState(535); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==AT) { + { + { + setState(532); + annotation(); + } + } + setState(537); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(538); + match(Identifier); + setState(540); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LT) { + { + setState(539); + typeArguments(); + } + } + + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ClassType_lf_classOrInterfaceTypeContext extends ParserRuleContext { + public TerminalNode DOT() { return getToken(Java8Parser.DOT, 0); } + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 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 ClassType_lf_classOrInterfaceTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_classType_lf_classOrInterfaceType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterClassType_lf_classOrInterfaceType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitClassType_lf_classOrInterfaceType(this); + } + } + + public final ClassType_lf_classOrInterfaceTypeContext classType_lf_classOrInterfaceType() throws RecognitionException { + ClassType_lf_classOrInterfaceTypeContext _localctx = new ClassType_lf_classOrInterfaceTypeContext(_ctx, getState()); + enterRule(_localctx, 18, RULE_classType_lf_classOrInterfaceType); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(544); + match(DOT); + setState(548); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==AT) { + { + { + setState(545); + annotation(); + } + } + setState(550); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(551); + match(Identifier); + setState(553); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,15,_ctx) ) { + case 1: + { + setState(552); + typeArguments(); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ClassType_lfno_classOrInterfaceTypeContext extends ParserRuleContext { + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 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 ClassType_lfno_classOrInterfaceTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_classType_lfno_classOrInterfaceType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterClassType_lfno_classOrInterfaceType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitClassType_lfno_classOrInterfaceType(this); + } + } + + public final ClassType_lfno_classOrInterfaceTypeContext classType_lfno_classOrInterfaceType() throws RecognitionException { + ClassType_lfno_classOrInterfaceTypeContext _localctx = new ClassType_lfno_classOrInterfaceTypeContext(_ctx, getState()); + enterRule(_localctx, 20, RULE_classType_lfno_classOrInterfaceType); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(558); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==AT) { + { + { + setState(555); + annotation(); + } + } + setState(560); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(561); + match(Identifier); + setState(563); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,17,_ctx) ) { + case 1: + { + setState(562); + typeArguments(); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class InterfaceTypeContext extends ParserRuleContext { + public ClassTypeContext classType() { + return getRuleContext(ClassTypeContext.class,0); + } + public InterfaceTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_interfaceType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterInterfaceType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitInterfaceType(this); + } + } + + public final InterfaceTypeContext interfaceType() throws RecognitionException { + InterfaceTypeContext _localctx = new InterfaceTypeContext(_ctx, getState()); + enterRule(_localctx, 22, RULE_interfaceType); + try { + enterOuterAlt(_localctx, 1); + { + setState(565); + classType(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class InterfaceType_lf_classOrInterfaceTypeContext extends ParserRuleContext { + public ClassType_lf_classOrInterfaceTypeContext classType_lf_classOrInterfaceType() { + return getRuleContext(ClassType_lf_classOrInterfaceTypeContext.class,0); + } + public InterfaceType_lf_classOrInterfaceTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_interfaceType_lf_classOrInterfaceType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterInterfaceType_lf_classOrInterfaceType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitInterfaceType_lf_classOrInterfaceType(this); + } + } + + public final InterfaceType_lf_classOrInterfaceTypeContext interfaceType_lf_classOrInterfaceType() throws RecognitionException { + InterfaceType_lf_classOrInterfaceTypeContext _localctx = new InterfaceType_lf_classOrInterfaceTypeContext(_ctx, getState()); + enterRule(_localctx, 24, RULE_interfaceType_lf_classOrInterfaceType); + try { + enterOuterAlt(_localctx, 1); + { + setState(567); + classType_lf_classOrInterfaceType(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class InterfaceType_lfno_classOrInterfaceTypeContext extends ParserRuleContext { + public ClassType_lfno_classOrInterfaceTypeContext classType_lfno_classOrInterfaceType() { + return getRuleContext(ClassType_lfno_classOrInterfaceTypeContext.class,0); + } + public InterfaceType_lfno_classOrInterfaceTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_interfaceType_lfno_classOrInterfaceType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterInterfaceType_lfno_classOrInterfaceType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitInterfaceType_lfno_classOrInterfaceType(this); + } + } + + public final InterfaceType_lfno_classOrInterfaceTypeContext interfaceType_lfno_classOrInterfaceType() throws RecognitionException { + InterfaceType_lfno_classOrInterfaceTypeContext _localctx = new InterfaceType_lfno_classOrInterfaceTypeContext(_ctx, getState()); + enterRule(_localctx, 26, RULE_interfaceType_lfno_classOrInterfaceType); + try { + enterOuterAlt(_localctx, 1); + { + setState(569); + classType_lfno_classOrInterfaceType(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class TypeVariableContext extends ParserRuleContext { + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public List annotation() { + return getRuleContexts(AnnotationContext.class); + } + public AnnotationContext annotation(int i) { + return getRuleContext(AnnotationContext.class,i); + } + public TypeVariableContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_typeVariable; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterTypeVariable(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitTypeVariable(this); + } + } + + public final TypeVariableContext typeVariable() throws RecognitionException { + TypeVariableContext _localctx = new TypeVariableContext(_ctx, getState()); + enterRule(_localctx, 28, RULE_typeVariable); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(574); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==AT) { + { + { + setState(571); + annotation(); + } + } + setState(576); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(577); + match(Identifier); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ArrayTypeContext extends ParserRuleContext { + public PrimitiveTypeContext primitiveType() { + return getRuleContext(PrimitiveTypeContext.class,0); + } + public DimsContext dims() { + return getRuleContext(DimsContext.class,0); + } + public ClassOrInterfaceTypeContext classOrInterfaceType() { + return getRuleContext(ClassOrInterfaceTypeContext.class,0); + } + public TypeVariableContext typeVariable() { + return getRuleContext(TypeVariableContext.class,0); + } + public ArrayTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_arrayType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterArrayType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitArrayType(this); + } + } + + public final ArrayTypeContext arrayType() throws RecognitionException { + ArrayTypeContext _localctx = new ArrayTypeContext(_ctx, getState()); + enterRule(_localctx, 30, RULE_arrayType); + try { + setState(588); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,19,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(579); + primitiveType(); + setState(580); + dims(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(582); + classOrInterfaceType(); + setState(583); + dims(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(585); + typeVariable(); + setState(586); + dims(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class DimsContext extends ParserRuleContext { + public List LBRACK() { return getTokens(Java8Parser.LBRACK); } + public TerminalNode LBRACK(int i) { + return getToken(Java8Parser.LBRACK, i); + } + public List RBRACK() { return getTokens(Java8Parser.RBRACK); } + public TerminalNode RBRACK(int i) { + return getToken(Java8Parser.RBRACK, i); + } + public List annotation() { + return getRuleContexts(AnnotationContext.class); + } + public AnnotationContext annotation(int i) { + return getRuleContext(AnnotationContext.class,i); + } + public DimsContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_dims; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterDims(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitDims(this); + } + } + + public final DimsContext dims() throws RecognitionException { + DimsContext _localctx = new DimsContext(_ctx, getState()); + enterRule(_localctx, 32, RULE_dims); + int _la; + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(593); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==AT) { + { + { + setState(590); + annotation(); + } + } + setState(595); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(596); + match(LBRACK); + setState(597); + match(RBRACK); + setState(608); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,22,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(601); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==AT) { + { + { + setState(598); + annotation(); + } + } + setState(603); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(604); + match(LBRACK); + setState(605); + match(RBRACK); + } + } + } + setState(610); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,22,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class TypeParameterContext extends ParserRuleContext { + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public List typeParameterModifier() { + return getRuleContexts(TypeParameterModifierContext.class); + } + public TypeParameterModifierContext typeParameterModifier(int i) { + return getRuleContext(TypeParameterModifierContext.class,i); + } + 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 Java8Listener ) ((Java8Listener)listener).enterTypeParameter(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitTypeParameter(this); + } + } + + public final TypeParameterContext typeParameter() throws RecognitionException { + TypeParameterContext _localctx = new TypeParameterContext(_ctx, getState()); + enterRule(_localctx, 34, RULE_typeParameter); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(614); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==AT) { + { + { + setState(611); + typeParameterModifier(); + } + } + setState(616); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(617); + match(Identifier); + setState(619); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==EXTENDS) { + { + setState(618); + typeBound(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class TypeParameterModifierContext extends ParserRuleContext { + public AnnotationContext annotation() { + return getRuleContext(AnnotationContext.class,0); + } + public TypeParameterModifierContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_typeParameterModifier; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterTypeParameterModifier(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitTypeParameterModifier(this); + } + } + + public final TypeParameterModifierContext typeParameterModifier() throws RecognitionException { + TypeParameterModifierContext _localctx = new TypeParameterModifierContext(_ctx, getState()); + enterRule(_localctx, 36, RULE_typeParameterModifier); + try { + enterOuterAlt(_localctx, 1); + { + setState(621); + annotation(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class TypeBoundContext extends ParserRuleContext { + public TerminalNode EXTENDS() { return getToken(Java8Parser.EXTENDS, 0); } + public TypeVariableContext typeVariable() { + return getRuleContext(TypeVariableContext.class,0); + } + public ClassOrInterfaceTypeContext classOrInterfaceType() { + return getRuleContext(ClassOrInterfaceTypeContext.class,0); + } + public List additionalBound() { + return getRuleContexts(AdditionalBoundContext.class); + } + public AdditionalBoundContext additionalBound(int i) { + return getRuleContext(AdditionalBoundContext.class,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 Java8Listener ) ((Java8Listener)listener).enterTypeBound(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitTypeBound(this); + } + } + + public final TypeBoundContext typeBound() throws RecognitionException { + TypeBoundContext _localctx = new TypeBoundContext(_ctx, getState()); + enterRule(_localctx, 38, RULE_typeBound); + int _la; + try { + setState(633); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,26,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(623); + match(EXTENDS); + setState(624); + typeVariable(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(625); + match(EXTENDS); + setState(626); + classOrInterfaceType(); + setState(630); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==BITAND) { + { + { + setState(627); + additionalBound(); + } + } + setState(632); + _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; + } + + @SuppressWarnings("CheckReturnValue") + public static class AdditionalBoundContext extends ParserRuleContext { + public TerminalNode BITAND() { return getToken(Java8Parser.BITAND, 0); } + public InterfaceTypeContext interfaceType() { + return getRuleContext(InterfaceTypeContext.class,0); + } + public AdditionalBoundContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_additionalBound; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterAdditionalBound(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitAdditionalBound(this); + } + } + + public final AdditionalBoundContext additionalBound() throws RecognitionException { + AdditionalBoundContext _localctx = new AdditionalBoundContext(_ctx, getState()); + enterRule(_localctx, 40, RULE_additionalBound); + try { + enterOuterAlt(_localctx, 1); + { + setState(635); + match(BITAND); + setState(636); + interfaceType(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class TypeArgumentsContext extends ParserRuleContext { + public TerminalNode LT() { return getToken(Java8Parser.LT, 0); } + public TypeArgumentListContext typeArgumentList() { + return getRuleContext(TypeArgumentListContext.class,0); + } + public TerminalNode GT() { return getToken(Java8Parser.GT, 0); } + 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 Java8Listener ) ((Java8Listener)listener).enterTypeArguments(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitTypeArguments(this); + } + } + + public final TypeArgumentsContext typeArguments() throws RecognitionException { + TypeArgumentsContext _localctx = new TypeArgumentsContext(_ctx, getState()); + enterRule(_localctx, 42, RULE_typeArguments); + try { + enterOuterAlt(_localctx, 1); + { + setState(638); + match(LT); + setState(639); + typeArgumentList(); + setState(640); + match(GT); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class TypeArgumentListContext extends ParserRuleContext { + public List typeArgument() { + return getRuleContexts(TypeArgumentContext.class); + } + public TypeArgumentContext typeArgument(int i) { + return getRuleContext(TypeArgumentContext.class,i); + } + public List COMMA() { return getTokens(Java8Parser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(Java8Parser.COMMA, i); + } + public TypeArgumentListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_typeArgumentList; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterTypeArgumentList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitTypeArgumentList(this); + } + } + + public final TypeArgumentListContext typeArgumentList() throws RecognitionException { + TypeArgumentListContext _localctx = new TypeArgumentListContext(_ctx, getState()); + enterRule(_localctx, 44, RULE_typeArgumentList); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(642); + typeArgument(); + setState(647); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(643); + match(COMMA); + setState(644); + typeArgument(); + } + } + setState(649); + _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; + } + + @SuppressWarnings("CheckReturnValue") + public static class TypeArgumentContext extends ParserRuleContext { + public ReferenceTypeContext referenceType() { + return getRuleContext(ReferenceTypeContext.class,0); + } + public WildcardContext wildcard() { + return getRuleContext(WildcardContext.class,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 Java8Listener ) ((Java8Listener)listener).enterTypeArgument(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitTypeArgument(this); + } + } + + public final TypeArgumentContext typeArgument() throws RecognitionException { + TypeArgumentContext _localctx = new TypeArgumentContext(_ctx, getState()); + enterRule(_localctx, 46, RULE_typeArgument); + try { + setState(652); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,28,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(650); + referenceType(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(651); + wildcard(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class WildcardContext extends ParserRuleContext { + public TerminalNode QUESTION() { return getToken(Java8Parser.QUESTION, 0); } + public List annotation() { + return getRuleContexts(AnnotationContext.class); + } + public AnnotationContext annotation(int i) { + return getRuleContext(AnnotationContext.class,i); + } + public WildcardBoundsContext wildcardBounds() { + return getRuleContext(WildcardBoundsContext.class,0); + } + public WildcardContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_wildcard; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterWildcard(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitWildcard(this); + } + } + + public final WildcardContext wildcard() throws RecognitionException { + WildcardContext _localctx = new WildcardContext(_ctx, getState()); + enterRule(_localctx, 48, RULE_wildcard); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(657); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==AT) { + { + { + setState(654); + annotation(); + } + } + setState(659); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(660); + match(QUESTION); + setState(662); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==EXTENDS || _la==SUPER) { + { + setState(661); + wildcardBounds(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class WildcardBoundsContext extends ParserRuleContext { + public TerminalNode EXTENDS() { return getToken(Java8Parser.EXTENDS, 0); } + public ReferenceTypeContext referenceType() { + return getRuleContext(ReferenceTypeContext.class,0); + } + public TerminalNode SUPER() { return getToken(Java8Parser.SUPER, 0); } + public WildcardBoundsContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_wildcardBounds; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterWildcardBounds(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitWildcardBounds(this); + } + } + + public final WildcardBoundsContext wildcardBounds() throws RecognitionException { + WildcardBoundsContext _localctx = new WildcardBoundsContext(_ctx, getState()); + enterRule(_localctx, 50, RULE_wildcardBounds); + try { + setState(668); + _errHandler.sync(this); + switch (_input.LA(1)) { + case EXTENDS: + enterOuterAlt(_localctx, 1); + { + setState(664); + match(EXTENDS); + setState(665); + referenceType(); + } + break; + case SUPER: + enterOuterAlt(_localctx, 2); + { + setState(666); + match(SUPER); + setState(667); + referenceType(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class PackageNameContext extends ParserRuleContext { + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public PackageNameContext packageName() { + return getRuleContext(PackageNameContext.class,0); + } + public TerminalNode DOT() { return getToken(Java8Parser.DOT, 0); } + public PackageNameContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_packageName; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterPackageName(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitPackageName(this); + } + } + + public final PackageNameContext packageName() throws RecognitionException { + return packageName(0); + } + + private PackageNameContext packageName(int _p) throws RecognitionException { + ParserRuleContext _parentctx = _ctx; + int _parentState = getState(); + PackageNameContext _localctx = new PackageNameContext(_ctx, _parentState); + PackageNameContext _prevctx = _localctx; + int _startState = 52; + enterRecursionRule(_localctx, 52, RULE_packageName, _p); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + { + setState(671); + match(Identifier); + } + _ctx.stop = _input.LT(-1); + setState(678); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,32,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + if ( _parseListeners!=null ) triggerExitRuleEvent(); + _prevctx = _localctx; + { + { + _localctx = new PackageNameContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_packageName); + setState(673); + if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); + setState(674); + match(DOT); + setState(675); + match(Identifier); + } + } + } + setState(680); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,32,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + unrollRecursionContexts(_parentctx); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class TypeNameContext extends ParserRuleContext { + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public PackageOrTypeNameContext packageOrTypeName() { + return getRuleContext(PackageOrTypeNameContext.class,0); + } + public TerminalNode DOT() { return getToken(Java8Parser.DOT, 0); } + public TypeNameContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_typeName; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterTypeName(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitTypeName(this); + } + } + + public final TypeNameContext typeName() throws RecognitionException { + TypeNameContext _localctx = new TypeNameContext(_ctx, getState()); + enterRule(_localctx, 54, RULE_typeName); + try { + setState(686); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,33,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(681); + match(Identifier); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(682); + packageOrTypeName(0); + setState(683); + match(DOT); + setState(684); + match(Identifier); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class PackageOrTypeNameContext extends ParserRuleContext { + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public PackageOrTypeNameContext packageOrTypeName() { + return getRuleContext(PackageOrTypeNameContext.class,0); + } + public TerminalNode DOT() { return getToken(Java8Parser.DOT, 0); } + public PackageOrTypeNameContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_packageOrTypeName; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterPackageOrTypeName(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitPackageOrTypeName(this); + } + } + + public final PackageOrTypeNameContext packageOrTypeName() throws RecognitionException { + return packageOrTypeName(0); + } + + private PackageOrTypeNameContext packageOrTypeName(int _p) throws RecognitionException { + ParserRuleContext _parentctx = _ctx; + int _parentState = getState(); + PackageOrTypeNameContext _localctx = new PackageOrTypeNameContext(_ctx, _parentState); + PackageOrTypeNameContext _prevctx = _localctx; + int _startState = 56; + enterRecursionRule(_localctx, 56, RULE_packageOrTypeName, _p); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + { + setState(689); + match(Identifier); + } + _ctx.stop = _input.LT(-1); + setState(696); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,34,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + if ( _parseListeners!=null ) triggerExitRuleEvent(); + _prevctx = _localctx; + { + { + _localctx = new PackageOrTypeNameContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_packageOrTypeName); + setState(691); + if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); + setState(692); + match(DOT); + setState(693); + match(Identifier); + } + } + } + setState(698); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,34,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + unrollRecursionContexts(_parentctx); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ExpressionNameContext extends ParserRuleContext { + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public AmbiguousNameContext ambiguousName() { + return getRuleContext(AmbiguousNameContext.class,0); + } + public TerminalNode DOT() { return getToken(Java8Parser.DOT, 0); } + public ExpressionNameContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_expressionName; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterExpressionName(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitExpressionName(this); + } + } + + public final ExpressionNameContext expressionName() throws RecognitionException { + ExpressionNameContext _localctx = new ExpressionNameContext(_ctx, getState()); + enterRule(_localctx, 58, RULE_expressionName); + try { + setState(704); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,35,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(699); + match(Identifier); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(700); + ambiguousName(0); + setState(701); + match(DOT); + setState(702); + match(Identifier); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class MethodNameContext extends ParserRuleContext { + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public MethodNameContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_methodName; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterMethodName(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitMethodName(this); + } + } + + public final MethodNameContext methodName() throws RecognitionException { + MethodNameContext _localctx = new MethodNameContext(_ctx, getState()); + enterRule(_localctx, 60, RULE_methodName); + try { + enterOuterAlt(_localctx, 1); + { + setState(706); + match(Identifier); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class AmbiguousNameContext extends ParserRuleContext { + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public AmbiguousNameContext ambiguousName() { + return getRuleContext(AmbiguousNameContext.class,0); + } + public TerminalNode DOT() { return getToken(Java8Parser.DOT, 0); } + public AmbiguousNameContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_ambiguousName; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterAmbiguousName(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitAmbiguousName(this); + } + } + + public final AmbiguousNameContext ambiguousName() throws RecognitionException { + return ambiguousName(0); + } + + private AmbiguousNameContext ambiguousName(int _p) throws RecognitionException { + ParserRuleContext _parentctx = _ctx; + int _parentState = getState(); + AmbiguousNameContext _localctx = new AmbiguousNameContext(_ctx, _parentState); + AmbiguousNameContext _prevctx = _localctx; + int _startState = 62; + enterRecursionRule(_localctx, 62, RULE_ambiguousName, _p); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + { + setState(709); + match(Identifier); + } + _ctx.stop = _input.LT(-1); + setState(716); + _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 ) { + if ( _parseListeners!=null ) triggerExitRuleEvent(); + _prevctx = _localctx; + { + { + _localctx = new AmbiguousNameContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_ambiguousName); + setState(711); + if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); + setState(712); + match(DOT); + setState(713); + match(Identifier); + } + } + } + setState(718); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,36,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + unrollRecursionContexts(_parentctx); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class CompilationUnitContext extends ParserRuleContext { + public TerminalNode EOF() { return getToken(Java8Parser.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 Java8Listener ) ((Java8Listener)listener).enterCompilationUnit(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitCompilationUnit(this); + } + } + + public final CompilationUnitContext compilationUnit() throws RecognitionException { + CompilationUnitContext _localctx = new CompilationUnitContext(_ctx, getState()); + enterRule(_localctx, 64, RULE_compilationUnit); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(720); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,37,_ctx) ) { + case 1: + { + setState(719); + packageDeclaration(); + } + break; + } + setState(725); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==IMPORT) { + { + { + setState(722); + importDeclaration(); + } + } + setState(727); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(731); + _errHandler.sync(this); + _la = _input.LA(1); + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & -9223371151822749182L) != 0) || _la==AT) { + { + { + setState(728); + typeDeclaration(); + } + } + setState(733); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(734); + match(EOF); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class PackageDeclarationContext extends ParserRuleContext { + public TerminalNode PACKAGE() { return getToken(Java8Parser.PACKAGE, 0); } + public List Identifier() { return getTokens(Java8Parser.Identifier); } + public TerminalNode Identifier(int i) { + return getToken(Java8Parser.Identifier, i); + } + public TerminalNode SEMI() { return getToken(Java8Parser.SEMI, 0); } + public List packageModifier() { + return getRuleContexts(PackageModifierContext.class); + } + public PackageModifierContext packageModifier(int i) { + return getRuleContext(PackageModifierContext.class,i); + } + public List DOT() { return getTokens(Java8Parser.DOT); } + public TerminalNode DOT(int i) { + return getToken(Java8Parser.DOT, 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 Java8Listener ) ((Java8Listener)listener).enterPackageDeclaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitPackageDeclaration(this); + } + } + + public final PackageDeclarationContext packageDeclaration() throws RecognitionException { + PackageDeclarationContext _localctx = new PackageDeclarationContext(_ctx, getState()); + enterRule(_localctx, 66, RULE_packageDeclaration); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(739); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==AT) { + { + { + setState(736); + packageModifier(); + } + } + setState(741); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(742); + match(PACKAGE); + setState(743); + match(Identifier); + setState(748); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==DOT) { + { + { + setState(744); + match(DOT); + setState(745); + match(Identifier); + } + } + setState(750); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(751); + match(SEMI); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class PackageModifierContext extends ParserRuleContext { + public AnnotationContext annotation() { + return getRuleContext(AnnotationContext.class,0); + } + public PackageModifierContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_packageModifier; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterPackageModifier(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitPackageModifier(this); + } + } + + public final PackageModifierContext packageModifier() throws RecognitionException { + PackageModifierContext _localctx = new PackageModifierContext(_ctx, getState()); + enterRule(_localctx, 68, RULE_packageModifier); + try { + enterOuterAlt(_localctx, 1); + { + setState(753); + annotation(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ImportDeclarationContext extends ParserRuleContext { + public SingleTypeImportDeclarationContext singleTypeImportDeclaration() { + return getRuleContext(SingleTypeImportDeclarationContext.class,0); + } + public TypeImportOnDemandDeclarationContext typeImportOnDemandDeclaration() { + return getRuleContext(TypeImportOnDemandDeclarationContext.class,0); + } + public SingleStaticImportDeclarationContext singleStaticImportDeclaration() { + return getRuleContext(SingleStaticImportDeclarationContext.class,0); + } + public StaticImportOnDemandDeclarationContext staticImportOnDemandDeclaration() { + return getRuleContext(StaticImportOnDemandDeclarationContext.class,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 Java8Listener ) ((Java8Listener)listener).enterImportDeclaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitImportDeclaration(this); + } + } + + public final ImportDeclarationContext importDeclaration() throws RecognitionException { + ImportDeclarationContext _localctx = new ImportDeclarationContext(_ctx, getState()); + enterRule(_localctx, 70, RULE_importDeclaration); + try { + setState(759); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,42,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(755); + singleTypeImportDeclaration(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(756); + typeImportOnDemandDeclaration(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(757); + singleStaticImportDeclaration(); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(758); + staticImportOnDemandDeclaration(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class SingleTypeImportDeclarationContext extends ParserRuleContext { + public TerminalNode IMPORT() { return getToken(Java8Parser.IMPORT, 0); } + public TypeNameContext typeName() { + return getRuleContext(TypeNameContext.class,0); + } + public TerminalNode SEMI() { return getToken(Java8Parser.SEMI, 0); } + public SingleTypeImportDeclarationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_singleTypeImportDeclaration; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterSingleTypeImportDeclaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitSingleTypeImportDeclaration(this); + } + } + + public final SingleTypeImportDeclarationContext singleTypeImportDeclaration() throws RecognitionException { + SingleTypeImportDeclarationContext _localctx = new SingleTypeImportDeclarationContext(_ctx, getState()); + enterRule(_localctx, 72, RULE_singleTypeImportDeclaration); + try { + enterOuterAlt(_localctx, 1); + { + setState(761); + match(IMPORT); + setState(762); + typeName(); + setState(763); + match(SEMI); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class TypeImportOnDemandDeclarationContext extends ParserRuleContext { + public TerminalNode IMPORT() { return getToken(Java8Parser.IMPORT, 0); } + public PackageOrTypeNameContext packageOrTypeName() { + return getRuleContext(PackageOrTypeNameContext.class,0); + } + public TerminalNode DOT() { return getToken(Java8Parser.DOT, 0); } + public TerminalNode MUL() { return getToken(Java8Parser.MUL, 0); } + public TerminalNode SEMI() { return getToken(Java8Parser.SEMI, 0); } + public TypeImportOnDemandDeclarationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_typeImportOnDemandDeclaration; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterTypeImportOnDemandDeclaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitTypeImportOnDemandDeclaration(this); + } + } + + public final TypeImportOnDemandDeclarationContext typeImportOnDemandDeclaration() throws RecognitionException { + TypeImportOnDemandDeclarationContext _localctx = new TypeImportOnDemandDeclarationContext(_ctx, getState()); + enterRule(_localctx, 74, RULE_typeImportOnDemandDeclaration); + try { + enterOuterAlt(_localctx, 1); + { + setState(765); + match(IMPORT); + setState(766); + packageOrTypeName(0); + setState(767); + match(DOT); + setState(768); + match(MUL); + setState(769); + match(SEMI); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class SingleStaticImportDeclarationContext extends ParserRuleContext { + public TerminalNode IMPORT() { return getToken(Java8Parser.IMPORT, 0); } + public TerminalNode STATIC() { return getToken(Java8Parser.STATIC, 0); } + public TypeNameContext typeName() { + return getRuleContext(TypeNameContext.class,0); + } + public TerminalNode DOT() { return getToken(Java8Parser.DOT, 0); } + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public TerminalNode SEMI() { return getToken(Java8Parser.SEMI, 0); } + public SingleStaticImportDeclarationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_singleStaticImportDeclaration; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterSingleStaticImportDeclaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitSingleStaticImportDeclaration(this); + } + } + + public final SingleStaticImportDeclarationContext singleStaticImportDeclaration() throws RecognitionException { + SingleStaticImportDeclarationContext _localctx = new SingleStaticImportDeclarationContext(_ctx, getState()); + enterRule(_localctx, 76, RULE_singleStaticImportDeclaration); + try { + enterOuterAlt(_localctx, 1); + { + setState(771); + match(IMPORT); + setState(772); + match(STATIC); + setState(773); + typeName(); + setState(774); + match(DOT); + setState(775); + match(Identifier); + setState(776); + match(SEMI); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class StaticImportOnDemandDeclarationContext extends ParserRuleContext { + public TerminalNode IMPORT() { return getToken(Java8Parser.IMPORT, 0); } + public TerminalNode STATIC() { return getToken(Java8Parser.STATIC, 0); } + public TypeNameContext typeName() { + return getRuleContext(TypeNameContext.class,0); + } + public TerminalNode DOT() { return getToken(Java8Parser.DOT, 0); } + public TerminalNode MUL() { return getToken(Java8Parser.MUL, 0); } + public TerminalNode SEMI() { return getToken(Java8Parser.SEMI, 0); } + public StaticImportOnDemandDeclarationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_staticImportOnDemandDeclaration; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterStaticImportOnDemandDeclaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitStaticImportOnDemandDeclaration(this); + } + } + + public final StaticImportOnDemandDeclarationContext staticImportOnDemandDeclaration() throws RecognitionException { + StaticImportOnDemandDeclarationContext _localctx = new StaticImportOnDemandDeclarationContext(_ctx, getState()); + enterRule(_localctx, 78, RULE_staticImportOnDemandDeclaration); + try { + enterOuterAlt(_localctx, 1); + { + setState(778); + match(IMPORT); + setState(779); + match(STATIC); + setState(780); + typeName(); + setState(781); + match(DOT); + setState(782); + match(MUL); + setState(783); + match(SEMI); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class TypeDeclarationContext extends ParserRuleContext { + public ClassDeclarationContext classDeclaration() { + return getRuleContext(ClassDeclarationContext.class,0); + } + public InterfaceDeclarationContext interfaceDeclaration() { + return getRuleContext(InterfaceDeclarationContext.class,0); + } + public TerminalNode SEMI() { return getToken(Java8Parser.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 Java8Listener ) ((Java8Listener)listener).enterTypeDeclaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitTypeDeclaration(this); + } + } + + public final TypeDeclarationContext typeDeclaration() throws RecognitionException { + TypeDeclarationContext _localctx = new TypeDeclarationContext(_ctx, getState()); + enterRule(_localctx, 80, RULE_typeDeclaration); + try { + setState(788); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,43,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(785); + classDeclaration(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(786); + interfaceDeclaration(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(787); + match(SEMI); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ClassDeclarationContext extends ParserRuleContext { + public NormalClassDeclarationContext normalClassDeclaration() { + return getRuleContext(NormalClassDeclarationContext.class,0); + } + public EnumDeclarationContext enumDeclaration() { + return getRuleContext(EnumDeclarationContext.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 Java8Listener ) ((Java8Listener)listener).enterClassDeclaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitClassDeclaration(this); + } + } + + public final ClassDeclarationContext classDeclaration() throws RecognitionException { + ClassDeclarationContext _localctx = new ClassDeclarationContext(_ctx, getState()); + enterRule(_localctx, 82, RULE_classDeclaration); + try { + setState(792); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,44,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(790); + normalClassDeclaration(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(791); + enumDeclaration(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class NormalClassDeclarationContext extends ParserRuleContext { + public TerminalNode CLASS() { return getToken(Java8Parser.CLASS, 0); } + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public ClassBodyContext classBody() { + return getRuleContext(ClassBodyContext.class,0); + } + public List classModifier() { + return getRuleContexts(ClassModifierContext.class); + } + public ClassModifierContext classModifier(int i) { + return getRuleContext(ClassModifierContext.class,i); + } + public TypeParametersContext typeParameters() { + return getRuleContext(TypeParametersContext.class,0); + } + public SuperclassContext superclass() { + return getRuleContext(SuperclassContext.class,0); + } + public SuperinterfacesContext superinterfaces() { + return getRuleContext(SuperinterfacesContext.class,0); + } + public NormalClassDeclarationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_normalClassDeclaration; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterNormalClassDeclaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitNormalClassDeclaration(this); + } + } + + public final NormalClassDeclarationContext normalClassDeclaration() throws RecognitionException { + NormalClassDeclarationContext _localctx = new NormalClassDeclarationContext(_ctx, getState()); + enterRule(_localctx, 84, RULE_normalClassDeclaration); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(797); + _errHandler.sync(this); + _la = _input.LA(1); + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & 884763525122L) != 0) || _la==AT) { + { + { + setState(794); + classModifier(); + } + } + setState(799); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(800); + match(CLASS); + setState(801); + match(Identifier); + setState(803); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LT) { + { + setState(802); + typeParameters(); + } + } + + setState(806); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==EXTENDS) { + { + setState(805); + superclass(); + } + } + + setState(809); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==IMPLEMENTS) { + { + setState(808); + superinterfaces(); + } + } + + setState(811); + classBody(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ClassModifierContext extends ParserRuleContext { + public AnnotationContext annotation() { + return getRuleContext(AnnotationContext.class,0); + } + public TerminalNode PUBLIC() { return getToken(Java8Parser.PUBLIC, 0); } + public TerminalNode PROTECTED() { return getToken(Java8Parser.PROTECTED, 0); } + public TerminalNode PRIVATE() { return getToken(Java8Parser.PRIVATE, 0); } + public TerminalNode ABSTRACT() { return getToken(Java8Parser.ABSTRACT, 0); } + public TerminalNode STATIC() { return getToken(Java8Parser.STATIC, 0); } + public TerminalNode FINAL() { return getToken(Java8Parser.FINAL, 0); } + public TerminalNode STRICTFP() { return getToken(Java8Parser.STRICTFP, 0); } + public ClassModifierContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_classModifier; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterClassModifier(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitClassModifier(this); + } + } + + public final ClassModifierContext classModifier() throws RecognitionException { + ClassModifierContext _localctx = new ClassModifierContext(_ctx, getState()); + enterRule(_localctx, 86, RULE_classModifier); + try { + setState(821); + _errHandler.sync(this); + switch (_input.LA(1)) { + case AT: + enterOuterAlt(_localctx, 1); + { + setState(813); + annotation(); + } + break; + case PUBLIC: + enterOuterAlt(_localctx, 2); + { + setState(814); + match(PUBLIC); + } + break; + case PROTECTED: + enterOuterAlt(_localctx, 3); + { + setState(815); + match(PROTECTED); + } + break; + case PRIVATE: + enterOuterAlt(_localctx, 4); + { + setState(816); + match(PRIVATE); + } + break; + case ABSTRACT: + enterOuterAlt(_localctx, 5); + { + setState(817); + match(ABSTRACT); + } + break; + case STATIC: + enterOuterAlt(_localctx, 6); + { + setState(818); + match(STATIC); + } + break; + case FINAL: + enterOuterAlt(_localctx, 7); + { + setState(819); + match(FINAL); + } + break; + case STRICTFP: + enterOuterAlt(_localctx, 8); + { + setState(820); + 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; + } + + @SuppressWarnings("CheckReturnValue") + public static class TypeParametersContext extends ParserRuleContext { + public TerminalNode LT() { return getToken(Java8Parser.LT, 0); } + public TypeParameterListContext typeParameterList() { + return getRuleContext(TypeParameterListContext.class,0); + } + public TerminalNode GT() { return getToken(Java8Parser.GT, 0); } + 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 Java8Listener ) ((Java8Listener)listener).enterTypeParameters(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitTypeParameters(this); + } + } + + public final TypeParametersContext typeParameters() throws RecognitionException { + TypeParametersContext _localctx = new TypeParametersContext(_ctx, getState()); + enterRule(_localctx, 88, RULE_typeParameters); + try { + enterOuterAlt(_localctx, 1); + { + setState(823); + match(LT); + setState(824); + typeParameterList(); + setState(825); + match(GT); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class TypeParameterListContext extends ParserRuleContext { + public List typeParameter() { + return getRuleContexts(TypeParameterContext.class); + } + public TypeParameterContext typeParameter(int i) { + return getRuleContext(TypeParameterContext.class,i); + } + public List COMMA() { return getTokens(Java8Parser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(Java8Parser.COMMA, i); + } + public TypeParameterListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_typeParameterList; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterTypeParameterList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitTypeParameterList(this); + } + } + + public final TypeParameterListContext typeParameterList() throws RecognitionException { + TypeParameterListContext _localctx = new TypeParameterListContext(_ctx, getState()); + enterRule(_localctx, 90, RULE_typeParameterList); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(827); + typeParameter(); + setState(832); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(828); + match(COMMA); + setState(829); + typeParameter(); + } + } + setState(834); + _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; + } + + @SuppressWarnings("CheckReturnValue") + public static class SuperclassContext extends ParserRuleContext { + public TerminalNode EXTENDS() { return getToken(Java8Parser.EXTENDS, 0); } + public ClassTypeContext classType() { + return getRuleContext(ClassTypeContext.class,0); + } + public SuperclassContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_superclass; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterSuperclass(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitSuperclass(this); + } + } + + public final SuperclassContext superclass() throws RecognitionException { + SuperclassContext _localctx = new SuperclassContext(_ctx, getState()); + enterRule(_localctx, 92, RULE_superclass); + try { + enterOuterAlt(_localctx, 1); + { + setState(835); + match(EXTENDS); + setState(836); + classType(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class SuperinterfacesContext extends ParserRuleContext { + public TerminalNode IMPLEMENTS() { return getToken(Java8Parser.IMPLEMENTS, 0); } + public InterfaceTypeListContext interfaceTypeList() { + return getRuleContext(InterfaceTypeListContext.class,0); + } + public SuperinterfacesContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_superinterfaces; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterSuperinterfaces(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitSuperinterfaces(this); + } + } + + public final SuperinterfacesContext superinterfaces() throws RecognitionException { + SuperinterfacesContext _localctx = new SuperinterfacesContext(_ctx, getState()); + enterRule(_localctx, 94, RULE_superinterfaces); + try { + enterOuterAlt(_localctx, 1); + { + setState(838); + match(IMPLEMENTS); + setState(839); + interfaceTypeList(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class InterfaceTypeListContext extends ParserRuleContext { + public List interfaceType() { + return getRuleContexts(InterfaceTypeContext.class); + } + public InterfaceTypeContext interfaceType(int i) { + return getRuleContext(InterfaceTypeContext.class,i); + } + public List COMMA() { return getTokens(Java8Parser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(Java8Parser.COMMA, i); + } + public InterfaceTypeListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_interfaceTypeList; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterInterfaceTypeList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitInterfaceTypeList(this); + } + } + + public final InterfaceTypeListContext interfaceTypeList() throws RecognitionException { + InterfaceTypeListContext _localctx = new InterfaceTypeListContext(_ctx, getState()); + enterRule(_localctx, 96, RULE_interfaceTypeList); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(841); + interfaceType(); + setState(846); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(842); + match(COMMA); + setState(843); + interfaceType(); + } + } + setState(848); + _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; + } + + @SuppressWarnings("CheckReturnValue") + public static class ClassBodyContext extends ParserRuleContext { + public TerminalNode LBRACE() { return getToken(Java8Parser.LBRACE, 0); } + public TerminalNode RBRACE() { return getToken(Java8Parser.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 Java8Listener ) ((Java8Listener)listener).enterClassBody(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitClassBody(this); + } + } + + public final ClassBodyContext classBody() throws RecognitionException { + ClassBodyContext _localctx = new ClassBodyContext(_ctx, getState()); + enterRule(_localctx, 98, RULE_classBody); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(849); + match(LBRACE); + setState(853); + _errHandler.sync(this); + _la = _input.LA(1); + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & -8645991068613655766L) != 0) || ((((_la - 68)) & ~0x3f) == 0 && ((1L << (_la - 68)) & 51539607553L) != 0)) { + { + { + setState(850); + classBodyDeclaration(); + } + } + setState(855); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(856); + match(RBRACE); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ClassBodyDeclarationContext extends ParserRuleContext { + public ClassMemberDeclarationContext classMemberDeclaration() { + return getRuleContext(ClassMemberDeclarationContext.class,0); + } + public InstanceInitializerContext instanceInitializer() { + return getRuleContext(InstanceInitializerContext.class,0); + } + public StaticInitializerContext staticInitializer() { + return getRuleContext(StaticInitializerContext.class,0); + } + public ConstructorDeclarationContext constructorDeclaration() { + return getRuleContext(ConstructorDeclarationContext.class,0); + } + 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 Java8Listener ) ((Java8Listener)listener).enterClassBodyDeclaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitClassBodyDeclaration(this); + } + } + + public final ClassBodyDeclarationContext classBodyDeclaration() throws RecognitionException { + ClassBodyDeclarationContext _localctx = new ClassBodyDeclarationContext(_ctx, getState()); + enterRule(_localctx, 100, RULE_classBodyDeclaration); + try { + setState(862); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,53,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(858); + classMemberDeclaration(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(859); + instanceInitializer(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(860); + staticInitializer(); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(861); + constructorDeclaration(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ClassMemberDeclarationContext extends ParserRuleContext { + public FieldDeclarationContext fieldDeclaration() { + return getRuleContext(FieldDeclarationContext.class,0); + } + public MethodDeclarationContext methodDeclaration() { + return getRuleContext(MethodDeclarationContext.class,0); + } + public ClassDeclarationContext classDeclaration() { + return getRuleContext(ClassDeclarationContext.class,0); + } + public InterfaceDeclarationContext interfaceDeclaration() { + return getRuleContext(InterfaceDeclarationContext.class,0); + } + public TerminalNode SEMI() { return getToken(Java8Parser.SEMI, 0); } + public ClassMemberDeclarationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_classMemberDeclaration; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterClassMemberDeclaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitClassMemberDeclaration(this); + } + } + + public final ClassMemberDeclarationContext classMemberDeclaration() throws RecognitionException { + ClassMemberDeclarationContext _localctx = new ClassMemberDeclarationContext(_ctx, getState()); + enterRule(_localctx, 102, RULE_classMemberDeclaration); + try { + setState(869); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,54,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(864); + fieldDeclaration(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(865); + methodDeclaration(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(866); + classDeclaration(); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(867); + interfaceDeclaration(); + } + break; + case 5: + enterOuterAlt(_localctx, 5); + { + setState(868); + match(SEMI); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class FieldDeclarationContext extends ParserRuleContext { + public UnannTypeContext unannType() { + return getRuleContext(UnannTypeContext.class,0); + } + public VariableDeclaratorListContext variableDeclaratorList() { + return getRuleContext(VariableDeclaratorListContext.class,0); + } + public TerminalNode SEMI() { return getToken(Java8Parser.SEMI, 0); } + public List fieldModifier() { + return getRuleContexts(FieldModifierContext.class); + } + public FieldModifierContext fieldModifier(int i) { + return getRuleContext(FieldModifierContext.class,i); + } + 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 Java8Listener ) ((Java8Listener)listener).enterFieldDeclaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitFieldDeclaration(this); + } + } + + public final FieldDeclarationContext fieldDeclaration() throws RecognitionException { + FieldDeclarationContext _localctx = new FieldDeclarationContext(_ctx, getState()); + enterRule(_localctx, 104, RULE_fieldDeclaration); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(874); + _errHandler.sync(this); + _la = _input.LA(1); + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & 633653705310208L) != 0) || _la==AT) { + { + { + setState(871); + fieldModifier(); + } + } + setState(876); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(877); + unannType(); + setState(878); + variableDeclaratorList(); + setState(879); + match(SEMI); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class FieldModifierContext extends ParserRuleContext { + public AnnotationContext annotation() { + return getRuleContext(AnnotationContext.class,0); + } + public TerminalNode PUBLIC() { return getToken(Java8Parser.PUBLIC, 0); } + public TerminalNode PROTECTED() { return getToken(Java8Parser.PROTECTED, 0); } + public TerminalNode PRIVATE() { return getToken(Java8Parser.PRIVATE, 0); } + public TerminalNode STATIC() { return getToken(Java8Parser.STATIC, 0); } + public TerminalNode FINAL() { return getToken(Java8Parser.FINAL, 0); } + public TerminalNode TRANSIENT() { return getToken(Java8Parser.TRANSIENT, 0); } + public TerminalNode VOLATILE() { return getToken(Java8Parser.VOLATILE, 0); } + public FieldModifierContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_fieldModifier; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterFieldModifier(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitFieldModifier(this); + } + } + + public final FieldModifierContext fieldModifier() throws RecognitionException { + FieldModifierContext _localctx = new FieldModifierContext(_ctx, getState()); + enterRule(_localctx, 106, RULE_fieldModifier); + try { + setState(889); + _errHandler.sync(this); + switch (_input.LA(1)) { + case AT: + enterOuterAlt(_localctx, 1); + { + setState(881); + annotation(); + } + break; + case PUBLIC: + enterOuterAlt(_localctx, 2); + { + setState(882); + match(PUBLIC); + } + break; + case PROTECTED: + enterOuterAlt(_localctx, 3); + { + setState(883); + match(PROTECTED); + } + break; + case PRIVATE: + enterOuterAlt(_localctx, 4); + { + setState(884); + match(PRIVATE); + } + break; + case STATIC: + enterOuterAlt(_localctx, 5); + { + setState(885); + match(STATIC); + } + break; + case FINAL: + enterOuterAlt(_localctx, 6); + { + setState(886); + match(FINAL); + } + break; + case TRANSIENT: + enterOuterAlt(_localctx, 7); + { + setState(887); + match(TRANSIENT); + } + break; + case VOLATILE: + enterOuterAlt(_localctx, 8); + { + setState(888); + 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; + } + + @SuppressWarnings("CheckReturnValue") + public static class VariableDeclaratorListContext extends ParserRuleContext { + public List variableDeclarator() { + return getRuleContexts(VariableDeclaratorContext.class); + } + public VariableDeclaratorContext variableDeclarator(int i) { + return getRuleContext(VariableDeclaratorContext.class,i); + } + public List COMMA() { return getTokens(Java8Parser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(Java8Parser.COMMA, i); + } + public VariableDeclaratorListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_variableDeclaratorList; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterVariableDeclaratorList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitVariableDeclaratorList(this); + } + } + + public final VariableDeclaratorListContext variableDeclaratorList() throws RecognitionException { + VariableDeclaratorListContext _localctx = new VariableDeclaratorListContext(_ctx, getState()); + enterRule(_localctx, 108, RULE_variableDeclaratorList); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(891); + variableDeclarator(); + setState(896); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(892); + match(COMMA); + setState(893); + variableDeclarator(); + } + } + setState(898); + _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; + } + + @SuppressWarnings("CheckReturnValue") + public static class VariableDeclaratorContext extends ParserRuleContext { + public VariableDeclaratorIdContext variableDeclaratorId() { + return getRuleContext(VariableDeclaratorIdContext.class,0); + } + public TerminalNode ASSIGN() { return getToken(Java8Parser.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 Java8Listener ) ((Java8Listener)listener).enterVariableDeclarator(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitVariableDeclarator(this); + } + } + + public final VariableDeclaratorContext variableDeclarator() throws RecognitionException { + VariableDeclaratorContext _localctx = new VariableDeclaratorContext(_ctx, getState()); + enterRule(_localctx, 110, RULE_variableDeclarator); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(899); + variableDeclaratorId(); + setState(902); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ASSIGN) { + { + setState(900); + match(ASSIGN); + setState(901); + variableInitializer(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class VariableDeclaratorIdContext extends ParserRuleContext { + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public DimsContext dims() { + return getRuleContext(DimsContext.class,0); + } + 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 Java8Listener ) ((Java8Listener)listener).enterVariableDeclaratorId(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitVariableDeclaratorId(this); + } + } + + public final VariableDeclaratorIdContext variableDeclaratorId() throws RecognitionException { + VariableDeclaratorIdContext _localctx = new VariableDeclaratorIdContext(_ctx, getState()); + enterRule(_localctx, 112, RULE_variableDeclaratorId); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(904); + match(Identifier); + setState(906); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LBRACK || _la==AT) { + { + setState(905); + dims(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class VariableInitializerContext extends ParserRuleContext { + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public ArrayInitializerContext arrayInitializer() { + return getRuleContext(ArrayInitializerContext.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 Java8Listener ) ((Java8Listener)listener).enterVariableInitializer(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitVariableInitializer(this); + } + } + + public final VariableInitializerContext variableInitializer() throws RecognitionException { + VariableInitializerContext _localctx = new VariableInitializerContext(_ctx, getState()); + enterRule(_localctx, 114, RULE_variableInitializer); + try { + setState(910); + _errHandler.sync(this); + switch (_input.LA(1)) { + case BOOLEAN: + case BYTE: + case CHAR: + case DOUBLE: + case FLOAT: + case INT: + case LONG: + case NEW: + case SHORT: + case SUPER: + case THIS: + case VOID: + case IntegerLiteral: + case FloatingPointLiteral: + case BooleanLiteral: + case CharacterLiteral: + case StringLiteral: + case NullLiteral: + case LPAREN: + case BANG: + case TILDE: + case INC: + case DEC: + case ADD: + case SUB: + case Identifier: + case AT: + enterOuterAlt(_localctx, 1); + { + setState(908); + expression(); + } + break; + case LBRACE: + enterOuterAlt(_localctx, 2); + { + setState(909); + arrayInitializer(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class UnannTypeContext extends ParserRuleContext { + public UnannPrimitiveTypeContext unannPrimitiveType() { + return getRuleContext(UnannPrimitiveTypeContext.class,0); + } + public UnannReferenceTypeContext unannReferenceType() { + return getRuleContext(UnannReferenceTypeContext.class,0); + } + public UnannTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_unannType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterUnannType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitUnannType(this); + } + } + + public final UnannTypeContext unannType() throws RecognitionException { + UnannTypeContext _localctx = new UnannTypeContext(_ctx, getState()); + enterRule(_localctx, 116, RULE_unannType); + try { + setState(914); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,61,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(912); + unannPrimitiveType(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(913); + unannReferenceType(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class UnannPrimitiveTypeContext extends ParserRuleContext { + public NumericTypeContext numericType() { + return getRuleContext(NumericTypeContext.class,0); + } + public TerminalNode BOOLEAN() { return getToken(Java8Parser.BOOLEAN, 0); } + public UnannPrimitiveTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_unannPrimitiveType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterUnannPrimitiveType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitUnannPrimitiveType(this); + } + } + + public final UnannPrimitiveTypeContext unannPrimitiveType() throws RecognitionException { + UnannPrimitiveTypeContext _localctx = new UnannPrimitiveTypeContext(_ctx, getState()); + enterRule(_localctx, 118, RULE_unannPrimitiveType); + try { + setState(918); + _errHandler.sync(this); + switch (_input.LA(1)) { + case BYTE: + case CHAR: + case DOUBLE: + case FLOAT: + case INT: + case LONG: + case SHORT: + enterOuterAlt(_localctx, 1); + { + setState(916); + numericType(); + } + break; + case BOOLEAN: + enterOuterAlt(_localctx, 2); + { + setState(917); + match(BOOLEAN); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class UnannReferenceTypeContext extends ParserRuleContext { + public UnannClassOrInterfaceTypeContext unannClassOrInterfaceType() { + return getRuleContext(UnannClassOrInterfaceTypeContext.class,0); + } + public UnannTypeVariableContext unannTypeVariable() { + return getRuleContext(UnannTypeVariableContext.class,0); + } + public UnannArrayTypeContext unannArrayType() { + return getRuleContext(UnannArrayTypeContext.class,0); + } + public UnannReferenceTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_unannReferenceType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterUnannReferenceType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitUnannReferenceType(this); + } + } + + public final UnannReferenceTypeContext unannReferenceType() throws RecognitionException { + UnannReferenceTypeContext _localctx = new UnannReferenceTypeContext(_ctx, getState()); + enterRule(_localctx, 120, RULE_unannReferenceType); + try { + setState(923); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,63,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(920); + unannClassOrInterfaceType(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(921); + unannTypeVariable(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(922); + unannArrayType(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class UnannClassOrInterfaceTypeContext extends ParserRuleContext { + public UnannClassType_lfno_unannClassOrInterfaceTypeContext unannClassType_lfno_unannClassOrInterfaceType() { + return getRuleContext(UnannClassType_lfno_unannClassOrInterfaceTypeContext.class,0); + } + public UnannInterfaceType_lfno_unannClassOrInterfaceTypeContext unannInterfaceType_lfno_unannClassOrInterfaceType() { + return getRuleContext(UnannInterfaceType_lfno_unannClassOrInterfaceTypeContext.class,0); + } + public List unannClassType_lf_unannClassOrInterfaceType() { + return getRuleContexts(UnannClassType_lf_unannClassOrInterfaceTypeContext.class); + } + public UnannClassType_lf_unannClassOrInterfaceTypeContext unannClassType_lf_unannClassOrInterfaceType(int i) { + return getRuleContext(UnannClassType_lf_unannClassOrInterfaceTypeContext.class,i); + } + public List unannInterfaceType_lf_unannClassOrInterfaceType() { + return getRuleContexts(UnannInterfaceType_lf_unannClassOrInterfaceTypeContext.class); + } + public UnannInterfaceType_lf_unannClassOrInterfaceTypeContext unannInterfaceType_lf_unannClassOrInterfaceType(int i) { + return getRuleContext(UnannInterfaceType_lf_unannClassOrInterfaceTypeContext.class,i); + } + public UnannClassOrInterfaceTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_unannClassOrInterfaceType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterUnannClassOrInterfaceType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitUnannClassOrInterfaceType(this); + } + } + + public final UnannClassOrInterfaceTypeContext unannClassOrInterfaceType() throws RecognitionException { + UnannClassOrInterfaceTypeContext _localctx = new UnannClassOrInterfaceTypeContext(_ctx, getState()); + enterRule(_localctx, 122, RULE_unannClassOrInterfaceType); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(927); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,64,_ctx) ) { + case 1: + { + setState(925); + unannClassType_lfno_unannClassOrInterfaceType(); + } + break; + case 2: + { + setState(926); + unannInterfaceType_lfno_unannClassOrInterfaceType(); + } + break; + } + setState(933); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,66,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + setState(931); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,65,_ctx) ) { + case 1: + { + setState(929); + unannClassType_lf_unannClassOrInterfaceType(); + } + break; + case 2: + { + setState(930); + unannInterfaceType_lf_unannClassOrInterfaceType(); + } + break; + } + } + } + setState(935); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,66,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class UnannClassTypeContext extends ParserRuleContext { + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public TypeArgumentsContext typeArguments() { + return getRuleContext(TypeArgumentsContext.class,0); + } + public UnannClassOrInterfaceTypeContext unannClassOrInterfaceType() { + return getRuleContext(UnannClassOrInterfaceTypeContext.class,0); + } + public TerminalNode DOT() { return getToken(Java8Parser.DOT, 0); } + public List annotation() { + return getRuleContexts(AnnotationContext.class); + } + public AnnotationContext annotation(int i) { + return getRuleContext(AnnotationContext.class,i); + } + public UnannClassTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_unannClassType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterUnannClassType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitUnannClassType(this); + } + } + + public final UnannClassTypeContext unannClassType() throws RecognitionException { + UnannClassTypeContext _localctx = new UnannClassTypeContext(_ctx, getState()); + enterRule(_localctx, 124, RULE_unannClassType); + int _la; + try { + setState(952); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,70,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(936); + match(Identifier); + setState(938); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LT) { + { + setState(937); + typeArguments(); + } + } + + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(940); + unannClassOrInterfaceType(); + setState(941); + match(DOT); + setState(945); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==AT) { + { + { + setState(942); + annotation(); + } + } + setState(947); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(948); + match(Identifier); + setState(950); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LT) { + { + setState(949); + typeArguments(); + } + } + + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class UnannClassType_lf_unannClassOrInterfaceTypeContext extends ParserRuleContext { + public TerminalNode DOT() { return getToken(Java8Parser.DOT, 0); } + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 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 UnannClassType_lf_unannClassOrInterfaceTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_unannClassType_lf_unannClassOrInterfaceType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterUnannClassType_lf_unannClassOrInterfaceType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitUnannClassType_lf_unannClassOrInterfaceType(this); + } + } + + public final UnannClassType_lf_unannClassOrInterfaceTypeContext unannClassType_lf_unannClassOrInterfaceType() throws RecognitionException { + UnannClassType_lf_unannClassOrInterfaceTypeContext _localctx = new UnannClassType_lf_unannClassOrInterfaceTypeContext(_ctx, getState()); + enterRule(_localctx, 126, RULE_unannClassType_lf_unannClassOrInterfaceType); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(954); + match(DOT); + setState(958); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==AT) { + { + { + setState(955); + annotation(); + } + } + setState(960); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(961); + match(Identifier); + setState(963); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LT) { + { + setState(962); + typeArguments(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class UnannClassType_lfno_unannClassOrInterfaceTypeContext extends ParserRuleContext { + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public TypeArgumentsContext typeArguments() { + return getRuleContext(TypeArgumentsContext.class,0); + } + public UnannClassType_lfno_unannClassOrInterfaceTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_unannClassType_lfno_unannClassOrInterfaceType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterUnannClassType_lfno_unannClassOrInterfaceType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitUnannClassType_lfno_unannClassOrInterfaceType(this); + } + } + + public final UnannClassType_lfno_unannClassOrInterfaceTypeContext unannClassType_lfno_unannClassOrInterfaceType() throws RecognitionException { + UnannClassType_lfno_unannClassOrInterfaceTypeContext _localctx = new UnannClassType_lfno_unannClassOrInterfaceTypeContext(_ctx, getState()); + enterRule(_localctx, 128, RULE_unannClassType_lfno_unannClassOrInterfaceType); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(965); + match(Identifier); + setState(967); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LT) { + { + setState(966); + typeArguments(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class UnannInterfaceTypeContext extends ParserRuleContext { + public UnannClassTypeContext unannClassType() { + return getRuleContext(UnannClassTypeContext.class,0); + } + public UnannInterfaceTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_unannInterfaceType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterUnannInterfaceType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitUnannInterfaceType(this); + } + } + + public final UnannInterfaceTypeContext unannInterfaceType() throws RecognitionException { + UnannInterfaceTypeContext _localctx = new UnannInterfaceTypeContext(_ctx, getState()); + enterRule(_localctx, 130, RULE_unannInterfaceType); + try { + enterOuterAlt(_localctx, 1); + { + setState(969); + unannClassType(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class UnannInterfaceType_lf_unannClassOrInterfaceTypeContext extends ParserRuleContext { + public UnannClassType_lf_unannClassOrInterfaceTypeContext unannClassType_lf_unannClassOrInterfaceType() { + return getRuleContext(UnannClassType_lf_unannClassOrInterfaceTypeContext.class,0); + } + public UnannInterfaceType_lf_unannClassOrInterfaceTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_unannInterfaceType_lf_unannClassOrInterfaceType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterUnannInterfaceType_lf_unannClassOrInterfaceType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitUnannInterfaceType_lf_unannClassOrInterfaceType(this); + } + } + + public final UnannInterfaceType_lf_unannClassOrInterfaceTypeContext unannInterfaceType_lf_unannClassOrInterfaceType() throws RecognitionException { + UnannInterfaceType_lf_unannClassOrInterfaceTypeContext _localctx = new UnannInterfaceType_lf_unannClassOrInterfaceTypeContext(_ctx, getState()); + enterRule(_localctx, 132, RULE_unannInterfaceType_lf_unannClassOrInterfaceType); + try { + enterOuterAlt(_localctx, 1); + { + setState(971); + unannClassType_lf_unannClassOrInterfaceType(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class UnannInterfaceType_lfno_unannClassOrInterfaceTypeContext extends ParserRuleContext { + public UnannClassType_lfno_unannClassOrInterfaceTypeContext unannClassType_lfno_unannClassOrInterfaceType() { + return getRuleContext(UnannClassType_lfno_unannClassOrInterfaceTypeContext.class,0); + } + public UnannInterfaceType_lfno_unannClassOrInterfaceTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_unannInterfaceType_lfno_unannClassOrInterfaceType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterUnannInterfaceType_lfno_unannClassOrInterfaceType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitUnannInterfaceType_lfno_unannClassOrInterfaceType(this); + } + } + + public final UnannInterfaceType_lfno_unannClassOrInterfaceTypeContext unannInterfaceType_lfno_unannClassOrInterfaceType() throws RecognitionException { + UnannInterfaceType_lfno_unannClassOrInterfaceTypeContext _localctx = new UnannInterfaceType_lfno_unannClassOrInterfaceTypeContext(_ctx, getState()); + enterRule(_localctx, 134, RULE_unannInterfaceType_lfno_unannClassOrInterfaceType); + try { + enterOuterAlt(_localctx, 1); + { + setState(973); + unannClassType_lfno_unannClassOrInterfaceType(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class UnannTypeVariableContext extends ParserRuleContext { + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public UnannTypeVariableContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_unannTypeVariable; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterUnannTypeVariable(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitUnannTypeVariable(this); + } + } + + public final UnannTypeVariableContext unannTypeVariable() throws RecognitionException { + UnannTypeVariableContext _localctx = new UnannTypeVariableContext(_ctx, getState()); + enterRule(_localctx, 136, RULE_unannTypeVariable); + try { + enterOuterAlt(_localctx, 1); + { + setState(975); + match(Identifier); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class UnannArrayTypeContext extends ParserRuleContext { + public UnannPrimitiveTypeContext unannPrimitiveType() { + return getRuleContext(UnannPrimitiveTypeContext.class,0); + } + public DimsContext dims() { + return getRuleContext(DimsContext.class,0); + } + public UnannClassOrInterfaceTypeContext unannClassOrInterfaceType() { + return getRuleContext(UnannClassOrInterfaceTypeContext.class,0); + } + public UnannTypeVariableContext unannTypeVariable() { + return getRuleContext(UnannTypeVariableContext.class,0); + } + public UnannArrayTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_unannArrayType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterUnannArrayType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitUnannArrayType(this); + } + } + + public final UnannArrayTypeContext unannArrayType() throws RecognitionException { + UnannArrayTypeContext _localctx = new UnannArrayTypeContext(_ctx, getState()); + enterRule(_localctx, 138, RULE_unannArrayType); + try { + setState(986); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,74,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(977); + unannPrimitiveType(); + setState(978); + dims(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(980); + unannClassOrInterfaceType(); + setState(981); + dims(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(983); + unannTypeVariable(); + setState(984); + dims(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class MethodDeclarationContext extends ParserRuleContext { + public MethodHeaderContext methodHeader() { + return getRuleContext(MethodHeaderContext.class,0); + } + public MethodBodyContext methodBody() { + return getRuleContext(MethodBodyContext.class,0); + } + public List methodModifier() { + return getRuleContexts(MethodModifierContext.class); + } + public MethodModifierContext methodModifier(int i) { + return getRuleContext(MethodModifierContext.class,i); + } + 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 Java8Listener ) ((Java8Listener)listener).enterMethodDeclaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitMethodDeclaration(this); + } + } + + public final MethodDeclarationContext methodDeclaration() throws RecognitionException { + MethodDeclarationContext _localctx = new MethodDeclarationContext(_ctx, getState()); + enterRule(_localctx, 140, RULE_methodDeclaration); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(991); + _errHandler.sync(this); + _la = _input.LA(1); + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & 5283883778050L) != 0) || _la==AT) { + { + { + setState(988); + methodModifier(); + } + } + setState(993); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(994); + methodHeader(); + setState(995); + methodBody(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class MethodModifierContext extends ParserRuleContext { + public AnnotationContext annotation() { + return getRuleContext(AnnotationContext.class,0); + } + public TerminalNode PUBLIC() { return getToken(Java8Parser.PUBLIC, 0); } + public TerminalNode PROTECTED() { return getToken(Java8Parser.PROTECTED, 0); } + public TerminalNode PRIVATE() { return getToken(Java8Parser.PRIVATE, 0); } + public TerminalNode ABSTRACT() { return getToken(Java8Parser.ABSTRACT, 0); } + public TerminalNode STATIC() { return getToken(Java8Parser.STATIC, 0); } + public TerminalNode FINAL() { return getToken(Java8Parser.FINAL, 0); } + public TerminalNode SYNCHRONIZED() { return getToken(Java8Parser.SYNCHRONIZED, 0); } + public TerminalNode NATIVE() { return getToken(Java8Parser.NATIVE, 0); } + public TerminalNode STRICTFP() { return getToken(Java8Parser.STRICTFP, 0); } + public MethodModifierContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_methodModifier; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterMethodModifier(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitMethodModifier(this); + } + } + + public final MethodModifierContext methodModifier() throws RecognitionException { + MethodModifierContext _localctx = new MethodModifierContext(_ctx, getState()); + enterRule(_localctx, 142, RULE_methodModifier); + try { + setState(1007); + _errHandler.sync(this); + switch (_input.LA(1)) { + case AT: + enterOuterAlt(_localctx, 1); + { + setState(997); + annotation(); + } + break; + case PUBLIC: + enterOuterAlt(_localctx, 2); + { + setState(998); + match(PUBLIC); + } + break; + case PROTECTED: + enterOuterAlt(_localctx, 3); + { + setState(999); + match(PROTECTED); + } + break; + case PRIVATE: + enterOuterAlt(_localctx, 4); + { + setState(1000); + match(PRIVATE); + } + break; + case ABSTRACT: + enterOuterAlt(_localctx, 5); + { + setState(1001); + match(ABSTRACT); + } + break; + case STATIC: + enterOuterAlt(_localctx, 6); + { + setState(1002); + match(STATIC); + } + break; + case FINAL: + enterOuterAlt(_localctx, 7); + { + setState(1003); + match(FINAL); + } + break; + case SYNCHRONIZED: + enterOuterAlt(_localctx, 8); + { + setState(1004); + match(SYNCHRONIZED); + } + break; + case NATIVE: + enterOuterAlt(_localctx, 9); + { + setState(1005); + match(NATIVE); + } + break; + case STRICTFP: + enterOuterAlt(_localctx, 10); + { + setState(1006); + 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; + } + + @SuppressWarnings("CheckReturnValue") + public static class MethodHeaderContext extends ParserRuleContext { + public ResultContext result() { + return getRuleContext(ResultContext.class,0); + } + public MethodDeclaratorContext methodDeclarator() { + return getRuleContext(MethodDeclaratorContext.class,0); + } + public Throws_Context throws_() { + return getRuleContext(Throws_Context.class,0); + } + public TypeParametersContext typeParameters() { + return getRuleContext(TypeParametersContext.class,0); + } + public List annotation() { + return getRuleContexts(AnnotationContext.class); + } + public AnnotationContext annotation(int i) { + return getRuleContext(AnnotationContext.class,i); + } + public MethodHeaderContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_methodHeader; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterMethodHeader(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitMethodHeader(this); + } + } + + public final MethodHeaderContext methodHeader() throws RecognitionException { + MethodHeaderContext _localctx = new MethodHeaderContext(_ctx, getState()); + enterRule(_localctx, 144, RULE_methodHeader); + int _la; + try { + setState(1026); + _errHandler.sync(this); + switch (_input.LA(1)) { + case BOOLEAN: + case BYTE: + case CHAR: + case DOUBLE: + case FLOAT: + case INT: + case LONG: + case SHORT: + case VOID: + case Identifier: + enterOuterAlt(_localctx, 1); + { + setState(1009); + result(); + setState(1010); + methodDeclarator(); + setState(1012); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==THROWS) { + { + setState(1011); + throws_(); + } + } + + } + break; + case LT: + enterOuterAlt(_localctx, 2); + { + setState(1014); + typeParameters(); + setState(1018); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==AT) { + { + { + setState(1015); + annotation(); + } + } + setState(1020); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1021); + result(); + setState(1022); + methodDeclarator(); + setState(1024); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==THROWS) { + { + setState(1023); + throws_(); + } + } + + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ResultContext extends ParserRuleContext { + public UnannTypeContext unannType() { + return getRuleContext(UnannTypeContext.class,0); + } + public TerminalNode VOID() { return getToken(Java8Parser.VOID, 0); } + public ResultContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_result; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterResult(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitResult(this); + } + } + + public final ResultContext result() throws RecognitionException { + ResultContext _localctx = new ResultContext(_ctx, getState()); + enterRule(_localctx, 146, RULE_result); + try { + setState(1030); + _errHandler.sync(this); + switch (_input.LA(1)) { + case BOOLEAN: + case BYTE: + case CHAR: + case DOUBLE: + case FLOAT: + case INT: + case LONG: + case SHORT: + case Identifier: + enterOuterAlt(_localctx, 1); + { + setState(1028); + unannType(); + } + break; + case VOID: + enterOuterAlt(_localctx, 2); + { + setState(1029); + 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; + } + + @SuppressWarnings("CheckReturnValue") + public static class MethodDeclaratorContext extends ParserRuleContext { + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public TerminalNode LPAREN() { return getToken(Java8Parser.LPAREN, 0); } + public TerminalNode RPAREN() { return getToken(Java8Parser.RPAREN, 0); } + public FormalParameterListContext formalParameterList() { + return getRuleContext(FormalParameterListContext.class,0); + } + public DimsContext dims() { + return getRuleContext(DimsContext.class,0); + } + public MethodDeclaratorContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_methodDeclarator; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterMethodDeclarator(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitMethodDeclarator(this); + } + } + + public final MethodDeclaratorContext methodDeclarator() throws RecognitionException { + MethodDeclaratorContext _localctx = new MethodDeclaratorContext(_ctx, getState()); + enterRule(_localctx, 148, RULE_methodDeclarator); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1032); + match(Identifier); + setState(1033); + match(LPAREN); + setState(1035); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 138111369512L) != 0) || _la==Identifier || _la==AT) { + { + setState(1034); + formalParameterList(); + } + } + + setState(1037); + match(RPAREN); + setState(1039); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LBRACK || _la==AT) { + { + setState(1038); + dims(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class FormalParameterListContext extends ParserRuleContext { + public FormalParametersContext formalParameters() { + return getRuleContext(FormalParametersContext.class,0); + } + public TerminalNode COMMA() { return getToken(Java8Parser.COMMA, 0); } + 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 Java8Listener ) ((Java8Listener)listener).enterFormalParameterList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitFormalParameterList(this); + } + } + + public final FormalParameterListContext formalParameterList() throws RecognitionException { + FormalParameterListContext _localctx = new FormalParameterListContext(_ctx, getState()); + enterRule(_localctx, 150, RULE_formalParameterList); + try { + setState(1046); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,84,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1041); + formalParameters(); + setState(1042); + match(COMMA); + setState(1043); + lastFormalParameter(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1045); + lastFormalParameter(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class FormalParametersContext extends ParserRuleContext { + public List formalParameter() { + return getRuleContexts(FormalParameterContext.class); + } + public FormalParameterContext formalParameter(int i) { + return getRuleContext(FormalParameterContext.class,i); + } + public List COMMA() { return getTokens(Java8Parser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(Java8Parser.COMMA, i); + } + public ReceiverParameterContext receiverParameter() { + return getRuleContext(ReceiverParameterContext.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 Java8Listener ) ((Java8Listener)listener).enterFormalParameters(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitFormalParameters(this); + } + } + + public final FormalParametersContext formalParameters() throws RecognitionException { + FormalParametersContext _localctx = new FormalParametersContext(_ctx, getState()); + enterRule(_localctx, 152, RULE_formalParameters); + try { + int _alt; + setState(1064); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,87,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1048); + formalParameter(); + setState(1053); + _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(1049); + match(COMMA); + setState(1050); + formalParameter(); + } + } + } + setState(1055); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,85,_ctx); + } + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1056); + receiverParameter(); + setState(1061); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,86,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(1057); + match(COMMA); + setState(1058); + formalParameter(); + } + } + } + setState(1063); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,86,_ctx); + } + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class FormalParameterContext extends ParserRuleContext { + public UnannTypeContext unannType() { + return getRuleContext(UnannTypeContext.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 Java8Listener ) ((Java8Listener)listener).enterFormalParameter(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitFormalParameter(this); + } + } + + public final FormalParameterContext formalParameter() throws RecognitionException { + FormalParameterContext _localctx = new FormalParameterContext(_ctx, getState()); + enterRule(_localctx, 154, RULE_formalParameter); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1069); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==FINAL || _la==AT) { + { + { + setState(1066); + variableModifier(); + } + } + setState(1071); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1072); + unannType(); + setState(1073); + variableDeclaratorId(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class VariableModifierContext extends ParserRuleContext { + public AnnotationContext annotation() { + return getRuleContext(AnnotationContext.class,0); + } + public TerminalNode FINAL() { return getToken(Java8Parser.FINAL, 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 Java8Listener ) ((Java8Listener)listener).enterVariableModifier(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitVariableModifier(this); + } + } + + public final VariableModifierContext variableModifier() throws RecognitionException { + VariableModifierContext _localctx = new VariableModifierContext(_ctx, getState()); + enterRule(_localctx, 156, RULE_variableModifier); + try { + setState(1077); + _errHandler.sync(this); + switch (_input.LA(1)) { + case AT: + enterOuterAlt(_localctx, 1); + { + setState(1075); + annotation(); + } + break; + case FINAL: + enterOuterAlt(_localctx, 2); + { + setState(1076); + match(FINAL); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class LastFormalParameterContext extends ParserRuleContext { + public UnannTypeContext unannType() { + return getRuleContext(UnannTypeContext.class,0); + } + public TerminalNode ELLIPSIS() { return getToken(Java8Parser.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 List annotation() { + return getRuleContexts(AnnotationContext.class); + } + public AnnotationContext annotation(int i) { + return getRuleContext(AnnotationContext.class,i); + } + public FormalParameterContext formalParameter() { + return getRuleContext(FormalParameterContext.class,0); + } + 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 Java8Listener ) ((Java8Listener)listener).enterLastFormalParameter(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitLastFormalParameter(this); + } + } + + public final LastFormalParameterContext lastFormalParameter() throws RecognitionException { + LastFormalParameterContext _localctx = new LastFormalParameterContext(_ctx, getState()); + enterRule(_localctx, 158, RULE_lastFormalParameter); + int _la; + try { + setState(1096); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,92,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1082); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==FINAL || _la==AT) { + { + { + setState(1079); + variableModifier(); + } + } + setState(1084); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1085); + unannType(); + setState(1089); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==AT) { + { + { + setState(1086); + annotation(); + } + } + setState(1091); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1092); + match(ELLIPSIS); + setState(1093); + variableDeclaratorId(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1095); + formalParameter(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ReceiverParameterContext extends ParserRuleContext { + public UnannTypeContext unannType() { + return getRuleContext(UnannTypeContext.class,0); + } + public TerminalNode THIS() { return getToken(Java8Parser.THIS, 0); } + public List annotation() { + return getRuleContexts(AnnotationContext.class); + } + public AnnotationContext annotation(int i) { + return getRuleContext(AnnotationContext.class,i); + } + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public TerminalNode DOT() { return getToken(Java8Parser.DOT, 0); } + public ReceiverParameterContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_receiverParameter; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterReceiverParameter(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitReceiverParameter(this); + } + } + + public final ReceiverParameterContext receiverParameter() throws RecognitionException { + ReceiverParameterContext _localctx = new ReceiverParameterContext(_ctx, getState()); + enterRule(_localctx, 160, RULE_receiverParameter); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1101); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==AT) { + { + { + setState(1098); + annotation(); + } + } + setState(1103); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1104); + unannType(); + setState(1107); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==Identifier) { + { + setState(1105); + match(Identifier); + setState(1106); + match(DOT); + } + } + + setState(1109); + match(THIS); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class Throws_Context extends ParserRuleContext { + public TerminalNode THROWS() { return getToken(Java8Parser.THROWS, 0); } + public ExceptionTypeListContext exceptionTypeList() { + return getRuleContext(ExceptionTypeListContext.class,0); + } + public Throws_Context(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_throws_; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterThrows_(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitThrows_(this); + } + } + + public final Throws_Context throws_() throws RecognitionException { + Throws_Context _localctx = new Throws_Context(_ctx, getState()); + enterRule(_localctx, 162, RULE_throws_); + try { + enterOuterAlt(_localctx, 1); + { + setState(1111); + match(THROWS); + setState(1112); + exceptionTypeList(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ExceptionTypeListContext extends ParserRuleContext { + public List exceptionType() { + return getRuleContexts(ExceptionTypeContext.class); + } + public ExceptionTypeContext exceptionType(int i) { + return getRuleContext(ExceptionTypeContext.class,i); + } + public List COMMA() { return getTokens(Java8Parser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(Java8Parser.COMMA, i); + } + public ExceptionTypeListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_exceptionTypeList; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterExceptionTypeList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitExceptionTypeList(this); + } + } + + public final ExceptionTypeListContext exceptionTypeList() throws RecognitionException { + ExceptionTypeListContext _localctx = new ExceptionTypeListContext(_ctx, getState()); + enterRule(_localctx, 164, RULE_exceptionTypeList); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1114); + exceptionType(); + setState(1119); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(1115); + match(COMMA); + setState(1116); + exceptionType(); + } + } + setState(1121); + _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; + } + + @SuppressWarnings("CheckReturnValue") + public static class ExceptionTypeContext extends ParserRuleContext { + public ClassTypeContext classType() { + return getRuleContext(ClassTypeContext.class,0); + } + public TypeVariableContext typeVariable() { + return getRuleContext(TypeVariableContext.class,0); + } + public ExceptionTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_exceptionType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterExceptionType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitExceptionType(this); + } + } + + public final ExceptionTypeContext exceptionType() throws RecognitionException { + ExceptionTypeContext _localctx = new ExceptionTypeContext(_ctx, getState()); + enterRule(_localctx, 166, RULE_exceptionType); + try { + setState(1124); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,96,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1122); + classType(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1123); + typeVariable(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class MethodBodyContext extends ParserRuleContext { + public BlockContext block() { + return getRuleContext(BlockContext.class,0); + } + public TerminalNode SEMI() { return getToken(Java8Parser.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 Java8Listener ) ((Java8Listener)listener).enterMethodBody(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitMethodBody(this); + } + } + + public final MethodBodyContext methodBody() throws RecognitionException { + MethodBodyContext _localctx = new MethodBodyContext(_ctx, getState()); + enterRule(_localctx, 168, RULE_methodBody); + try { + setState(1128); + _errHandler.sync(this); + switch (_input.LA(1)) { + case LBRACE: + enterOuterAlt(_localctx, 1); + { + setState(1126); + block(); + } + break; + case SEMI: + enterOuterAlt(_localctx, 2); + { + setState(1127); + 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; + } + + @SuppressWarnings("CheckReturnValue") + public static class InstanceInitializerContext extends ParserRuleContext { + public BlockContext block() { + return getRuleContext(BlockContext.class,0); + } + public InstanceInitializerContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_instanceInitializer; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterInstanceInitializer(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitInstanceInitializer(this); + } + } + + public final InstanceInitializerContext instanceInitializer() throws RecognitionException { + InstanceInitializerContext _localctx = new InstanceInitializerContext(_ctx, getState()); + enterRule(_localctx, 170, RULE_instanceInitializer); + try { + enterOuterAlt(_localctx, 1); + { + setState(1130); + block(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class StaticInitializerContext extends ParserRuleContext { + public TerminalNode STATIC() { return getToken(Java8Parser.STATIC, 0); } + public BlockContext block() { + return getRuleContext(BlockContext.class,0); + } + public StaticInitializerContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_staticInitializer; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterStaticInitializer(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitStaticInitializer(this); + } + } + + public final StaticInitializerContext staticInitializer() throws RecognitionException { + StaticInitializerContext _localctx = new StaticInitializerContext(_ctx, getState()); + enterRule(_localctx, 172, RULE_staticInitializer); + try { + enterOuterAlt(_localctx, 1); + { + setState(1132); + match(STATIC); + setState(1133); + block(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ConstructorDeclarationContext extends ParserRuleContext { + public ConstructorDeclaratorContext constructorDeclarator() { + return getRuleContext(ConstructorDeclaratorContext.class,0); + } + public ConstructorBodyContext constructorBody() { + return getRuleContext(ConstructorBodyContext.class,0); + } + public List constructorModifier() { + return getRuleContexts(ConstructorModifierContext.class); + } + public ConstructorModifierContext constructorModifier(int i) { + return getRuleContext(ConstructorModifierContext.class,i); + } + public Throws_Context throws_() { + return getRuleContext(Throws_Context.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 Java8Listener ) ((Java8Listener)listener).enterConstructorDeclaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitConstructorDeclaration(this); + } + } + + public final ConstructorDeclarationContext constructorDeclaration() throws RecognitionException { + ConstructorDeclarationContext _localctx = new ConstructorDeclarationContext(_ctx, getState()); + enterRule(_localctx, 174, RULE_constructorDeclaration); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1138); + _errHandler.sync(this); + _la = _input.LA(1); + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & 60129542144L) != 0) || _la==AT) { + { + { + setState(1135); + constructorModifier(); + } + } + setState(1140); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1141); + constructorDeclarator(); + setState(1143); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==THROWS) { + { + setState(1142); + throws_(); + } + } + + setState(1145); + constructorBody(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ConstructorModifierContext extends ParserRuleContext { + public AnnotationContext annotation() { + return getRuleContext(AnnotationContext.class,0); + } + public TerminalNode PUBLIC() { return getToken(Java8Parser.PUBLIC, 0); } + public TerminalNode PROTECTED() { return getToken(Java8Parser.PROTECTED, 0); } + public TerminalNode PRIVATE() { return getToken(Java8Parser.PRIVATE, 0); } + public ConstructorModifierContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_constructorModifier; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterConstructorModifier(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitConstructorModifier(this); + } + } + + public final ConstructorModifierContext constructorModifier() throws RecognitionException { + ConstructorModifierContext _localctx = new ConstructorModifierContext(_ctx, getState()); + enterRule(_localctx, 176, RULE_constructorModifier); + try { + setState(1151); + _errHandler.sync(this); + switch (_input.LA(1)) { + case AT: + enterOuterAlt(_localctx, 1); + { + setState(1147); + annotation(); + } + break; + case PUBLIC: + enterOuterAlt(_localctx, 2); + { + setState(1148); + match(PUBLIC); + } + break; + case PROTECTED: + enterOuterAlt(_localctx, 3); + { + setState(1149); + match(PROTECTED); + } + break; + case PRIVATE: + enterOuterAlt(_localctx, 4); + { + setState(1150); + match(PRIVATE); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ConstructorDeclaratorContext extends ParserRuleContext { + public SimpleTypeNameContext simpleTypeName() { + return getRuleContext(SimpleTypeNameContext.class,0); + } + public TerminalNode LPAREN() { return getToken(Java8Parser.LPAREN, 0); } + public TerminalNode RPAREN() { return getToken(Java8Parser.RPAREN, 0); } + public TypeParametersContext typeParameters() { + return getRuleContext(TypeParametersContext.class,0); + } + public FormalParameterListContext formalParameterList() { + return getRuleContext(FormalParameterListContext.class,0); + } + public ConstructorDeclaratorContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_constructorDeclarator; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterConstructorDeclarator(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitConstructorDeclarator(this); + } + } + + public final ConstructorDeclaratorContext constructorDeclarator() throws RecognitionException { + ConstructorDeclaratorContext _localctx = new ConstructorDeclaratorContext(_ctx, getState()); + enterRule(_localctx, 178, RULE_constructorDeclarator); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1154); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LT) { + { + setState(1153); + typeParameters(); + } + } + + setState(1156); + simpleTypeName(); + setState(1157); + match(LPAREN); + setState(1159); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 138111369512L) != 0) || _la==Identifier || _la==AT) { + { + setState(1158); + formalParameterList(); + } + } + + setState(1161); + match(RPAREN); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class SimpleTypeNameContext extends ParserRuleContext { + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public SimpleTypeNameContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_simpleTypeName; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterSimpleTypeName(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitSimpleTypeName(this); + } + } + + public final SimpleTypeNameContext simpleTypeName() throws RecognitionException { + SimpleTypeNameContext _localctx = new SimpleTypeNameContext(_ctx, getState()); + enterRule(_localctx, 180, RULE_simpleTypeName); + try { + enterOuterAlt(_localctx, 1); + { + setState(1163); + match(Identifier); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ConstructorBodyContext extends ParserRuleContext { + public TerminalNode LBRACE() { return getToken(Java8Parser.LBRACE, 0); } + public TerminalNode RBRACE() { return getToken(Java8Parser.RBRACE, 0); } + public ExplicitConstructorInvocationContext explicitConstructorInvocation() { + return getRuleContext(ExplicitConstructorInvocationContext.class,0); + } + public BlockStatementsContext blockStatements() { + return getRuleContext(BlockStatementsContext.class,0); + } + public ConstructorBodyContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_constructorBody; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterConstructorBody(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitConstructorBody(this); + } + } + + public final ConstructorBodyContext constructorBody() throws RecognitionException { + ConstructorBodyContext _localctx = new ConstructorBodyContext(_ctx, getState()); + enterRule(_localctx, 182, RULE_constructorBody); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1165); + match(LBRACE); + setState(1167); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,103,_ctx) ) { + case 1: + { + setState(1166); + explicitConstructorInvocation(); + } + break; + } + setState(1170); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & -8359349417232995522L) != 0) || ((((_la - 79)) & ~0x3f) == 0 && ((1L << (_la - 79)) & 25165827L) != 0)) { + { + setState(1169); + blockStatements(); + } + } + + setState(1172); + match(RBRACE); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ExplicitConstructorInvocationContext extends ParserRuleContext { + public TerminalNode THIS() { return getToken(Java8Parser.THIS, 0); } + public TerminalNode LPAREN() { return getToken(Java8Parser.LPAREN, 0); } + public TerminalNode RPAREN() { return getToken(Java8Parser.RPAREN, 0); } + public TerminalNode SEMI() { return getToken(Java8Parser.SEMI, 0); } + public TypeArgumentsContext typeArguments() { + return getRuleContext(TypeArgumentsContext.class,0); + } + public ArgumentListContext argumentList() { + return getRuleContext(ArgumentListContext.class,0); + } + public TerminalNode SUPER() { return getToken(Java8Parser.SUPER, 0); } + public ExpressionNameContext expressionName() { + return getRuleContext(ExpressionNameContext.class,0); + } + public TerminalNode DOT() { return getToken(Java8Parser.DOT, 0); } + public PrimaryContext primary() { + return getRuleContext(PrimaryContext.class,0); + } + public ExplicitConstructorInvocationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_explicitConstructorInvocation; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterExplicitConstructorInvocation(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitExplicitConstructorInvocation(this); + } + } + + public final ExplicitConstructorInvocationContext explicitConstructorInvocation() throws RecognitionException { + ExplicitConstructorInvocationContext _localctx = new ExplicitConstructorInvocationContext(_ctx, getState()); + enterRule(_localctx, 184, RULE_explicitConstructorInvocation); + int _la; + try { + setState(1220); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,113,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1175); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LT) { + { + setState(1174); + typeArguments(); + } + } + + setState(1177); + match(THIS); + setState(1178); + match(LPAREN); + setState(1180); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 286270087177978152L) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & 25769819139L) != 0)) { + { + setState(1179); + argumentList(); + } + } + + setState(1182); + match(RPAREN); + setState(1183); + match(SEMI); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1185); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LT) { + { + setState(1184); + typeArguments(); + } + } + + setState(1187); + match(SUPER); + setState(1188); + match(LPAREN); + setState(1190); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 286270087177978152L) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & 25769819139L) != 0)) { + { + setState(1189); + argumentList(); + } + } + + setState(1192); + match(RPAREN); + setState(1193); + match(SEMI); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(1194); + expressionName(); + setState(1195); + match(DOT); + setState(1197); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LT) { + { + setState(1196); + typeArguments(); + } + } + + setState(1199); + match(SUPER); + setState(1200); + match(LPAREN); + setState(1202); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 286270087177978152L) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & 25769819139L) != 0)) { + { + setState(1201); + argumentList(); + } + } + + setState(1204); + match(RPAREN); + setState(1205); + match(SEMI); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(1207); + primary(); + setState(1208); + match(DOT); + setState(1210); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LT) { + { + setState(1209); + typeArguments(); + } + } + + setState(1212); + match(SUPER); + setState(1213); + match(LPAREN); + setState(1215); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 286270087177978152L) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & 25769819139L) != 0)) { + { + setState(1214); + argumentList(); + } + } + + setState(1217); + match(RPAREN); + setState(1218); + match(SEMI); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class EnumDeclarationContext extends ParserRuleContext { + public TerminalNode ENUM() { return getToken(Java8Parser.ENUM, 0); } + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public EnumBodyContext enumBody() { + return getRuleContext(EnumBodyContext.class,0); + } + public List classModifier() { + return getRuleContexts(ClassModifierContext.class); + } + public ClassModifierContext classModifier(int i) { + return getRuleContext(ClassModifierContext.class,i); + } + public SuperinterfacesContext superinterfaces() { + return getRuleContext(SuperinterfacesContext.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 Java8Listener ) ((Java8Listener)listener).enterEnumDeclaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitEnumDeclaration(this); + } + } + + public final EnumDeclarationContext enumDeclaration() throws RecognitionException { + EnumDeclarationContext _localctx = new EnumDeclarationContext(_ctx, getState()); + enterRule(_localctx, 186, RULE_enumDeclaration); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1225); + _errHandler.sync(this); + _la = _input.LA(1); + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & 884763525122L) != 0) || _la==AT) { + { + { + setState(1222); + classModifier(); + } + } + setState(1227); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1228); + match(ENUM); + setState(1229); + match(Identifier); + setState(1231); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==IMPLEMENTS) { + { + setState(1230); + superinterfaces(); + } + } + + setState(1233); + enumBody(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class EnumBodyContext extends ParserRuleContext { + public TerminalNode LBRACE() { return getToken(Java8Parser.LBRACE, 0); } + public TerminalNode RBRACE() { return getToken(Java8Parser.RBRACE, 0); } + public EnumConstantListContext enumConstantList() { + return getRuleContext(EnumConstantListContext.class,0); + } + public TerminalNode COMMA() { return getToken(Java8Parser.COMMA, 0); } + public EnumBodyDeclarationsContext enumBodyDeclarations() { + return getRuleContext(EnumBodyDeclarationsContext.class,0); + } + public EnumBodyContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_enumBody; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterEnumBody(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitEnumBody(this); + } + } + + public final EnumBodyContext enumBody() throws RecognitionException { + EnumBodyContext _localctx = new EnumBodyContext(_ctx, getState()); + enterRule(_localctx, 188, RULE_enumBody); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1235); + match(LBRACE); + setState(1237); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==Identifier || _la==AT) { + { + setState(1236); + enumConstantList(); + } + } + + setState(1240); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==COMMA) { + { + setState(1239); + match(COMMA); + } + } + + setState(1243); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==SEMI) { + { + setState(1242); + enumBodyDeclarations(); + } + } + + setState(1245); + match(RBRACE); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class EnumConstantListContext extends ParserRuleContext { + public List enumConstant() { + return getRuleContexts(EnumConstantContext.class); + } + public EnumConstantContext enumConstant(int i) { + return getRuleContext(EnumConstantContext.class,i); + } + public List COMMA() { return getTokens(Java8Parser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(Java8Parser.COMMA, i); + } + public EnumConstantListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_enumConstantList; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterEnumConstantList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitEnumConstantList(this); + } + } + + public final EnumConstantListContext enumConstantList() throws RecognitionException { + EnumConstantListContext _localctx = new EnumConstantListContext(_ctx, getState()); + enterRule(_localctx, 190, RULE_enumConstantList); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(1247); + enumConstant(); + setState(1252); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,119,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(1248); + match(COMMA); + setState(1249); + enumConstant(); + } + } + } + setState(1254); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,119,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class EnumConstantContext extends ParserRuleContext { + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public List enumConstantModifier() { + return getRuleContexts(EnumConstantModifierContext.class); + } + public EnumConstantModifierContext enumConstantModifier(int i) { + return getRuleContext(EnumConstantModifierContext.class,i); + } + public TerminalNode LPAREN() { return getToken(Java8Parser.LPAREN, 0); } + public TerminalNode RPAREN() { return getToken(Java8Parser.RPAREN, 0); } + public ClassBodyContext classBody() { + return getRuleContext(ClassBodyContext.class,0); + } + public ArgumentListContext argumentList() { + return getRuleContext(ArgumentListContext.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 Java8Listener ) ((Java8Listener)listener).enterEnumConstant(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitEnumConstant(this); + } + } + + public final EnumConstantContext enumConstant() throws RecognitionException { + EnumConstantContext _localctx = new EnumConstantContext(_ctx, getState()); + enterRule(_localctx, 192, RULE_enumConstant); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1258); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==AT) { + { + { + setState(1255); + enumConstantModifier(); + } + } + setState(1260); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1261); + match(Identifier); + setState(1267); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LPAREN) { + { + setState(1262); + match(LPAREN); + setState(1264); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 286270087177978152L) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & 25769819139L) != 0)) { + { + setState(1263); + argumentList(); + } + } + + setState(1266); + match(RPAREN); + } + } + + setState(1270); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LBRACE) { + { + setState(1269); + classBody(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class EnumConstantModifierContext extends ParserRuleContext { + public AnnotationContext annotation() { + return getRuleContext(AnnotationContext.class,0); + } + public EnumConstantModifierContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_enumConstantModifier; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterEnumConstantModifier(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitEnumConstantModifier(this); + } + } + + public final EnumConstantModifierContext enumConstantModifier() throws RecognitionException { + EnumConstantModifierContext _localctx = new EnumConstantModifierContext(_ctx, getState()); + enterRule(_localctx, 194, RULE_enumConstantModifier); + try { + enterOuterAlt(_localctx, 1); + { + setState(1272); + annotation(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class EnumBodyDeclarationsContext extends ParserRuleContext { + public TerminalNode SEMI() { return getToken(Java8Parser.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 Java8Listener ) ((Java8Listener)listener).enterEnumBodyDeclarations(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitEnumBodyDeclarations(this); + } + } + + public final EnumBodyDeclarationsContext enumBodyDeclarations() throws RecognitionException { + EnumBodyDeclarationsContext _localctx = new EnumBodyDeclarationsContext(_ctx, getState()); + enterRule(_localctx, 196, RULE_enumBodyDeclarations); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1274); + match(SEMI); + setState(1278); + _errHandler.sync(this); + _la = _input.LA(1); + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & -8645991068613655766L) != 0) || ((((_la - 68)) & ~0x3f) == 0 && ((1L << (_la - 68)) & 51539607553L) != 0)) { + { + { + setState(1275); + classBodyDeclaration(); + } + } + setState(1280); + _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; + } + + @SuppressWarnings("CheckReturnValue") + public static class InterfaceDeclarationContext extends ParserRuleContext { + public NormalInterfaceDeclarationContext normalInterfaceDeclaration() { + return getRuleContext(NormalInterfaceDeclarationContext.class,0); + } + public AnnotationTypeDeclarationContext annotationTypeDeclaration() { + return getRuleContext(AnnotationTypeDeclarationContext.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 Java8Listener ) ((Java8Listener)listener).enterInterfaceDeclaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitInterfaceDeclaration(this); + } + } + + public final InterfaceDeclarationContext interfaceDeclaration() throws RecognitionException { + InterfaceDeclarationContext _localctx = new InterfaceDeclarationContext(_ctx, getState()); + enterRule(_localctx, 198, RULE_interfaceDeclaration); + try { + setState(1283); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,125,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1281); + normalInterfaceDeclaration(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1282); + annotationTypeDeclaration(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class NormalInterfaceDeclarationContext extends ParserRuleContext { + public TerminalNode INTERFACE() { return getToken(Java8Parser.INTERFACE, 0); } + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public InterfaceBodyContext interfaceBody() { + return getRuleContext(InterfaceBodyContext.class,0); + } + public List interfaceModifier() { + return getRuleContexts(InterfaceModifierContext.class); + } + public InterfaceModifierContext interfaceModifier(int i) { + return getRuleContext(InterfaceModifierContext.class,i); + } + public TypeParametersContext typeParameters() { + return getRuleContext(TypeParametersContext.class,0); + } + public ExtendsInterfacesContext extendsInterfaces() { + return getRuleContext(ExtendsInterfacesContext.class,0); + } + public NormalInterfaceDeclarationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_normalInterfaceDeclaration; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterNormalInterfaceDeclaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitNormalInterfaceDeclaration(this); + } + } + + public final NormalInterfaceDeclarationContext normalInterfaceDeclaration() throws RecognitionException { + NormalInterfaceDeclarationContext _localctx = new NormalInterfaceDeclarationContext(_ctx, getState()); + enterRule(_localctx, 200, RULE_normalInterfaceDeclaration); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1288); + _errHandler.sync(this); + _la = _input.LA(1); + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & 884763262978L) != 0) || _la==AT) { + { + { + setState(1285); + interfaceModifier(); + } + } + setState(1290); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1291); + match(INTERFACE); + setState(1292); + match(Identifier); + setState(1294); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LT) { + { + setState(1293); + typeParameters(); + } + } + + setState(1297); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==EXTENDS) { + { + setState(1296); + extendsInterfaces(); + } + } + + setState(1299); + interfaceBody(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class InterfaceModifierContext extends ParserRuleContext { + public AnnotationContext annotation() { + return getRuleContext(AnnotationContext.class,0); + } + public TerminalNode PUBLIC() { return getToken(Java8Parser.PUBLIC, 0); } + public TerminalNode PROTECTED() { return getToken(Java8Parser.PROTECTED, 0); } + public TerminalNode PRIVATE() { return getToken(Java8Parser.PRIVATE, 0); } + public TerminalNode ABSTRACT() { return getToken(Java8Parser.ABSTRACT, 0); } + public TerminalNode STATIC() { return getToken(Java8Parser.STATIC, 0); } + public TerminalNode STRICTFP() { return getToken(Java8Parser.STRICTFP, 0); } + public InterfaceModifierContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_interfaceModifier; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterInterfaceModifier(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitInterfaceModifier(this); + } + } + + public final InterfaceModifierContext interfaceModifier() throws RecognitionException { + InterfaceModifierContext _localctx = new InterfaceModifierContext(_ctx, getState()); + enterRule(_localctx, 202, RULE_interfaceModifier); + try { + setState(1308); + _errHandler.sync(this); + switch (_input.LA(1)) { + case AT: + enterOuterAlt(_localctx, 1); + { + setState(1301); + annotation(); + } + break; + case PUBLIC: + enterOuterAlt(_localctx, 2); + { + setState(1302); + match(PUBLIC); + } + break; + case PROTECTED: + enterOuterAlt(_localctx, 3); + { + setState(1303); + match(PROTECTED); + } + break; + case PRIVATE: + enterOuterAlt(_localctx, 4); + { + setState(1304); + match(PRIVATE); + } + break; + case ABSTRACT: + enterOuterAlt(_localctx, 5); + { + setState(1305); + match(ABSTRACT); + } + break; + case STATIC: + enterOuterAlt(_localctx, 6); + { + setState(1306); + match(STATIC); + } + break; + case STRICTFP: + enterOuterAlt(_localctx, 7); + { + setState(1307); + 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; + } + + @SuppressWarnings("CheckReturnValue") + public static class ExtendsInterfacesContext extends ParserRuleContext { + public TerminalNode EXTENDS() { return getToken(Java8Parser.EXTENDS, 0); } + public InterfaceTypeListContext interfaceTypeList() { + return getRuleContext(InterfaceTypeListContext.class,0); + } + public ExtendsInterfacesContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_extendsInterfaces; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterExtendsInterfaces(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitExtendsInterfaces(this); + } + } + + public final ExtendsInterfacesContext extendsInterfaces() throws RecognitionException { + ExtendsInterfacesContext _localctx = new ExtendsInterfacesContext(_ctx, getState()); + enterRule(_localctx, 204, RULE_extendsInterfaces); + try { + enterOuterAlt(_localctx, 1); + { + setState(1310); + match(EXTENDS); + setState(1311); + interfaceTypeList(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class InterfaceBodyContext extends ParserRuleContext { + public TerminalNode LBRACE() { return getToken(Java8Parser.LBRACE, 0); } + public TerminalNode RBRACE() { return getToken(Java8Parser.RBRACE, 0); } + public List interfaceMemberDeclaration() { + return getRuleContexts(InterfaceMemberDeclarationContext.class); + } + public InterfaceMemberDeclarationContext interfaceMemberDeclaration(int i) { + return getRuleContext(InterfaceMemberDeclarationContext.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 Java8Listener ) ((Java8Listener)listener).enterInterfaceBody(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitInterfaceBody(this); + } + } + + public final InterfaceBodyContext interfaceBody() throws RecognitionException { + InterfaceBodyContext _localctx = new InterfaceBodyContext(_ctx, getState()); + enterRule(_localctx, 206, RULE_interfaceBody); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1313); + match(LBRACE); + setState(1317); + _errHandler.sync(this); + _la = _input.LA(1); + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & -9223089538734927062L) != 0) || ((((_la - 68)) & ~0x3f) == 0 && ((1L << (_la - 68)) & 51539607553L) != 0)) { + { + { + setState(1314); + interfaceMemberDeclaration(); + } + } + setState(1319); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1320); + match(RBRACE); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class InterfaceMemberDeclarationContext extends ParserRuleContext { + public ConstantDeclarationContext constantDeclaration() { + return getRuleContext(ConstantDeclarationContext.class,0); + } + public InterfaceMethodDeclarationContext interfaceMethodDeclaration() { + return getRuleContext(InterfaceMethodDeclarationContext.class,0); + } + public ClassDeclarationContext classDeclaration() { + return getRuleContext(ClassDeclarationContext.class,0); + } + public InterfaceDeclarationContext interfaceDeclaration() { + return getRuleContext(InterfaceDeclarationContext.class,0); + } + public TerminalNode SEMI() { return getToken(Java8Parser.SEMI, 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 Java8Listener ) ((Java8Listener)listener).enterInterfaceMemberDeclaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitInterfaceMemberDeclaration(this); + } + } + + public final InterfaceMemberDeclarationContext interfaceMemberDeclaration() throws RecognitionException { + InterfaceMemberDeclarationContext _localctx = new InterfaceMemberDeclarationContext(_ctx, getState()); + enterRule(_localctx, 208, RULE_interfaceMemberDeclaration); + try { + setState(1327); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,131,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1322); + constantDeclaration(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1323); + interfaceMethodDeclaration(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(1324); + classDeclaration(); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(1325); + interfaceDeclaration(); + } + break; + case 5: + enterOuterAlt(_localctx, 5); + { + setState(1326); + match(SEMI); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ConstantDeclarationContext extends ParserRuleContext { + public UnannTypeContext unannType() { + return getRuleContext(UnannTypeContext.class,0); + } + public VariableDeclaratorListContext variableDeclaratorList() { + return getRuleContext(VariableDeclaratorListContext.class,0); + } + public TerminalNode SEMI() { return getToken(Java8Parser.SEMI, 0); } + public List constantModifier() { + return getRuleContexts(ConstantModifierContext.class); + } + public ConstantModifierContext constantModifier(int i) { + return getRuleContext(ConstantModifierContext.class,i); + } + public ConstantDeclarationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_constantDeclaration; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterConstantDeclaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitConstantDeclaration(this); + } + } + + public final ConstantDeclarationContext constantDeclaration() throws RecognitionException { + ConstantDeclarationContext _localctx = new ConstantDeclarationContext(_ctx, getState()); + enterRule(_localctx, 210, RULE_constantDeclaration); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1332); + _errHandler.sync(this); + _la = _input.LA(1); + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & 309237907456L) != 0) || _la==AT) { + { + { + setState(1329); + constantModifier(); + } + } + setState(1334); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1335); + unannType(); + setState(1336); + variableDeclaratorList(); + setState(1337); + match(SEMI); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ConstantModifierContext extends ParserRuleContext { + public AnnotationContext annotation() { + return getRuleContext(AnnotationContext.class,0); + } + public TerminalNode PUBLIC() { return getToken(Java8Parser.PUBLIC, 0); } + public TerminalNode STATIC() { return getToken(Java8Parser.STATIC, 0); } + public TerminalNode FINAL() { return getToken(Java8Parser.FINAL, 0); } + public ConstantModifierContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_constantModifier; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterConstantModifier(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitConstantModifier(this); + } + } + + public final ConstantModifierContext constantModifier() throws RecognitionException { + ConstantModifierContext _localctx = new ConstantModifierContext(_ctx, getState()); + enterRule(_localctx, 212, RULE_constantModifier); + try { + setState(1343); + _errHandler.sync(this); + switch (_input.LA(1)) { + case AT: + enterOuterAlt(_localctx, 1); + { + setState(1339); + annotation(); + } + break; + case PUBLIC: + enterOuterAlt(_localctx, 2); + { + setState(1340); + match(PUBLIC); + } + break; + case STATIC: + enterOuterAlt(_localctx, 3); + { + setState(1341); + match(STATIC); + } + break; + case FINAL: + enterOuterAlt(_localctx, 4); + { + setState(1342); + match(FINAL); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class InterfaceMethodDeclarationContext extends ParserRuleContext { + public MethodHeaderContext methodHeader() { + return getRuleContext(MethodHeaderContext.class,0); + } + public MethodBodyContext methodBody() { + return getRuleContext(MethodBodyContext.class,0); + } + public List interfaceMethodModifier() { + return getRuleContexts(InterfaceMethodModifierContext.class); + } + public InterfaceMethodModifierContext interfaceMethodModifier(int i) { + return getRuleContext(InterfaceMethodModifierContext.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 Java8Listener ) ((Java8Listener)listener).enterInterfaceMethodDeclaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitInterfaceMethodDeclaration(this); + } + } + + public final InterfaceMethodDeclarationContext interfaceMethodDeclaration() throws RecognitionException { + InterfaceMethodDeclarationContext _localctx = new InterfaceMethodDeclarationContext(_ctx, getState()); + enterRule(_localctx, 214, RULE_interfaceMethodDeclaration); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1348); + _errHandler.sync(this); + _la = _input.LA(1); + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & 858993463298L) != 0) || _la==AT) { + { + { + setState(1345); + interfaceMethodModifier(); + } + } + setState(1350); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1351); + methodHeader(); + setState(1352); + methodBody(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class InterfaceMethodModifierContext extends ParserRuleContext { + public AnnotationContext annotation() { + return getRuleContext(AnnotationContext.class,0); + } + public TerminalNode PUBLIC() { return getToken(Java8Parser.PUBLIC, 0); } + public TerminalNode ABSTRACT() { return getToken(Java8Parser.ABSTRACT, 0); } + public TerminalNode DEFAULT() { return getToken(Java8Parser.DEFAULT, 0); } + public TerminalNode STATIC() { return getToken(Java8Parser.STATIC, 0); } + public TerminalNode STRICTFP() { return getToken(Java8Parser.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 Java8Listener ) ((Java8Listener)listener).enterInterfaceMethodModifier(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitInterfaceMethodModifier(this); + } + } + + public final InterfaceMethodModifierContext interfaceMethodModifier() throws RecognitionException { + InterfaceMethodModifierContext _localctx = new InterfaceMethodModifierContext(_ctx, getState()); + enterRule(_localctx, 216, RULE_interfaceMethodModifier); + try { + setState(1360); + _errHandler.sync(this); + switch (_input.LA(1)) { + case AT: + enterOuterAlt(_localctx, 1); + { + setState(1354); + annotation(); + } + break; + case PUBLIC: + enterOuterAlt(_localctx, 2); + { + setState(1355); + match(PUBLIC); + } + break; + case ABSTRACT: + enterOuterAlt(_localctx, 3); + { + setState(1356); + match(ABSTRACT); + } + break; + case DEFAULT: + enterOuterAlt(_localctx, 4); + { + setState(1357); + match(DEFAULT); + } + break; + case STATIC: + enterOuterAlt(_localctx, 5); + { + setState(1358); + match(STATIC); + } + break; + case STRICTFP: + enterOuterAlt(_localctx, 6); + { + setState(1359); + 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; + } + + @SuppressWarnings("CheckReturnValue") + public static class AnnotationTypeDeclarationContext extends ParserRuleContext { + public TerminalNode AT() { return getToken(Java8Parser.AT, 0); } + public TerminalNode INTERFACE() { return getToken(Java8Parser.INTERFACE, 0); } + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public AnnotationTypeBodyContext annotationTypeBody() { + return getRuleContext(AnnotationTypeBodyContext.class,0); + } + public List interfaceModifier() { + return getRuleContexts(InterfaceModifierContext.class); + } + public InterfaceModifierContext interfaceModifier(int i) { + return getRuleContext(InterfaceModifierContext.class,i); + } + 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 Java8Listener ) ((Java8Listener)listener).enterAnnotationTypeDeclaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitAnnotationTypeDeclaration(this); + } + } + + public final AnnotationTypeDeclarationContext annotationTypeDeclaration() throws RecognitionException { + AnnotationTypeDeclarationContext _localctx = new AnnotationTypeDeclarationContext(_ctx, getState()); + enterRule(_localctx, 218, RULE_annotationTypeDeclaration); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(1365); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,136,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(1362); + interfaceModifier(); + } + } + } + setState(1367); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,136,_ctx); + } + setState(1368); + match(AT); + setState(1369); + match(INTERFACE); + setState(1370); + match(Identifier); + setState(1371); + annotationTypeBody(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class AnnotationTypeBodyContext extends ParserRuleContext { + public TerminalNode LBRACE() { return getToken(Java8Parser.LBRACE, 0); } + public TerminalNode RBRACE() { return getToken(Java8Parser.RBRACE, 0); } + public List annotationTypeMemberDeclaration() { + return getRuleContexts(AnnotationTypeMemberDeclarationContext.class); + } + public AnnotationTypeMemberDeclarationContext annotationTypeMemberDeclaration(int i) { + return getRuleContext(AnnotationTypeMemberDeclarationContext.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 Java8Listener ) ((Java8Listener)listener).enterAnnotationTypeBody(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitAnnotationTypeBody(this); + } + } + + public final AnnotationTypeBodyContext annotationTypeBody() throws RecognitionException { + AnnotationTypeBodyContext _localctx = new AnnotationTypeBodyContext(_ctx, getState()); + enterRule(_localctx, 220, RULE_annotationTypeBody); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1373); + match(LBRACE); + setState(1377); + _errHandler.sync(this); + _la = _input.LA(1); + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & -9223371013711641814L) != 0) || _la==Identifier || _la==AT) { + { + { + setState(1374); + annotationTypeMemberDeclaration(); + } + } + setState(1379); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1380); + match(RBRACE); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class AnnotationTypeMemberDeclarationContext extends ParserRuleContext { + public AnnotationTypeElementDeclarationContext annotationTypeElementDeclaration() { + return getRuleContext(AnnotationTypeElementDeclarationContext.class,0); + } + public ConstantDeclarationContext constantDeclaration() { + return getRuleContext(ConstantDeclarationContext.class,0); + } + public ClassDeclarationContext classDeclaration() { + return getRuleContext(ClassDeclarationContext.class,0); + } + public InterfaceDeclarationContext interfaceDeclaration() { + return getRuleContext(InterfaceDeclarationContext.class,0); + } + public TerminalNode SEMI() { return getToken(Java8Parser.SEMI, 0); } + public AnnotationTypeMemberDeclarationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_annotationTypeMemberDeclaration; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterAnnotationTypeMemberDeclaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitAnnotationTypeMemberDeclaration(this); + } + } + + public final AnnotationTypeMemberDeclarationContext annotationTypeMemberDeclaration() throws RecognitionException { + AnnotationTypeMemberDeclarationContext _localctx = new AnnotationTypeMemberDeclarationContext(_ctx, getState()); + enterRule(_localctx, 222, RULE_annotationTypeMemberDeclaration); + try { + setState(1387); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,138,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1382); + annotationTypeElementDeclaration(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1383); + constantDeclaration(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(1384); + classDeclaration(); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(1385); + interfaceDeclaration(); + } + break; + case 5: + enterOuterAlt(_localctx, 5); + { + setState(1386); + match(SEMI); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class AnnotationTypeElementDeclarationContext extends ParserRuleContext { + public UnannTypeContext unannType() { + return getRuleContext(UnannTypeContext.class,0); + } + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public TerminalNode LPAREN() { return getToken(Java8Parser.LPAREN, 0); } + public TerminalNode RPAREN() { return getToken(Java8Parser.RPAREN, 0); } + public TerminalNode SEMI() { return getToken(Java8Parser.SEMI, 0); } + public List annotationTypeElementModifier() { + return getRuleContexts(AnnotationTypeElementModifierContext.class); + } + public AnnotationTypeElementModifierContext annotationTypeElementModifier(int i) { + return getRuleContext(AnnotationTypeElementModifierContext.class,i); + } + public DimsContext dims() { + return getRuleContext(DimsContext.class,0); + } + public DefaultValueContext defaultValue() { + return getRuleContext(DefaultValueContext.class,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 Java8Listener ) ((Java8Listener)listener).enterAnnotationTypeElementDeclaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitAnnotationTypeElementDeclaration(this); + } + } + + public final AnnotationTypeElementDeclarationContext annotationTypeElementDeclaration() throws RecognitionException { + AnnotationTypeElementDeclarationContext _localctx = new AnnotationTypeElementDeclarationContext(_ctx, getState()); + enterRule(_localctx, 224, RULE_annotationTypeElementDeclaration); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1392); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==ABSTRACT || _la==PUBLIC || _la==AT) { + { + { + setState(1389); + annotationTypeElementModifier(); + } + } + setState(1394); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1395); + unannType(); + setState(1396); + match(Identifier); + setState(1397); + match(LPAREN); + setState(1398); + match(RPAREN); + setState(1400); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LBRACK || _la==AT) { + { + setState(1399); + dims(); + } + } + + setState(1403); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==DEFAULT) { + { + setState(1402); + defaultValue(); + } + } + + setState(1405); + match(SEMI); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class AnnotationTypeElementModifierContext extends ParserRuleContext { + public AnnotationContext annotation() { + return getRuleContext(AnnotationContext.class,0); + } + public TerminalNode PUBLIC() { return getToken(Java8Parser.PUBLIC, 0); } + public TerminalNode ABSTRACT() { return getToken(Java8Parser.ABSTRACT, 0); } + public AnnotationTypeElementModifierContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_annotationTypeElementModifier; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterAnnotationTypeElementModifier(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitAnnotationTypeElementModifier(this); + } + } + + public final AnnotationTypeElementModifierContext annotationTypeElementModifier() throws RecognitionException { + AnnotationTypeElementModifierContext _localctx = new AnnotationTypeElementModifierContext(_ctx, getState()); + enterRule(_localctx, 226, RULE_annotationTypeElementModifier); + try { + setState(1410); + _errHandler.sync(this); + switch (_input.LA(1)) { + case AT: + enterOuterAlt(_localctx, 1); + { + setState(1407); + annotation(); + } + break; + case PUBLIC: + enterOuterAlt(_localctx, 2); + { + setState(1408); + match(PUBLIC); + } + break; + case ABSTRACT: + enterOuterAlt(_localctx, 3); + { + setState(1409); + match(ABSTRACT); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class DefaultValueContext extends ParserRuleContext { + public TerminalNode DEFAULT() { return getToken(Java8Parser.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 Java8Listener ) ((Java8Listener)listener).enterDefaultValue(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitDefaultValue(this); + } + } + + public final DefaultValueContext defaultValue() throws RecognitionException { + DefaultValueContext _localctx = new DefaultValueContext(_ctx, getState()); + enterRule(_localctx, 228, RULE_defaultValue); + try { + enterOuterAlt(_localctx, 1); + { + setState(1412); + match(DEFAULT); + setState(1413); + elementValue(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class AnnotationContext extends ParserRuleContext { + public NormalAnnotationContext normalAnnotation() { + return getRuleContext(NormalAnnotationContext.class,0); + } + public MarkerAnnotationContext markerAnnotation() { + return getRuleContext(MarkerAnnotationContext.class,0); + } + public SingleElementAnnotationContext singleElementAnnotation() { + return getRuleContext(SingleElementAnnotationContext.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 Java8Listener ) ((Java8Listener)listener).enterAnnotation(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitAnnotation(this); + } + } + + public final AnnotationContext annotation() throws RecognitionException { + AnnotationContext _localctx = new AnnotationContext(_ctx, getState()); + enterRule(_localctx, 230, RULE_annotation); + try { + setState(1418); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,143,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1415); + normalAnnotation(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1416); + markerAnnotation(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(1417); + singleElementAnnotation(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class NormalAnnotationContext extends ParserRuleContext { + public TerminalNode AT() { return getToken(Java8Parser.AT, 0); } + public TypeNameContext typeName() { + return getRuleContext(TypeNameContext.class,0); + } + public TerminalNode LPAREN() { return getToken(Java8Parser.LPAREN, 0); } + public TerminalNode RPAREN() { return getToken(Java8Parser.RPAREN, 0); } + public ElementValuePairListContext elementValuePairList() { + return getRuleContext(ElementValuePairListContext.class,0); + } + public NormalAnnotationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_normalAnnotation; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterNormalAnnotation(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitNormalAnnotation(this); + } + } + + public final NormalAnnotationContext normalAnnotation() throws RecognitionException { + NormalAnnotationContext _localctx = new NormalAnnotationContext(_ctx, getState()); + enterRule(_localctx, 232, RULE_normalAnnotation); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1420); + match(AT); + setState(1421); + typeName(); + setState(1422); + match(LPAREN); + setState(1424); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==Identifier) { + { + setState(1423); + elementValuePairList(); + } + } + + setState(1426); + match(RPAREN); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ElementValuePairListContext extends ParserRuleContext { + public List elementValuePair() { + return getRuleContexts(ElementValuePairContext.class); + } + public ElementValuePairContext elementValuePair(int i) { + return getRuleContext(ElementValuePairContext.class,i); + } + public List COMMA() { return getTokens(Java8Parser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(Java8Parser.COMMA, i); + } + public ElementValuePairListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_elementValuePairList; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterElementValuePairList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitElementValuePairList(this); + } + } + + public final ElementValuePairListContext elementValuePairList() throws RecognitionException { + ElementValuePairListContext _localctx = new ElementValuePairListContext(_ctx, getState()); + enterRule(_localctx, 234, RULE_elementValuePairList); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1428); + elementValuePair(); + setState(1433); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(1429); + match(COMMA); + setState(1430); + elementValuePair(); + } + } + setState(1435); + _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; + } + + @SuppressWarnings("CheckReturnValue") + public static class ElementValuePairContext extends ParserRuleContext { + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public TerminalNode ASSIGN() { return getToken(Java8Parser.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 Java8Listener ) ((Java8Listener)listener).enterElementValuePair(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitElementValuePair(this); + } + } + + public final ElementValuePairContext elementValuePair() throws RecognitionException { + ElementValuePairContext _localctx = new ElementValuePairContext(_ctx, getState()); + enterRule(_localctx, 236, RULE_elementValuePair); + try { + enterOuterAlt(_localctx, 1); + { + setState(1436); + match(Identifier); + setState(1437); + match(ASSIGN); + setState(1438); + elementValue(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ElementValueContext extends ParserRuleContext { + public ConditionalExpressionContext conditionalExpression() { + return getRuleContext(ConditionalExpressionContext.class,0); + } + public ElementValueArrayInitializerContext elementValueArrayInitializer() { + return getRuleContext(ElementValueArrayInitializerContext.class,0); + } + public AnnotationContext annotation() { + return getRuleContext(AnnotationContext.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 Java8Listener ) ((Java8Listener)listener).enterElementValue(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitElementValue(this); + } + } + + public final ElementValueContext elementValue() throws RecognitionException { + ElementValueContext _localctx = new ElementValueContext(_ctx, getState()); + enterRule(_localctx, 238, RULE_elementValue); + try { + setState(1443); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,146,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1440); + conditionalExpression(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1441); + elementValueArrayInitializer(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(1442); + annotation(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ElementValueArrayInitializerContext extends ParserRuleContext { + public TerminalNode LBRACE() { return getToken(Java8Parser.LBRACE, 0); } + public TerminalNode RBRACE() { return getToken(Java8Parser.RBRACE, 0); } + public ElementValueListContext elementValueList() { + return getRuleContext(ElementValueListContext.class,0); + } + public TerminalNode COMMA() { return getToken(Java8Parser.COMMA, 0); } + 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 Java8Listener ) ((Java8Listener)listener).enterElementValueArrayInitializer(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitElementValueArrayInitializer(this); + } + } + + public final ElementValueArrayInitializerContext elementValueArrayInitializer() throws RecognitionException { + ElementValueArrayInitializerContext _localctx = new ElementValueArrayInitializerContext(_ctx, getState()); + enterRule(_localctx, 240, RULE_elementValueArrayInitializer); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1445); + match(LBRACE); + setState(1447); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 862730839481401640L) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & 25769819139L) != 0)) { + { + setState(1446); + elementValueList(); + } + } + + setState(1450); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==COMMA) { + { + setState(1449); + match(COMMA); + } + } + + setState(1452); + match(RBRACE); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ElementValueListContext extends ParserRuleContext { + public List elementValue() { + return getRuleContexts(ElementValueContext.class); + } + public ElementValueContext elementValue(int i) { + return getRuleContext(ElementValueContext.class,i); + } + public List COMMA() { return getTokens(Java8Parser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(Java8Parser.COMMA, i); + } + public ElementValueListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_elementValueList; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterElementValueList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitElementValueList(this); + } + } + + public final ElementValueListContext elementValueList() throws RecognitionException { + ElementValueListContext _localctx = new ElementValueListContext(_ctx, getState()); + enterRule(_localctx, 242, RULE_elementValueList); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(1454); + elementValue(); + setState(1459); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,149,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(1455); + match(COMMA); + setState(1456); + elementValue(); + } + } + } + setState(1461); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,149,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class MarkerAnnotationContext extends ParserRuleContext { + public TerminalNode AT() { return getToken(Java8Parser.AT, 0); } + public TypeNameContext typeName() { + return getRuleContext(TypeNameContext.class,0); + } + public MarkerAnnotationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_markerAnnotation; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterMarkerAnnotation(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitMarkerAnnotation(this); + } + } + + public final MarkerAnnotationContext markerAnnotation() throws RecognitionException { + MarkerAnnotationContext _localctx = new MarkerAnnotationContext(_ctx, getState()); + enterRule(_localctx, 244, RULE_markerAnnotation); + try { + enterOuterAlt(_localctx, 1); + { + setState(1462); + match(AT); + setState(1463); + typeName(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class SingleElementAnnotationContext extends ParserRuleContext { + public TerminalNode AT() { return getToken(Java8Parser.AT, 0); } + public TypeNameContext typeName() { + return getRuleContext(TypeNameContext.class,0); + } + public TerminalNode LPAREN() { return getToken(Java8Parser.LPAREN, 0); } + public ElementValueContext elementValue() { + return getRuleContext(ElementValueContext.class,0); + } + public TerminalNode RPAREN() { return getToken(Java8Parser.RPAREN, 0); } + public SingleElementAnnotationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_singleElementAnnotation; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterSingleElementAnnotation(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitSingleElementAnnotation(this); + } + } + + public final SingleElementAnnotationContext singleElementAnnotation() throws RecognitionException { + SingleElementAnnotationContext _localctx = new SingleElementAnnotationContext(_ctx, getState()); + enterRule(_localctx, 246, RULE_singleElementAnnotation); + try { + enterOuterAlt(_localctx, 1); + { + setState(1465); + match(AT); + setState(1466); + typeName(); + setState(1467); + match(LPAREN); + setState(1468); + elementValue(); + setState(1469); + match(RPAREN); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ArrayInitializerContext extends ParserRuleContext { + public TerminalNode LBRACE() { return getToken(Java8Parser.LBRACE, 0); } + public TerminalNode RBRACE() { return getToken(Java8Parser.RBRACE, 0); } + public VariableInitializerListContext variableInitializerList() { + return getRuleContext(VariableInitializerListContext.class,0); + } + public TerminalNode COMMA() { return getToken(Java8Parser.COMMA, 0); } + 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 Java8Listener ) ((Java8Listener)listener).enterArrayInitializer(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitArrayInitializer(this); + } + } + + public final ArrayInitializerContext arrayInitializer() throws RecognitionException { + ArrayInitializerContext _localctx = new ArrayInitializerContext(_ctx, getState()); + enterRule(_localctx, 248, RULE_arrayInitializer); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1471); + match(LBRACE); + setState(1473); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 862730839481401640L) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & 25769819139L) != 0)) { + { + setState(1472); + variableInitializerList(); + } + } + + setState(1476); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==COMMA) { + { + setState(1475); + match(COMMA); + } + } + + setState(1478); + match(RBRACE); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class VariableInitializerListContext extends ParserRuleContext { + public List variableInitializer() { + return getRuleContexts(VariableInitializerContext.class); + } + public VariableInitializerContext variableInitializer(int i) { + return getRuleContext(VariableInitializerContext.class,i); + } + public List COMMA() { return getTokens(Java8Parser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(Java8Parser.COMMA, i); + } + public VariableInitializerListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_variableInitializerList; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterVariableInitializerList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitVariableInitializerList(this); + } + } + + public final VariableInitializerListContext variableInitializerList() throws RecognitionException { + VariableInitializerListContext _localctx = new VariableInitializerListContext(_ctx, getState()); + enterRule(_localctx, 250, RULE_variableInitializerList); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(1480); + variableInitializer(); + setState(1485); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,152,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(1481); + match(COMMA); + setState(1482); + variableInitializer(); + } + } + } + setState(1487); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,152,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class BlockContext extends ParserRuleContext { + public TerminalNode LBRACE() { return getToken(Java8Parser.LBRACE, 0); } + public TerminalNode RBRACE() { return getToken(Java8Parser.RBRACE, 0); } + public BlockStatementsContext blockStatements() { + return getRuleContext(BlockStatementsContext.class,0); + } + 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 Java8Listener ) ((Java8Listener)listener).enterBlock(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitBlock(this); + } + } + + public final BlockContext block() throws RecognitionException { + BlockContext _localctx = new BlockContext(_ctx, getState()); + enterRule(_localctx, 252, RULE_block); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1488); + match(LBRACE); + setState(1490); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & -8359349417232995522L) != 0) || ((((_la - 79)) & ~0x3f) == 0 && ((1L << (_la - 79)) & 25165827L) != 0)) { + { + setState(1489); + blockStatements(); + } + } + + setState(1492); + match(RBRACE); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class BlockStatementsContext extends ParserRuleContext { + public List blockStatement() { + return getRuleContexts(BlockStatementContext.class); + } + public BlockStatementContext blockStatement(int i) { + return getRuleContext(BlockStatementContext.class,i); + } + public BlockStatementsContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_blockStatements; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterBlockStatements(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitBlockStatements(this); + } + } + + public final BlockStatementsContext blockStatements() throws RecognitionException { + BlockStatementsContext _localctx = new BlockStatementsContext(_ctx, getState()); + enterRule(_localctx, 254, RULE_blockStatements); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1494); + blockStatement(); + setState(1498); + _errHandler.sync(this); + _la = _input.LA(1); + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & -8359349417232995522L) != 0) || ((((_la - 79)) & ~0x3f) == 0 && ((1L << (_la - 79)) & 25165827L) != 0)) { + { + { + setState(1495); + blockStatement(); + } + } + setState(1500); + _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; + } + + @SuppressWarnings("CheckReturnValue") + public static class BlockStatementContext extends ParserRuleContext { + public LocalVariableDeclarationStatementContext localVariableDeclarationStatement() { + return getRuleContext(LocalVariableDeclarationStatementContext.class,0); + } + public ClassDeclarationContext classDeclaration() { + return getRuleContext(ClassDeclarationContext.class,0); + } + public StatementContext statement() { + return getRuleContext(StatementContext.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 Java8Listener ) ((Java8Listener)listener).enterBlockStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitBlockStatement(this); + } + } + + public final BlockStatementContext blockStatement() throws RecognitionException { + BlockStatementContext _localctx = new BlockStatementContext(_ctx, getState()); + enterRule(_localctx, 256, RULE_blockStatement); + try { + setState(1504); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,155,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1501); + localVariableDeclarationStatement(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1502); + classDeclaration(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(1503); + statement(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class LocalVariableDeclarationStatementContext extends ParserRuleContext { + public LocalVariableDeclarationContext localVariableDeclaration() { + return getRuleContext(LocalVariableDeclarationContext.class,0); + } + public TerminalNode SEMI() { return getToken(Java8Parser.SEMI, 0); } + public LocalVariableDeclarationStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_localVariableDeclarationStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterLocalVariableDeclarationStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitLocalVariableDeclarationStatement(this); + } + } + + public final LocalVariableDeclarationStatementContext localVariableDeclarationStatement() throws RecognitionException { + LocalVariableDeclarationStatementContext _localctx = new LocalVariableDeclarationStatementContext(_ctx, getState()); + enterRule(_localctx, 258, RULE_localVariableDeclarationStatement); + try { + enterOuterAlt(_localctx, 1); + { + setState(1506); + localVariableDeclaration(); + setState(1507); + match(SEMI); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class LocalVariableDeclarationContext extends ParserRuleContext { + public UnannTypeContext unannType() { + return getRuleContext(UnannTypeContext.class,0); + } + public VariableDeclaratorListContext variableDeclaratorList() { + return getRuleContext(VariableDeclaratorListContext.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 Java8Listener ) ((Java8Listener)listener).enterLocalVariableDeclaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitLocalVariableDeclaration(this); + } + } + + public final LocalVariableDeclarationContext localVariableDeclaration() throws RecognitionException { + LocalVariableDeclarationContext _localctx = new LocalVariableDeclarationContext(_ctx, getState()); + enterRule(_localctx, 260, RULE_localVariableDeclaration); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1512); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==FINAL || _la==AT) { + { + { + setState(1509); + variableModifier(); + } + } + setState(1514); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1515); + unannType(); + setState(1516); + variableDeclaratorList(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class StatementContext extends ParserRuleContext { + public StatementWithoutTrailingSubstatementContext statementWithoutTrailingSubstatement() { + return getRuleContext(StatementWithoutTrailingSubstatementContext.class,0); + } + public LabeledStatementContext labeledStatement() { + return getRuleContext(LabeledStatementContext.class,0); + } + public IfThenStatementContext ifThenStatement() { + return getRuleContext(IfThenStatementContext.class,0); + } + public IfThenElseStatementContext ifThenElseStatement() { + return getRuleContext(IfThenElseStatementContext.class,0); + } + public WhileStatementContext whileStatement() { + return getRuleContext(WhileStatementContext.class,0); + } + public ForStatementContext forStatement() { + return getRuleContext(ForStatementContext.class,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 Java8Listener ) ((Java8Listener)listener).enterStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitStatement(this); + } + } + + public final StatementContext statement() throws RecognitionException { + StatementContext _localctx = new StatementContext(_ctx, getState()); + enterRule(_localctx, 262, RULE_statement); + try { + setState(1524); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,157,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1518); + statementWithoutTrailingSubstatement(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1519); + labeledStatement(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(1520); + ifThenStatement(); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(1521); + ifThenElseStatement(); + } + break; + case 5: + enterOuterAlt(_localctx, 5); + { + setState(1522); + whileStatement(); + } + break; + case 6: + enterOuterAlt(_localctx, 6); + { + setState(1523); + forStatement(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class StatementNoShortIfContext extends ParserRuleContext { + public StatementWithoutTrailingSubstatementContext statementWithoutTrailingSubstatement() { + return getRuleContext(StatementWithoutTrailingSubstatementContext.class,0); + } + public LabeledStatementNoShortIfContext labeledStatementNoShortIf() { + return getRuleContext(LabeledStatementNoShortIfContext.class,0); + } + public IfThenElseStatementNoShortIfContext ifThenElseStatementNoShortIf() { + return getRuleContext(IfThenElseStatementNoShortIfContext.class,0); + } + public WhileStatementNoShortIfContext whileStatementNoShortIf() { + return getRuleContext(WhileStatementNoShortIfContext.class,0); + } + public ForStatementNoShortIfContext forStatementNoShortIf() { + return getRuleContext(ForStatementNoShortIfContext.class,0); + } + public StatementNoShortIfContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_statementNoShortIf; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterStatementNoShortIf(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitStatementNoShortIf(this); + } + } + + public final StatementNoShortIfContext statementNoShortIf() throws RecognitionException { + StatementNoShortIfContext _localctx = new StatementNoShortIfContext(_ctx, getState()); + enterRule(_localctx, 264, RULE_statementNoShortIf); + try { + setState(1531); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,158,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1526); + statementWithoutTrailingSubstatement(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1527); + labeledStatementNoShortIf(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(1528); + ifThenElseStatementNoShortIf(); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(1529); + whileStatementNoShortIf(); + } + break; + case 5: + enterOuterAlt(_localctx, 5); + { + setState(1530); + forStatementNoShortIf(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class StatementWithoutTrailingSubstatementContext extends ParserRuleContext { + public BlockContext block() { + return getRuleContext(BlockContext.class,0); + } + public EmptyStatementContext emptyStatement() { + return getRuleContext(EmptyStatementContext.class,0); + } + public ExpressionStatementContext expressionStatement() { + return getRuleContext(ExpressionStatementContext.class,0); + } + public AssertStatementContext assertStatement() { + return getRuleContext(AssertStatementContext.class,0); + } + public SwitchStatementContext switchStatement() { + return getRuleContext(SwitchStatementContext.class,0); + } + public DoStatementContext doStatement() { + return getRuleContext(DoStatementContext.class,0); + } + public BreakStatementContext breakStatement() { + return getRuleContext(BreakStatementContext.class,0); + } + public ContinueStatementContext continueStatement() { + return getRuleContext(ContinueStatementContext.class,0); + } + public ReturnStatementContext returnStatement() { + return getRuleContext(ReturnStatementContext.class,0); + } + public SynchronizedStatementContext synchronizedStatement() { + return getRuleContext(SynchronizedStatementContext.class,0); + } + public ThrowStatementContext throwStatement() { + return getRuleContext(ThrowStatementContext.class,0); + } + public TryStatementContext tryStatement() { + return getRuleContext(TryStatementContext.class,0); + } + public StatementWithoutTrailingSubstatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_statementWithoutTrailingSubstatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterStatementWithoutTrailingSubstatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitStatementWithoutTrailingSubstatement(this); + } + } + + public final StatementWithoutTrailingSubstatementContext statementWithoutTrailingSubstatement() throws RecognitionException { + StatementWithoutTrailingSubstatementContext _localctx = new StatementWithoutTrailingSubstatementContext(_ctx, getState()); + enterRule(_localctx, 266, RULE_statementWithoutTrailingSubstatement); + try { + setState(1545); + _errHandler.sync(this); + switch (_input.LA(1)) { + case LBRACE: + enterOuterAlt(_localctx, 1); + { + setState(1533); + block(); + } + break; + case SEMI: + enterOuterAlt(_localctx, 2); + { + setState(1534); + emptyStatement(); + } + break; + case BOOLEAN: + case BYTE: + case CHAR: + case DOUBLE: + case FLOAT: + case INT: + case LONG: + case NEW: + case SHORT: + case SUPER: + case THIS: + case VOID: + case IntegerLiteral: + case FloatingPointLiteral: + case BooleanLiteral: + case CharacterLiteral: + case StringLiteral: + case NullLiteral: + case LPAREN: + case INC: + case DEC: + case Identifier: + case AT: + enterOuterAlt(_localctx, 3); + { + setState(1535); + expressionStatement(); + } + break; + case ASSERT: + enterOuterAlt(_localctx, 4); + { + setState(1536); + assertStatement(); + } + break; + case SWITCH: + enterOuterAlt(_localctx, 5); + { + setState(1537); + switchStatement(); + } + break; + case DO: + enterOuterAlt(_localctx, 6); + { + setState(1538); + doStatement(); + } + break; + case BREAK: + enterOuterAlt(_localctx, 7); + { + setState(1539); + breakStatement(); + } + break; + case CONTINUE: + enterOuterAlt(_localctx, 8); + { + setState(1540); + continueStatement(); + } + break; + case RETURN: + enterOuterAlt(_localctx, 9); + { + setState(1541); + returnStatement(); + } + break; + case SYNCHRONIZED: + enterOuterAlt(_localctx, 10); + { + setState(1542); + synchronizedStatement(); + } + break; + case THROW: + enterOuterAlt(_localctx, 11); + { + setState(1543); + throwStatement(); + } + break; + case TRY: + enterOuterAlt(_localctx, 12); + { + setState(1544); + tryStatement(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class EmptyStatementContext extends ParserRuleContext { + public TerminalNode SEMI() { return getToken(Java8Parser.SEMI, 0); } + public EmptyStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_emptyStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterEmptyStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitEmptyStatement(this); + } + } + + public final EmptyStatementContext emptyStatement() throws RecognitionException { + EmptyStatementContext _localctx = new EmptyStatementContext(_ctx, getState()); + enterRule(_localctx, 268, RULE_emptyStatement); + try { + enterOuterAlt(_localctx, 1); + { + setState(1547); + match(SEMI); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class LabeledStatementContext extends ParserRuleContext { + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public TerminalNode COLON() { return getToken(Java8Parser.COLON, 0); } + public StatementContext statement() { + return getRuleContext(StatementContext.class,0); + } + public LabeledStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_labeledStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterLabeledStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitLabeledStatement(this); + } + } + + public final LabeledStatementContext labeledStatement() throws RecognitionException { + LabeledStatementContext _localctx = new LabeledStatementContext(_ctx, getState()); + enterRule(_localctx, 270, RULE_labeledStatement); + try { + enterOuterAlt(_localctx, 1); + { + setState(1549); + match(Identifier); + setState(1550); + match(COLON); + setState(1551); + statement(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class LabeledStatementNoShortIfContext extends ParserRuleContext { + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public TerminalNode COLON() { return getToken(Java8Parser.COLON, 0); } + public StatementNoShortIfContext statementNoShortIf() { + return getRuleContext(StatementNoShortIfContext.class,0); + } + public LabeledStatementNoShortIfContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_labeledStatementNoShortIf; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterLabeledStatementNoShortIf(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitLabeledStatementNoShortIf(this); + } + } + + public final LabeledStatementNoShortIfContext labeledStatementNoShortIf() throws RecognitionException { + LabeledStatementNoShortIfContext _localctx = new LabeledStatementNoShortIfContext(_ctx, getState()); + enterRule(_localctx, 272, RULE_labeledStatementNoShortIf); + try { + enterOuterAlt(_localctx, 1); + { + setState(1553); + match(Identifier); + setState(1554); + match(COLON); + setState(1555); + statementNoShortIf(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ExpressionStatementContext extends ParserRuleContext { + public StatementExpressionContext statementExpression() { + return getRuleContext(StatementExpressionContext.class,0); + } + public TerminalNode SEMI() { return getToken(Java8Parser.SEMI, 0); } + public ExpressionStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_expressionStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterExpressionStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitExpressionStatement(this); + } + } + + public final ExpressionStatementContext expressionStatement() throws RecognitionException { + ExpressionStatementContext _localctx = new ExpressionStatementContext(_ctx, getState()); + enterRule(_localctx, 274, RULE_expressionStatement); + try { + enterOuterAlt(_localctx, 1); + { + setState(1557); + statementExpression(); + setState(1558); + match(SEMI); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class StatementExpressionContext extends ParserRuleContext { + public AssignmentContext assignment() { + return getRuleContext(AssignmentContext.class,0); + } + public PreIncrementExpressionContext preIncrementExpression() { + return getRuleContext(PreIncrementExpressionContext.class,0); + } + public PreDecrementExpressionContext preDecrementExpression() { + return getRuleContext(PreDecrementExpressionContext.class,0); + } + public PostIncrementExpressionContext postIncrementExpression() { + return getRuleContext(PostIncrementExpressionContext.class,0); + } + public PostDecrementExpressionContext postDecrementExpression() { + return getRuleContext(PostDecrementExpressionContext.class,0); + } + public MethodInvocationContext methodInvocation() { + return getRuleContext(MethodInvocationContext.class,0); + } + public ClassInstanceCreationExpressionContext classInstanceCreationExpression() { + return getRuleContext(ClassInstanceCreationExpressionContext.class,0); + } + public StatementExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_statementExpression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterStatementExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitStatementExpression(this); + } + } + + public final StatementExpressionContext statementExpression() throws RecognitionException { + StatementExpressionContext _localctx = new StatementExpressionContext(_ctx, getState()); + enterRule(_localctx, 276, RULE_statementExpression); + try { + setState(1567); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,160,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1560); + assignment(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1561); + preIncrementExpression(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(1562); + preDecrementExpression(); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(1563); + postIncrementExpression(); + } + break; + case 5: + enterOuterAlt(_localctx, 5); + { + setState(1564); + postDecrementExpression(); + } + break; + case 6: + enterOuterAlt(_localctx, 6); + { + setState(1565); + methodInvocation(); + } + break; + case 7: + enterOuterAlt(_localctx, 7); + { + setState(1566); + classInstanceCreationExpression(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class IfThenStatementContext extends ParserRuleContext { + public TerminalNode IF() { return getToken(Java8Parser.IF, 0); } + public TerminalNode LPAREN() { return getToken(Java8Parser.LPAREN, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public TerminalNode RPAREN() { return getToken(Java8Parser.RPAREN, 0); } + public StatementContext statement() { + return getRuleContext(StatementContext.class,0); + } + public IfThenStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_ifThenStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterIfThenStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitIfThenStatement(this); + } + } + + public final IfThenStatementContext ifThenStatement() throws RecognitionException { + IfThenStatementContext _localctx = new IfThenStatementContext(_ctx, getState()); + enterRule(_localctx, 278, RULE_ifThenStatement); + try { + enterOuterAlt(_localctx, 1); + { + setState(1569); + match(IF); + setState(1570); + match(LPAREN); + setState(1571); + expression(); + setState(1572); + match(RPAREN); + setState(1573); + statement(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class IfThenElseStatementContext extends ParserRuleContext { + public TerminalNode IF() { return getToken(Java8Parser.IF, 0); } + public TerminalNode LPAREN() { return getToken(Java8Parser.LPAREN, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public TerminalNode RPAREN() { return getToken(Java8Parser.RPAREN, 0); } + public StatementNoShortIfContext statementNoShortIf() { + return getRuleContext(StatementNoShortIfContext.class,0); + } + public TerminalNode ELSE() { return getToken(Java8Parser.ELSE, 0); } + public StatementContext statement() { + return getRuleContext(StatementContext.class,0); + } + public IfThenElseStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_ifThenElseStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterIfThenElseStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitIfThenElseStatement(this); + } + } + + public final IfThenElseStatementContext ifThenElseStatement() throws RecognitionException { + IfThenElseStatementContext _localctx = new IfThenElseStatementContext(_ctx, getState()); + enterRule(_localctx, 280, RULE_ifThenElseStatement); + try { + enterOuterAlt(_localctx, 1); + { + setState(1575); + match(IF); + setState(1576); + match(LPAREN); + setState(1577); + expression(); + setState(1578); + match(RPAREN); + setState(1579); + statementNoShortIf(); + setState(1580); + match(ELSE); + setState(1581); + statement(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class IfThenElseStatementNoShortIfContext extends ParserRuleContext { + public TerminalNode IF() { return getToken(Java8Parser.IF, 0); } + public TerminalNode LPAREN() { return getToken(Java8Parser.LPAREN, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public TerminalNode RPAREN() { return getToken(Java8Parser.RPAREN, 0); } + public List statementNoShortIf() { + return getRuleContexts(StatementNoShortIfContext.class); + } + public StatementNoShortIfContext statementNoShortIf(int i) { + return getRuleContext(StatementNoShortIfContext.class,i); + } + public TerminalNode ELSE() { return getToken(Java8Parser.ELSE, 0); } + public IfThenElseStatementNoShortIfContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_ifThenElseStatementNoShortIf; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterIfThenElseStatementNoShortIf(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitIfThenElseStatementNoShortIf(this); + } + } + + public final IfThenElseStatementNoShortIfContext ifThenElseStatementNoShortIf() throws RecognitionException { + IfThenElseStatementNoShortIfContext _localctx = new IfThenElseStatementNoShortIfContext(_ctx, getState()); + enterRule(_localctx, 282, RULE_ifThenElseStatementNoShortIf); + try { + enterOuterAlt(_localctx, 1); + { + setState(1583); + match(IF); + setState(1584); + match(LPAREN); + setState(1585); + expression(); + setState(1586); + match(RPAREN); + setState(1587); + statementNoShortIf(); + setState(1588); + match(ELSE); + setState(1589); + statementNoShortIf(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class AssertStatementContext extends ParserRuleContext { + public TerminalNode ASSERT() { return getToken(Java8Parser.ASSERT, 0); } + public List expression() { + return getRuleContexts(ExpressionContext.class); + } + public ExpressionContext expression(int i) { + return getRuleContext(ExpressionContext.class,i); + } + public TerminalNode SEMI() { return getToken(Java8Parser.SEMI, 0); } + public TerminalNode COLON() { return getToken(Java8Parser.COLON, 0); } + public AssertStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_assertStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterAssertStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitAssertStatement(this); + } + } + + public final AssertStatementContext assertStatement() throws RecognitionException { + AssertStatementContext _localctx = new AssertStatementContext(_ctx, getState()); + enterRule(_localctx, 284, RULE_assertStatement); + try { + setState(1601); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,161,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1591); + match(ASSERT); + setState(1592); + expression(); + setState(1593); + match(SEMI); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1595); + match(ASSERT); + setState(1596); + expression(); + setState(1597); + match(COLON); + setState(1598); + expression(); + setState(1599); + match(SEMI); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class SwitchStatementContext extends ParserRuleContext { + public TerminalNode SWITCH() { return getToken(Java8Parser.SWITCH, 0); } + public TerminalNode LPAREN() { return getToken(Java8Parser.LPAREN, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public TerminalNode RPAREN() { return getToken(Java8Parser.RPAREN, 0); } + public SwitchBlockContext switchBlock() { + return getRuleContext(SwitchBlockContext.class,0); + } + public SwitchStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_switchStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterSwitchStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitSwitchStatement(this); + } + } + + public final SwitchStatementContext switchStatement() throws RecognitionException { + SwitchStatementContext _localctx = new SwitchStatementContext(_ctx, getState()); + enterRule(_localctx, 286, RULE_switchStatement); + try { + enterOuterAlt(_localctx, 1); + { + setState(1603); + match(SWITCH); + setState(1604); + match(LPAREN); + setState(1605); + expression(); + setState(1606); + match(RPAREN); + setState(1607); + switchBlock(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class SwitchBlockContext extends ParserRuleContext { + public TerminalNode LBRACE() { return getToken(Java8Parser.LBRACE, 0); } + public TerminalNode RBRACE() { return getToken(Java8Parser.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 SwitchBlockContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_switchBlock; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterSwitchBlock(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitSwitchBlock(this); + } + } + + public final SwitchBlockContext switchBlock() throws RecognitionException { + SwitchBlockContext _localctx = new SwitchBlockContext(_ctx, getState()); + enterRule(_localctx, 288, RULE_switchBlock); + int _la; + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(1609); + match(LBRACE); + setState(1613); + _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 ) { + { + { + setState(1610); + switchBlockStatementGroup(); + } + } + } + setState(1615); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,162,_ctx); + } + setState(1619); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==CASE || _la==DEFAULT) { + { + { + setState(1616); + switchLabel(); + } + } + setState(1621); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1622); + match(RBRACE); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class SwitchBlockStatementGroupContext extends ParserRuleContext { + public SwitchLabelsContext switchLabels() { + return getRuleContext(SwitchLabelsContext.class,0); + } + public BlockStatementsContext blockStatements() { + return getRuleContext(BlockStatementsContext.class,0); + } + 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 Java8Listener ) ((Java8Listener)listener).enterSwitchBlockStatementGroup(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitSwitchBlockStatementGroup(this); + } + } + + public final SwitchBlockStatementGroupContext switchBlockStatementGroup() throws RecognitionException { + SwitchBlockStatementGroupContext _localctx = new SwitchBlockStatementGroupContext(_ctx, getState()); + enterRule(_localctx, 290, RULE_switchBlockStatementGroup); + try { + enterOuterAlt(_localctx, 1); + { + setState(1624); + switchLabels(); + setState(1625); + blockStatements(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class SwitchLabelsContext extends ParserRuleContext { + public List switchLabel() { + return getRuleContexts(SwitchLabelContext.class); + } + public SwitchLabelContext switchLabel(int i) { + return getRuleContext(SwitchLabelContext.class,i); + } + public SwitchLabelsContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_switchLabels; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterSwitchLabels(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitSwitchLabels(this); + } + } + + public final SwitchLabelsContext switchLabels() throws RecognitionException { + SwitchLabelsContext _localctx = new SwitchLabelsContext(_ctx, getState()); + enterRule(_localctx, 292, RULE_switchLabels); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1627); + switchLabel(); + setState(1631); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==CASE || _la==DEFAULT) { + { + { + setState(1628); + switchLabel(); + } + } + setState(1633); + _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; + } + + @SuppressWarnings("CheckReturnValue") + public static class SwitchLabelContext extends ParserRuleContext { + public TerminalNode CASE() { return getToken(Java8Parser.CASE, 0); } + public ConstantExpressionContext constantExpression() { + return getRuleContext(ConstantExpressionContext.class,0); + } + public TerminalNode COLON() { return getToken(Java8Parser.COLON, 0); } + public EnumConstantNameContext enumConstantName() { + return getRuleContext(EnumConstantNameContext.class,0); + } + public TerminalNode DEFAULT() { return getToken(Java8Parser.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 Java8Listener ) ((Java8Listener)listener).enterSwitchLabel(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitSwitchLabel(this); + } + } + + public final SwitchLabelContext switchLabel() throws RecognitionException { + SwitchLabelContext _localctx = new SwitchLabelContext(_ctx, getState()); + enterRule(_localctx, 294, RULE_switchLabel); + try { + setState(1644); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,165,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1634); + match(CASE); + setState(1635); + constantExpression(); + setState(1636); + match(COLON); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1638); + match(CASE); + setState(1639); + enumConstantName(); + setState(1640); + match(COLON); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(1642); + match(DEFAULT); + setState(1643); + match(COLON); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class EnumConstantNameContext extends ParserRuleContext { + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public EnumConstantNameContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_enumConstantName; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterEnumConstantName(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitEnumConstantName(this); + } + } + + public final EnumConstantNameContext enumConstantName() throws RecognitionException { + EnumConstantNameContext _localctx = new EnumConstantNameContext(_ctx, getState()); + enterRule(_localctx, 296, RULE_enumConstantName); + try { + enterOuterAlt(_localctx, 1); + { + setState(1646); + match(Identifier); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class WhileStatementContext extends ParserRuleContext { + public TerminalNode WHILE() { return getToken(Java8Parser.WHILE, 0); } + public TerminalNode LPAREN() { return getToken(Java8Parser.LPAREN, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public TerminalNode RPAREN() { return getToken(Java8Parser.RPAREN, 0); } + public StatementContext statement() { + return getRuleContext(StatementContext.class,0); + } + public WhileStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_whileStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterWhileStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitWhileStatement(this); + } + } + + public final WhileStatementContext whileStatement() throws RecognitionException { + WhileStatementContext _localctx = new WhileStatementContext(_ctx, getState()); + enterRule(_localctx, 298, RULE_whileStatement); + try { + enterOuterAlt(_localctx, 1); + { + setState(1648); + match(WHILE); + setState(1649); + match(LPAREN); + setState(1650); + expression(); + setState(1651); + match(RPAREN); + setState(1652); + statement(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class WhileStatementNoShortIfContext extends ParserRuleContext { + public TerminalNode WHILE() { return getToken(Java8Parser.WHILE, 0); } + public TerminalNode LPAREN() { return getToken(Java8Parser.LPAREN, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public TerminalNode RPAREN() { return getToken(Java8Parser.RPAREN, 0); } + public StatementNoShortIfContext statementNoShortIf() { + return getRuleContext(StatementNoShortIfContext.class,0); + } + public WhileStatementNoShortIfContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_whileStatementNoShortIf; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterWhileStatementNoShortIf(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitWhileStatementNoShortIf(this); + } + } + + public final WhileStatementNoShortIfContext whileStatementNoShortIf() throws RecognitionException { + WhileStatementNoShortIfContext _localctx = new WhileStatementNoShortIfContext(_ctx, getState()); + enterRule(_localctx, 300, RULE_whileStatementNoShortIf); + try { + enterOuterAlt(_localctx, 1); + { + setState(1654); + match(WHILE); + setState(1655); + match(LPAREN); + setState(1656); + expression(); + setState(1657); + match(RPAREN); + setState(1658); + statementNoShortIf(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class DoStatementContext extends ParserRuleContext { + public TerminalNode DO() { return getToken(Java8Parser.DO, 0); } + public StatementContext statement() { + return getRuleContext(StatementContext.class,0); + } + public TerminalNode WHILE() { return getToken(Java8Parser.WHILE, 0); } + public TerminalNode LPAREN() { return getToken(Java8Parser.LPAREN, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public TerminalNode RPAREN() { return getToken(Java8Parser.RPAREN, 0); } + public TerminalNode SEMI() { return getToken(Java8Parser.SEMI, 0); } + public DoStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_doStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterDoStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitDoStatement(this); + } + } + + public final DoStatementContext doStatement() throws RecognitionException { + DoStatementContext _localctx = new DoStatementContext(_ctx, getState()); + enterRule(_localctx, 302, RULE_doStatement); + try { + enterOuterAlt(_localctx, 1); + { + setState(1660); + match(DO); + setState(1661); + statement(); + setState(1662); + match(WHILE); + setState(1663); + match(LPAREN); + setState(1664); + expression(); + setState(1665); + match(RPAREN); + setState(1666); + match(SEMI); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ForStatementContext extends ParserRuleContext { + public BasicForStatementContext basicForStatement() { + return getRuleContext(BasicForStatementContext.class,0); + } + public EnhancedForStatementContext enhancedForStatement() { + return getRuleContext(EnhancedForStatementContext.class,0); + } + public ForStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_forStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterForStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitForStatement(this); + } + } + + public final ForStatementContext forStatement() throws RecognitionException { + ForStatementContext _localctx = new ForStatementContext(_ctx, getState()); + enterRule(_localctx, 304, RULE_forStatement); + try { + setState(1670); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,166,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1668); + basicForStatement(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1669); + enhancedForStatement(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ForStatementNoShortIfContext extends ParserRuleContext { + public BasicForStatementNoShortIfContext basicForStatementNoShortIf() { + return getRuleContext(BasicForStatementNoShortIfContext.class,0); + } + public EnhancedForStatementNoShortIfContext enhancedForStatementNoShortIf() { + return getRuleContext(EnhancedForStatementNoShortIfContext.class,0); + } + public ForStatementNoShortIfContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_forStatementNoShortIf; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterForStatementNoShortIf(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitForStatementNoShortIf(this); + } + } + + public final ForStatementNoShortIfContext forStatementNoShortIf() throws RecognitionException { + ForStatementNoShortIfContext _localctx = new ForStatementNoShortIfContext(_ctx, getState()); + enterRule(_localctx, 306, RULE_forStatementNoShortIf); + try { + setState(1674); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,167,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1672); + basicForStatementNoShortIf(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1673); + enhancedForStatementNoShortIf(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class BasicForStatementContext extends ParserRuleContext { + public TerminalNode FOR() { return getToken(Java8Parser.FOR, 0); } + public TerminalNode LPAREN() { return getToken(Java8Parser.LPAREN, 0); } + public List SEMI() { return getTokens(Java8Parser.SEMI); } + public TerminalNode SEMI(int i) { + return getToken(Java8Parser.SEMI, i); + } + public TerminalNode RPAREN() { return getToken(Java8Parser.RPAREN, 0); } + public StatementContext statement() { + return getRuleContext(StatementContext.class,0); + } + public ForInitContext forInit() { + return getRuleContext(ForInitContext.class,0); + } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public ForUpdateContext forUpdate() { + return getRuleContext(ForUpdateContext.class,0); + } + public BasicForStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_basicForStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterBasicForStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitBasicForStatement(this); + } + } + + public final BasicForStatementContext basicForStatement() throws RecognitionException { + BasicForStatementContext _localctx = new BasicForStatementContext(_ctx, getState()); + enterRule(_localctx, 308, RULE_basicForStatement); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1676); + match(FOR); + setState(1677); + match(LPAREN); + setState(1679); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 286270087178240296L) != 0) || ((((_la - 79)) & ~0x3f) == 0 && ((1L << (_la - 79)) & 25165827L) != 0)) { + { + setState(1678); + forInit(); + } + } + + setState(1681); + match(SEMI); + setState(1683); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 286270087177978152L) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & 25769819139L) != 0)) { + { + setState(1682); + expression(); + } + } + + setState(1685); + match(SEMI); + setState(1687); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 286270087177978152L) != 0) || ((((_la - 79)) & ~0x3f) == 0 && ((1L << (_la - 79)) & 25165827L) != 0)) { + { + setState(1686); + forUpdate(); + } + } + + setState(1689); + match(RPAREN); + setState(1690); + statement(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class BasicForStatementNoShortIfContext extends ParserRuleContext { + public TerminalNode FOR() { return getToken(Java8Parser.FOR, 0); } + public TerminalNode LPAREN() { return getToken(Java8Parser.LPAREN, 0); } + public List SEMI() { return getTokens(Java8Parser.SEMI); } + public TerminalNode SEMI(int i) { + return getToken(Java8Parser.SEMI, i); + } + public TerminalNode RPAREN() { return getToken(Java8Parser.RPAREN, 0); } + public StatementNoShortIfContext statementNoShortIf() { + return getRuleContext(StatementNoShortIfContext.class,0); + } + public ForInitContext forInit() { + return getRuleContext(ForInitContext.class,0); + } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public ForUpdateContext forUpdate() { + return getRuleContext(ForUpdateContext.class,0); + } + public BasicForStatementNoShortIfContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_basicForStatementNoShortIf; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterBasicForStatementNoShortIf(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitBasicForStatementNoShortIf(this); + } + } + + public final BasicForStatementNoShortIfContext basicForStatementNoShortIf() throws RecognitionException { + BasicForStatementNoShortIfContext _localctx = new BasicForStatementNoShortIfContext(_ctx, getState()); + enterRule(_localctx, 310, RULE_basicForStatementNoShortIf); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1692); + match(FOR); + setState(1693); + match(LPAREN); + setState(1695); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 286270087178240296L) != 0) || ((((_la - 79)) & ~0x3f) == 0 && ((1L << (_la - 79)) & 25165827L) != 0)) { + { + setState(1694); + forInit(); + } + } + + setState(1697); + match(SEMI); + setState(1699); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 286270087177978152L) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & 25769819139L) != 0)) { + { + setState(1698); + expression(); + } + } + + setState(1701); + match(SEMI); + setState(1703); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 286270087177978152L) != 0) || ((((_la - 79)) & ~0x3f) == 0 && ((1L << (_la - 79)) & 25165827L) != 0)) { + { + setState(1702); + forUpdate(); + } + } + + setState(1705); + match(RPAREN); + setState(1706); + statementNoShortIf(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ForInitContext extends ParserRuleContext { + public StatementExpressionListContext statementExpressionList() { + return getRuleContext(StatementExpressionListContext.class,0); + } + public LocalVariableDeclarationContext localVariableDeclaration() { + return getRuleContext(LocalVariableDeclarationContext.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 Java8Listener ) ((Java8Listener)listener).enterForInit(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitForInit(this); + } + } + + public final ForInitContext forInit() throws RecognitionException { + ForInitContext _localctx = new ForInitContext(_ctx, getState()); + enterRule(_localctx, 312, RULE_forInit); + try { + setState(1710); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,174,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1708); + statementExpressionList(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1709); + localVariableDeclaration(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ForUpdateContext extends ParserRuleContext { + public StatementExpressionListContext statementExpressionList() { + return getRuleContext(StatementExpressionListContext.class,0); + } + public ForUpdateContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_forUpdate; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterForUpdate(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitForUpdate(this); + } + } + + public final ForUpdateContext forUpdate() throws RecognitionException { + ForUpdateContext _localctx = new ForUpdateContext(_ctx, getState()); + enterRule(_localctx, 314, RULE_forUpdate); + try { + enterOuterAlt(_localctx, 1); + { + setState(1712); + statementExpressionList(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class StatementExpressionListContext extends ParserRuleContext { + public List statementExpression() { + return getRuleContexts(StatementExpressionContext.class); + } + public StatementExpressionContext statementExpression(int i) { + return getRuleContext(StatementExpressionContext.class,i); + } + public List COMMA() { return getTokens(Java8Parser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(Java8Parser.COMMA, i); + } + public StatementExpressionListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_statementExpressionList; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterStatementExpressionList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitStatementExpressionList(this); + } + } + + public final StatementExpressionListContext statementExpressionList() throws RecognitionException { + StatementExpressionListContext _localctx = new StatementExpressionListContext(_ctx, getState()); + enterRule(_localctx, 316, RULE_statementExpressionList); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1714); + statementExpression(); + setState(1719); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(1715); + match(COMMA); + setState(1716); + statementExpression(); + } + } + setState(1721); + _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; + } + + @SuppressWarnings("CheckReturnValue") + public static class EnhancedForStatementContext extends ParserRuleContext { + public TerminalNode FOR() { return getToken(Java8Parser.FOR, 0); } + public TerminalNode LPAREN() { return getToken(Java8Parser.LPAREN, 0); } + public UnannTypeContext unannType() { + return getRuleContext(UnannTypeContext.class,0); + } + public VariableDeclaratorIdContext variableDeclaratorId() { + return getRuleContext(VariableDeclaratorIdContext.class,0); + } + public TerminalNode COLON() { return getToken(Java8Parser.COLON, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public TerminalNode RPAREN() { return getToken(Java8Parser.RPAREN, 0); } + public StatementContext statement() { + return getRuleContext(StatementContext.class,0); + } + public List variableModifier() { + return getRuleContexts(VariableModifierContext.class); + } + public VariableModifierContext variableModifier(int i) { + return getRuleContext(VariableModifierContext.class,i); + } + public EnhancedForStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_enhancedForStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterEnhancedForStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitEnhancedForStatement(this); + } + } + + public final EnhancedForStatementContext enhancedForStatement() throws RecognitionException { + EnhancedForStatementContext _localctx = new EnhancedForStatementContext(_ctx, getState()); + enterRule(_localctx, 318, RULE_enhancedForStatement); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1722); + match(FOR); + setState(1723); + match(LPAREN); + setState(1727); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==FINAL || _la==AT) { + { + { + setState(1724); + variableModifier(); + } + } + setState(1729); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1730); + unannType(); + setState(1731); + variableDeclaratorId(); + setState(1732); + match(COLON); + setState(1733); + expression(); + setState(1734); + match(RPAREN); + setState(1735); + statement(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class EnhancedForStatementNoShortIfContext extends ParserRuleContext { + public TerminalNode FOR() { return getToken(Java8Parser.FOR, 0); } + public TerminalNode LPAREN() { return getToken(Java8Parser.LPAREN, 0); } + public UnannTypeContext unannType() { + return getRuleContext(UnannTypeContext.class,0); + } + public VariableDeclaratorIdContext variableDeclaratorId() { + return getRuleContext(VariableDeclaratorIdContext.class,0); + } + public TerminalNode COLON() { return getToken(Java8Parser.COLON, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public TerminalNode RPAREN() { return getToken(Java8Parser.RPAREN, 0); } + public StatementNoShortIfContext statementNoShortIf() { + return getRuleContext(StatementNoShortIfContext.class,0); + } + public List variableModifier() { + return getRuleContexts(VariableModifierContext.class); + } + public VariableModifierContext variableModifier(int i) { + return getRuleContext(VariableModifierContext.class,i); + } + public EnhancedForStatementNoShortIfContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_enhancedForStatementNoShortIf; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterEnhancedForStatementNoShortIf(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitEnhancedForStatementNoShortIf(this); + } + } + + public final EnhancedForStatementNoShortIfContext enhancedForStatementNoShortIf() throws RecognitionException { + EnhancedForStatementNoShortIfContext _localctx = new EnhancedForStatementNoShortIfContext(_ctx, getState()); + enterRule(_localctx, 320, RULE_enhancedForStatementNoShortIf); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1737); + match(FOR); + setState(1738); + match(LPAREN); + setState(1742); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==FINAL || _la==AT) { + { + { + setState(1739); + variableModifier(); + } + } + setState(1744); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1745); + unannType(); + setState(1746); + variableDeclaratorId(); + setState(1747); + match(COLON); + setState(1748); + expression(); + setState(1749); + match(RPAREN); + setState(1750); + statementNoShortIf(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class BreakStatementContext extends ParserRuleContext { + public TerminalNode BREAK() { return getToken(Java8Parser.BREAK, 0); } + public TerminalNode SEMI() { return getToken(Java8Parser.SEMI, 0); } + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public BreakStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_breakStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterBreakStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitBreakStatement(this); + } + } + + public final BreakStatementContext breakStatement() throws RecognitionException { + BreakStatementContext _localctx = new BreakStatementContext(_ctx, getState()); + enterRule(_localctx, 322, RULE_breakStatement); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1752); + match(BREAK); + setState(1754); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==Identifier) { + { + setState(1753); + match(Identifier); + } + } + + setState(1756); + match(SEMI); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ContinueStatementContext extends ParserRuleContext { + public TerminalNode CONTINUE() { return getToken(Java8Parser.CONTINUE, 0); } + public TerminalNode SEMI() { return getToken(Java8Parser.SEMI, 0); } + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public ContinueStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_continueStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterContinueStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitContinueStatement(this); + } + } + + public final ContinueStatementContext continueStatement() throws RecognitionException { + ContinueStatementContext _localctx = new ContinueStatementContext(_ctx, getState()); + enterRule(_localctx, 324, RULE_continueStatement); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1758); + match(CONTINUE); + setState(1760); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==Identifier) { + { + setState(1759); + match(Identifier); + } + } + + setState(1762); + match(SEMI); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ReturnStatementContext extends ParserRuleContext { + public TerminalNode RETURN() { return getToken(Java8Parser.RETURN, 0); } + public TerminalNode SEMI() { return getToken(Java8Parser.SEMI, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public ReturnStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_returnStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterReturnStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitReturnStatement(this); + } + } + + public final ReturnStatementContext returnStatement() throws RecognitionException { + ReturnStatementContext _localctx = new ReturnStatementContext(_ctx, getState()); + enterRule(_localctx, 326, RULE_returnStatement); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1764); + match(RETURN); + setState(1766); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 286270087177978152L) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & 25769819139L) != 0)) { + { + setState(1765); + expression(); + } + } + + setState(1768); + match(SEMI); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ThrowStatementContext extends ParserRuleContext { + public TerminalNode THROW() { return getToken(Java8Parser.THROW, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public TerminalNode SEMI() { return getToken(Java8Parser.SEMI, 0); } + public ThrowStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_throwStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterThrowStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitThrowStatement(this); + } + } + + public final ThrowStatementContext throwStatement() throws RecognitionException { + ThrowStatementContext _localctx = new ThrowStatementContext(_ctx, getState()); + enterRule(_localctx, 328, RULE_throwStatement); + try { + enterOuterAlt(_localctx, 1); + { + setState(1770); + match(THROW); + setState(1771); + expression(); + setState(1772); + match(SEMI); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class SynchronizedStatementContext extends ParserRuleContext { + public TerminalNode SYNCHRONIZED() { return getToken(Java8Parser.SYNCHRONIZED, 0); } + public TerminalNode LPAREN() { return getToken(Java8Parser.LPAREN, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public TerminalNode RPAREN() { return getToken(Java8Parser.RPAREN, 0); } + public BlockContext block() { + return getRuleContext(BlockContext.class,0); + } + public SynchronizedStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_synchronizedStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterSynchronizedStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitSynchronizedStatement(this); + } + } + + public final SynchronizedStatementContext synchronizedStatement() throws RecognitionException { + SynchronizedStatementContext _localctx = new SynchronizedStatementContext(_ctx, getState()); + enterRule(_localctx, 330, RULE_synchronizedStatement); + try { + enterOuterAlt(_localctx, 1); + { + setState(1774); + match(SYNCHRONIZED); + setState(1775); + match(LPAREN); + setState(1776); + expression(); + setState(1777); + match(RPAREN); + setState(1778); + block(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class TryStatementContext extends ParserRuleContext { + public TerminalNode TRY() { return getToken(Java8Parser.TRY, 0); } + public BlockContext block() { + return getRuleContext(BlockContext.class,0); + } + public CatchesContext catches() { + return getRuleContext(CatchesContext.class,0); + } + public Finally_Context finally_() { + return getRuleContext(Finally_Context.class,0); + } + public TryWithResourcesStatementContext tryWithResourcesStatement() { + return getRuleContext(TryWithResourcesStatementContext.class,0); + } + public TryStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_tryStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterTryStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitTryStatement(this); + } + } + + public final TryStatementContext tryStatement() throws RecognitionException { + TryStatementContext _localctx = new TryStatementContext(_ctx, getState()); + enterRule(_localctx, 332, RULE_tryStatement); + int _la; + try { + setState(1792); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,182,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1780); + match(TRY); + setState(1781); + block(); + setState(1782); + catches(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1784); + match(TRY); + setState(1785); + block(); + setState(1787); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==CATCH) { + { + setState(1786); + catches(); + } + } + + setState(1789); + finally_(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(1791); + tryWithResourcesStatement(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class CatchesContext extends ParserRuleContext { + public List catchClause() { + return getRuleContexts(CatchClauseContext.class); + } + public CatchClauseContext catchClause(int i) { + return getRuleContext(CatchClauseContext.class,i); + } + public CatchesContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_catches; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterCatches(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitCatches(this); + } + } + + public final CatchesContext catches() throws RecognitionException { + CatchesContext _localctx = new CatchesContext(_ctx, getState()); + enterRule(_localctx, 334, RULE_catches); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1794); + catchClause(); + setState(1798); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==CATCH) { + { + { + setState(1795); + catchClause(); + } + } + setState(1800); + _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; + } + + @SuppressWarnings("CheckReturnValue") + public static class CatchClauseContext extends ParserRuleContext { + public TerminalNode CATCH() { return getToken(Java8Parser.CATCH, 0); } + public TerminalNode LPAREN() { return getToken(Java8Parser.LPAREN, 0); } + public CatchFormalParameterContext catchFormalParameter() { + return getRuleContext(CatchFormalParameterContext.class,0); + } + public TerminalNode RPAREN() { return getToken(Java8Parser.RPAREN, 0); } + public BlockContext block() { + return getRuleContext(BlockContext.class,0); + } + 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 Java8Listener ) ((Java8Listener)listener).enterCatchClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitCatchClause(this); + } + } + + public final CatchClauseContext catchClause() throws RecognitionException { + CatchClauseContext _localctx = new CatchClauseContext(_ctx, getState()); + enterRule(_localctx, 336, RULE_catchClause); + try { + enterOuterAlt(_localctx, 1); + { + setState(1801); + match(CATCH); + setState(1802); + match(LPAREN); + setState(1803); + catchFormalParameter(); + setState(1804); + match(RPAREN); + setState(1805); + block(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class CatchFormalParameterContext extends ParserRuleContext { + public CatchTypeContext catchType() { + return getRuleContext(CatchTypeContext.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 CatchFormalParameterContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_catchFormalParameter; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterCatchFormalParameter(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitCatchFormalParameter(this); + } + } + + public final CatchFormalParameterContext catchFormalParameter() throws RecognitionException { + CatchFormalParameterContext _localctx = new CatchFormalParameterContext(_ctx, getState()); + enterRule(_localctx, 338, RULE_catchFormalParameter); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1810); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==FINAL || _la==AT) { + { + { + setState(1807); + variableModifier(); + } + } + setState(1812); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1813); + catchType(); + setState(1814); + variableDeclaratorId(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class CatchTypeContext extends ParserRuleContext { + public UnannClassTypeContext unannClassType() { + return getRuleContext(UnannClassTypeContext.class,0); + } + public List BITOR() { return getTokens(Java8Parser.BITOR); } + public TerminalNode BITOR(int i) { + return getToken(Java8Parser.BITOR, i); + } + public List classType() { + return getRuleContexts(ClassTypeContext.class); + } + public ClassTypeContext classType(int i) { + return getRuleContext(ClassTypeContext.class,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 Java8Listener ) ((Java8Listener)listener).enterCatchType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitCatchType(this); + } + } + + public final CatchTypeContext catchType() throws RecognitionException { + CatchTypeContext _localctx = new CatchTypeContext(_ctx, getState()); + enterRule(_localctx, 340, RULE_catchType); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1816); + unannClassType(); + setState(1821); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==BITOR) { + { + { + setState(1817); + match(BITOR); + setState(1818); + classType(); + } + } + setState(1823); + _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; + } + + @SuppressWarnings("CheckReturnValue") + public static class Finally_Context extends ParserRuleContext { + public TerminalNode FINALLY() { return getToken(Java8Parser.FINALLY, 0); } + public BlockContext block() { + return getRuleContext(BlockContext.class,0); + } + public Finally_Context(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_finally_; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterFinally_(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitFinally_(this); + } + } + + public final Finally_Context finally_() throws RecognitionException { + Finally_Context _localctx = new Finally_Context(_ctx, getState()); + enterRule(_localctx, 342, RULE_finally_); + try { + enterOuterAlt(_localctx, 1); + { + setState(1824); + match(FINALLY); + setState(1825); + block(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class TryWithResourcesStatementContext extends ParserRuleContext { + public TerminalNode TRY() { return getToken(Java8Parser.TRY, 0); } + public ResourceSpecificationContext resourceSpecification() { + return getRuleContext(ResourceSpecificationContext.class,0); + } + public BlockContext block() { + return getRuleContext(BlockContext.class,0); + } + public CatchesContext catches() { + return getRuleContext(CatchesContext.class,0); + } + public Finally_Context finally_() { + return getRuleContext(Finally_Context.class,0); + } + public TryWithResourcesStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_tryWithResourcesStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterTryWithResourcesStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitTryWithResourcesStatement(this); + } + } + + public final TryWithResourcesStatementContext tryWithResourcesStatement() throws RecognitionException { + TryWithResourcesStatementContext _localctx = new TryWithResourcesStatementContext(_ctx, getState()); + enterRule(_localctx, 344, RULE_tryWithResourcesStatement); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1827); + match(TRY); + setState(1828); + resourceSpecification(); + setState(1829); + block(); + setState(1831); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==CATCH) { + { + setState(1830); + catches(); + } + } + + setState(1834); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FINALLY) { + { + setState(1833); + finally_(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ResourceSpecificationContext extends ParserRuleContext { + public TerminalNode LPAREN() { return getToken(Java8Parser.LPAREN, 0); } + public ResourceListContext resourceList() { + return getRuleContext(ResourceListContext.class,0); + } + public TerminalNode RPAREN() { return getToken(Java8Parser.RPAREN, 0); } + public TerminalNode SEMI() { return getToken(Java8Parser.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 Java8Listener ) ((Java8Listener)listener).enterResourceSpecification(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitResourceSpecification(this); + } + } + + public final ResourceSpecificationContext resourceSpecification() throws RecognitionException { + ResourceSpecificationContext _localctx = new ResourceSpecificationContext(_ctx, getState()); + enterRule(_localctx, 346, RULE_resourceSpecification); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1836); + match(LPAREN); + setState(1837); + resourceList(); + setState(1839); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==SEMI) { + { + setState(1838); + match(SEMI); + } + } + + setState(1841); + match(RPAREN); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ResourceListContext extends ParserRuleContext { + public List resource() { + return getRuleContexts(ResourceContext.class); + } + public ResourceContext resource(int i) { + return getRuleContext(ResourceContext.class,i); + } + public List SEMI() { return getTokens(Java8Parser.SEMI); } + public TerminalNode SEMI(int i) { + return getToken(Java8Parser.SEMI, i); + } + public ResourceListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_resourceList; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterResourceList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitResourceList(this); + } + } + + public final ResourceListContext resourceList() throws RecognitionException { + ResourceListContext _localctx = new ResourceListContext(_ctx, getState()); + enterRule(_localctx, 348, RULE_resourceList); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(1843); + resource(); + setState(1848); + _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(1844); + match(SEMI); + setState(1845); + resource(); + } + } + } + setState(1850); + _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; + } + + @SuppressWarnings("CheckReturnValue") + public static class ResourceContext extends ParserRuleContext { + public UnannTypeContext unannType() { + return getRuleContext(UnannTypeContext.class,0); + } + public VariableDeclaratorIdContext variableDeclaratorId() { + return getRuleContext(VariableDeclaratorIdContext.class,0); + } + public TerminalNode ASSIGN() { return getToken(Java8Parser.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 Java8Listener ) ((Java8Listener)listener).enterResource(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitResource(this); + } + } + + public final ResourceContext resource() throws RecognitionException { + ResourceContext _localctx = new ResourceContext(_ctx, getState()); + enterRule(_localctx, 350, RULE_resource); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1854); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==FINAL || _la==AT) { + { + { + setState(1851); + variableModifier(); + } + } + setState(1856); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1857); + unannType(); + setState(1858); + variableDeclaratorId(); + setState(1859); + match(ASSIGN); + setState(1860); + expression(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class PrimaryContext extends ParserRuleContext { + public PrimaryNoNewArray_lfno_primaryContext primaryNoNewArray_lfno_primary() { + return getRuleContext(PrimaryNoNewArray_lfno_primaryContext.class,0); + } + public ArrayCreationExpressionContext arrayCreationExpression() { + return getRuleContext(ArrayCreationExpressionContext.class,0); + } + public List primaryNoNewArray_lf_primary() { + return getRuleContexts(PrimaryNoNewArray_lf_primaryContext.class); + } + public PrimaryNoNewArray_lf_primaryContext primaryNoNewArray_lf_primary(int i) { + return getRuleContext(PrimaryNoNewArray_lf_primaryContext.class,i); + } + 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 Java8Listener ) ((Java8Listener)listener).enterPrimary(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitPrimary(this); + } + } + + public final PrimaryContext primary() throws RecognitionException { + PrimaryContext _localctx = new PrimaryContext(_ctx, getState()); + enterRule(_localctx, 352, RULE_primary); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(1864); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,191,_ctx) ) { + case 1: + { + setState(1862); + primaryNoNewArray_lfno_primary(); + } + break; + case 2: + { + setState(1863); + arrayCreationExpression(); + } + break; + } + setState(1869); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,192,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(1866); + primaryNoNewArray_lf_primary(); + } + } + } + setState(1871); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,192,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class PrimaryNoNewArrayContext extends ParserRuleContext { + public LiteralContext literal() { + return getRuleContext(LiteralContext.class,0); + } + public TypeNameContext typeName() { + return getRuleContext(TypeNameContext.class,0); + } + public TerminalNode DOT() { return getToken(Java8Parser.DOT, 0); } + public TerminalNode CLASS() { return getToken(Java8Parser.CLASS, 0); } + public List LBRACK() { return getTokens(Java8Parser.LBRACK); } + public TerminalNode LBRACK(int i) { + return getToken(Java8Parser.LBRACK, i); + } + public List RBRACK() { return getTokens(Java8Parser.RBRACK); } + public TerminalNode RBRACK(int i) { + return getToken(Java8Parser.RBRACK, i); + } + public TerminalNode VOID() { return getToken(Java8Parser.VOID, 0); } + public TerminalNode THIS() { return getToken(Java8Parser.THIS, 0); } + public TerminalNode LPAREN() { return getToken(Java8Parser.LPAREN, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public TerminalNode RPAREN() { return getToken(Java8Parser.RPAREN, 0); } + public ClassInstanceCreationExpressionContext classInstanceCreationExpression() { + return getRuleContext(ClassInstanceCreationExpressionContext.class,0); + } + public FieldAccessContext fieldAccess() { + return getRuleContext(FieldAccessContext.class,0); + } + public ArrayAccessContext arrayAccess() { + return getRuleContext(ArrayAccessContext.class,0); + } + public MethodInvocationContext methodInvocation() { + return getRuleContext(MethodInvocationContext.class,0); + } + public MethodReferenceContext methodReference() { + return getRuleContext(MethodReferenceContext.class,0); + } + public PrimaryNoNewArrayContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_primaryNoNewArray; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterPrimaryNoNewArray(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitPrimaryNoNewArray(this); + } + } + + public final PrimaryNoNewArrayContext primaryNoNewArray() throws RecognitionException { + PrimaryNoNewArrayContext _localctx = new PrimaryNoNewArrayContext(_ctx, getState()); + enterRule(_localctx, 354, RULE_primaryNoNewArray); + int _la; + try { + setState(1901); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,194,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1872); + literal(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1873); + typeName(); + setState(1878); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==LBRACK) { + { + { + setState(1874); + match(LBRACK); + setState(1875); + match(RBRACK); + } + } + setState(1880); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1881); + match(DOT); + setState(1882); + match(CLASS); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(1884); + match(VOID); + setState(1885); + match(DOT); + setState(1886); + match(CLASS); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(1887); + match(THIS); + } + break; + case 5: + enterOuterAlt(_localctx, 5); + { + setState(1888); + typeName(); + setState(1889); + match(DOT); + setState(1890); + match(THIS); + } + break; + case 6: + enterOuterAlt(_localctx, 6); + { + setState(1892); + match(LPAREN); + setState(1893); + expression(); + setState(1894); + match(RPAREN); + } + break; + case 7: + enterOuterAlt(_localctx, 7); + { + setState(1896); + classInstanceCreationExpression(); + } + break; + case 8: + enterOuterAlt(_localctx, 8); + { + setState(1897); + fieldAccess(); + } + break; + case 9: + enterOuterAlt(_localctx, 9); + { + setState(1898); + arrayAccess(); + } + break; + case 10: + enterOuterAlt(_localctx, 10); + { + setState(1899); + methodInvocation(); + } + break; + case 11: + enterOuterAlt(_localctx, 11); + { + setState(1900); + methodReference(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class PrimaryNoNewArray_lf_arrayAccessContext extends ParserRuleContext { + public PrimaryNoNewArray_lf_arrayAccessContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_primaryNoNewArray_lf_arrayAccess; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterPrimaryNoNewArray_lf_arrayAccess(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitPrimaryNoNewArray_lf_arrayAccess(this); + } + } + + public final PrimaryNoNewArray_lf_arrayAccessContext primaryNoNewArray_lf_arrayAccess() throws RecognitionException { + PrimaryNoNewArray_lf_arrayAccessContext _localctx = new PrimaryNoNewArray_lf_arrayAccessContext(_ctx, getState()); + enterRule(_localctx, 356, RULE_primaryNoNewArray_lf_arrayAccess); + try { + enterOuterAlt(_localctx, 1); + { + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class PrimaryNoNewArray_lfno_arrayAccessContext extends ParserRuleContext { + public LiteralContext literal() { + return getRuleContext(LiteralContext.class,0); + } + public TypeNameContext typeName() { + return getRuleContext(TypeNameContext.class,0); + } + public TerminalNode DOT() { return getToken(Java8Parser.DOT, 0); } + public TerminalNode CLASS() { return getToken(Java8Parser.CLASS, 0); } + public List LBRACK() { return getTokens(Java8Parser.LBRACK); } + public TerminalNode LBRACK(int i) { + return getToken(Java8Parser.LBRACK, i); + } + public List RBRACK() { return getTokens(Java8Parser.RBRACK); } + public TerminalNode RBRACK(int i) { + return getToken(Java8Parser.RBRACK, i); + } + public TerminalNode VOID() { return getToken(Java8Parser.VOID, 0); } + public TerminalNode THIS() { return getToken(Java8Parser.THIS, 0); } + public TerminalNode LPAREN() { return getToken(Java8Parser.LPAREN, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public TerminalNode RPAREN() { return getToken(Java8Parser.RPAREN, 0); } + public ClassInstanceCreationExpressionContext classInstanceCreationExpression() { + return getRuleContext(ClassInstanceCreationExpressionContext.class,0); + } + public FieldAccessContext fieldAccess() { + return getRuleContext(FieldAccessContext.class,0); + } + public MethodInvocationContext methodInvocation() { + return getRuleContext(MethodInvocationContext.class,0); + } + public MethodReferenceContext methodReference() { + return getRuleContext(MethodReferenceContext.class,0); + } + public PrimaryNoNewArray_lfno_arrayAccessContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_primaryNoNewArray_lfno_arrayAccess; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterPrimaryNoNewArray_lfno_arrayAccess(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitPrimaryNoNewArray_lfno_arrayAccess(this); + } + } + + public final PrimaryNoNewArray_lfno_arrayAccessContext primaryNoNewArray_lfno_arrayAccess() throws RecognitionException { + PrimaryNoNewArray_lfno_arrayAccessContext _localctx = new PrimaryNoNewArray_lfno_arrayAccessContext(_ctx, getState()); + enterRule(_localctx, 358, RULE_primaryNoNewArray_lfno_arrayAccess); + int _la; + try { + setState(1933); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,196,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1905); + literal(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1906); + typeName(); + setState(1911); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==LBRACK) { + { + { + setState(1907); + match(LBRACK); + setState(1908); + match(RBRACK); + } + } + setState(1913); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1914); + match(DOT); + setState(1915); + match(CLASS); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(1917); + match(VOID); + setState(1918); + match(DOT); + setState(1919); + match(CLASS); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(1920); + match(THIS); + } + break; + case 5: + enterOuterAlt(_localctx, 5); + { + setState(1921); + typeName(); + setState(1922); + match(DOT); + setState(1923); + match(THIS); + } + break; + case 6: + enterOuterAlt(_localctx, 6); + { + setState(1925); + match(LPAREN); + setState(1926); + expression(); + setState(1927); + match(RPAREN); + } + break; + case 7: + enterOuterAlt(_localctx, 7); + { + setState(1929); + classInstanceCreationExpression(); + } + break; + case 8: + enterOuterAlt(_localctx, 8); + { + setState(1930); + fieldAccess(); + } + break; + case 9: + enterOuterAlt(_localctx, 9); + { + setState(1931); + methodInvocation(); + } + break; + case 10: + enterOuterAlt(_localctx, 10); + { + setState(1932); + methodReference(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class PrimaryNoNewArray_lf_primaryContext extends ParserRuleContext { + public ClassInstanceCreationExpression_lf_primaryContext classInstanceCreationExpression_lf_primary() { + return getRuleContext(ClassInstanceCreationExpression_lf_primaryContext.class,0); + } + public FieldAccess_lf_primaryContext fieldAccess_lf_primary() { + return getRuleContext(FieldAccess_lf_primaryContext.class,0); + } + public ArrayAccess_lf_primaryContext arrayAccess_lf_primary() { + return getRuleContext(ArrayAccess_lf_primaryContext.class,0); + } + public MethodInvocation_lf_primaryContext methodInvocation_lf_primary() { + return getRuleContext(MethodInvocation_lf_primaryContext.class,0); + } + public MethodReference_lf_primaryContext methodReference_lf_primary() { + return getRuleContext(MethodReference_lf_primaryContext.class,0); + } + public PrimaryNoNewArray_lf_primaryContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_primaryNoNewArray_lf_primary; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterPrimaryNoNewArray_lf_primary(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitPrimaryNoNewArray_lf_primary(this); + } + } + + public final PrimaryNoNewArray_lf_primaryContext primaryNoNewArray_lf_primary() throws RecognitionException { + PrimaryNoNewArray_lf_primaryContext _localctx = new PrimaryNoNewArray_lf_primaryContext(_ctx, getState()); + enterRule(_localctx, 360, RULE_primaryNoNewArray_lf_primary); + try { + setState(1940); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,197,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1935); + classInstanceCreationExpression_lf_primary(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1936); + fieldAccess_lf_primary(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(1937); + arrayAccess_lf_primary(); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(1938); + methodInvocation_lf_primary(); + } + break; + case 5: + enterOuterAlt(_localctx, 5); + { + setState(1939); + methodReference_lf_primary(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class PrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primaryContext extends ParserRuleContext { + public PrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primaryContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_primaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterPrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitPrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary(this); + } + } + + public final PrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primaryContext primaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary() throws RecognitionException { + PrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primaryContext _localctx = new PrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primaryContext(_ctx, getState()); + enterRule(_localctx, 362, RULE_primaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary); + try { + enterOuterAlt(_localctx, 1); + { + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class PrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primaryContext extends ParserRuleContext { + public ClassInstanceCreationExpression_lf_primaryContext classInstanceCreationExpression_lf_primary() { + return getRuleContext(ClassInstanceCreationExpression_lf_primaryContext.class,0); + } + public FieldAccess_lf_primaryContext fieldAccess_lf_primary() { + return getRuleContext(FieldAccess_lf_primaryContext.class,0); + } + public MethodInvocation_lf_primaryContext methodInvocation_lf_primary() { + return getRuleContext(MethodInvocation_lf_primaryContext.class,0); + } + public MethodReference_lf_primaryContext methodReference_lf_primary() { + return getRuleContext(MethodReference_lf_primaryContext.class,0); + } + public PrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primaryContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_primaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterPrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitPrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary(this); + } + } + + public final PrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primaryContext primaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary() throws RecognitionException { + PrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primaryContext _localctx = new PrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primaryContext(_ctx, getState()); + enterRule(_localctx, 364, RULE_primaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary); + try { + setState(1948); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,198,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1944); + classInstanceCreationExpression_lf_primary(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1945); + fieldAccess_lf_primary(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(1946); + methodInvocation_lf_primary(); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(1947); + methodReference_lf_primary(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class PrimaryNoNewArray_lfno_primaryContext extends ParserRuleContext { + public LiteralContext literal() { + return getRuleContext(LiteralContext.class,0); + } + public TypeNameContext typeName() { + return getRuleContext(TypeNameContext.class,0); + } + public TerminalNode DOT() { return getToken(Java8Parser.DOT, 0); } + public TerminalNode CLASS() { return getToken(Java8Parser.CLASS, 0); } + public List LBRACK() { return getTokens(Java8Parser.LBRACK); } + public TerminalNode LBRACK(int i) { + return getToken(Java8Parser.LBRACK, i); + } + public List RBRACK() { return getTokens(Java8Parser.RBRACK); } + public TerminalNode RBRACK(int i) { + return getToken(Java8Parser.RBRACK, i); + } + public UnannPrimitiveTypeContext unannPrimitiveType() { + return getRuleContext(UnannPrimitiveTypeContext.class,0); + } + public TerminalNode VOID() { return getToken(Java8Parser.VOID, 0); } + public TerminalNode THIS() { return getToken(Java8Parser.THIS, 0); } + public TerminalNode LPAREN() { return getToken(Java8Parser.LPAREN, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public TerminalNode RPAREN() { return getToken(Java8Parser.RPAREN, 0); } + public ClassInstanceCreationExpression_lfno_primaryContext classInstanceCreationExpression_lfno_primary() { + return getRuleContext(ClassInstanceCreationExpression_lfno_primaryContext.class,0); + } + public FieldAccess_lfno_primaryContext fieldAccess_lfno_primary() { + return getRuleContext(FieldAccess_lfno_primaryContext.class,0); + } + public ArrayAccess_lfno_primaryContext arrayAccess_lfno_primary() { + return getRuleContext(ArrayAccess_lfno_primaryContext.class,0); + } + public MethodInvocation_lfno_primaryContext methodInvocation_lfno_primary() { + return getRuleContext(MethodInvocation_lfno_primaryContext.class,0); + } + public MethodReference_lfno_primaryContext methodReference_lfno_primary() { + return getRuleContext(MethodReference_lfno_primaryContext.class,0); + } + public PrimaryNoNewArray_lfno_primaryContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_primaryNoNewArray_lfno_primary; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterPrimaryNoNewArray_lfno_primary(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitPrimaryNoNewArray_lfno_primary(this); + } + } + + public final PrimaryNoNewArray_lfno_primaryContext primaryNoNewArray_lfno_primary() throws RecognitionException { + PrimaryNoNewArray_lfno_primaryContext _localctx = new PrimaryNoNewArray_lfno_primaryContext(_ctx, getState()); + enterRule(_localctx, 366, RULE_primaryNoNewArray_lfno_primary); + int _la; + try { + setState(1990); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,201,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1950); + literal(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1951); + typeName(); + setState(1956); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==LBRACK) { + { + { + setState(1952); + match(LBRACK); + setState(1953); + match(RBRACK); + } + } + setState(1958); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1959); + match(DOT); + setState(1960); + match(CLASS); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(1962); + unannPrimitiveType(); + setState(1967); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==LBRACK) { + { + { + setState(1963); + match(LBRACK); + setState(1964); + match(RBRACK); + } + } + setState(1969); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1970); + match(DOT); + setState(1971); + match(CLASS); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(1973); + match(VOID); + setState(1974); + match(DOT); + setState(1975); + match(CLASS); + } + break; + case 5: + enterOuterAlt(_localctx, 5); + { + setState(1976); + match(THIS); + } + break; + case 6: + enterOuterAlt(_localctx, 6); + { + setState(1977); + typeName(); + setState(1978); + match(DOT); + setState(1979); + match(THIS); + } + break; + case 7: + enterOuterAlt(_localctx, 7); + { + setState(1981); + match(LPAREN); + setState(1982); + expression(); + setState(1983); + match(RPAREN); + } + break; + case 8: + enterOuterAlt(_localctx, 8); + { + setState(1985); + classInstanceCreationExpression_lfno_primary(); + } + break; + case 9: + enterOuterAlt(_localctx, 9); + { + setState(1986); + fieldAccess_lfno_primary(); + } + break; + case 10: + enterOuterAlt(_localctx, 10); + { + setState(1987); + arrayAccess_lfno_primary(); + } + break; + case 11: + enterOuterAlt(_localctx, 11); + { + setState(1988); + methodInvocation_lfno_primary(); + } + break; + case 12: + enterOuterAlt(_localctx, 12); + { + setState(1989); + methodReference_lfno_primary(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class PrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primaryContext extends ParserRuleContext { + public PrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primaryContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_primaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterPrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitPrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary(this); + } + } + + public final PrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primaryContext primaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary() throws RecognitionException { + PrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primaryContext _localctx = new PrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primaryContext(_ctx, getState()); + enterRule(_localctx, 368, RULE_primaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary); + try { + enterOuterAlt(_localctx, 1); + { + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class PrimaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primaryContext extends ParserRuleContext { + public LiteralContext literal() { + return getRuleContext(LiteralContext.class,0); + } + public TypeNameContext typeName() { + return getRuleContext(TypeNameContext.class,0); + } + public TerminalNode DOT() { return getToken(Java8Parser.DOT, 0); } + public TerminalNode CLASS() { return getToken(Java8Parser.CLASS, 0); } + public List LBRACK() { return getTokens(Java8Parser.LBRACK); } + public TerminalNode LBRACK(int i) { + return getToken(Java8Parser.LBRACK, i); + } + public List RBRACK() { return getTokens(Java8Parser.RBRACK); } + public TerminalNode RBRACK(int i) { + return getToken(Java8Parser.RBRACK, i); + } + public UnannPrimitiveTypeContext unannPrimitiveType() { + return getRuleContext(UnannPrimitiveTypeContext.class,0); + } + public TerminalNode VOID() { return getToken(Java8Parser.VOID, 0); } + public TerminalNode THIS() { return getToken(Java8Parser.THIS, 0); } + public TerminalNode LPAREN() { return getToken(Java8Parser.LPAREN, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public TerminalNode RPAREN() { return getToken(Java8Parser.RPAREN, 0); } + public ClassInstanceCreationExpression_lfno_primaryContext classInstanceCreationExpression_lfno_primary() { + return getRuleContext(ClassInstanceCreationExpression_lfno_primaryContext.class,0); + } + public FieldAccess_lfno_primaryContext fieldAccess_lfno_primary() { + return getRuleContext(FieldAccess_lfno_primaryContext.class,0); + } + public MethodInvocation_lfno_primaryContext methodInvocation_lfno_primary() { + return getRuleContext(MethodInvocation_lfno_primaryContext.class,0); + } + public MethodReference_lfno_primaryContext methodReference_lfno_primary() { + return getRuleContext(MethodReference_lfno_primaryContext.class,0); + } + public PrimaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primaryContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_primaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterPrimaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitPrimaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary(this); + } + } + + public final PrimaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primaryContext primaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary() throws RecognitionException { + PrimaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primaryContext _localctx = new PrimaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primaryContext(_ctx, getState()); + enterRule(_localctx, 370, RULE_primaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary); + int _la; + try { + setState(2033); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,204,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1994); + literal(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1995); + typeName(); + setState(2000); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==LBRACK) { + { + { + setState(1996); + match(LBRACK); + setState(1997); + match(RBRACK); + } + } + setState(2002); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(2003); + match(DOT); + setState(2004); + match(CLASS); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(2006); + unannPrimitiveType(); + setState(2011); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==LBRACK) { + { + { + setState(2007); + match(LBRACK); + setState(2008); + match(RBRACK); + } + } + setState(2013); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(2014); + match(DOT); + setState(2015); + match(CLASS); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(2017); + match(VOID); + setState(2018); + match(DOT); + setState(2019); + match(CLASS); + } + break; + case 5: + enterOuterAlt(_localctx, 5); + { + setState(2020); + match(THIS); + } + break; + case 6: + enterOuterAlt(_localctx, 6); + { + setState(2021); + typeName(); + setState(2022); + match(DOT); + setState(2023); + match(THIS); + } + break; + case 7: + enterOuterAlt(_localctx, 7); + { + setState(2025); + match(LPAREN); + setState(2026); + expression(); + setState(2027); + match(RPAREN); + } + break; + case 8: + enterOuterAlt(_localctx, 8); + { + setState(2029); + classInstanceCreationExpression_lfno_primary(); + } + break; + case 9: + enterOuterAlt(_localctx, 9); + { + setState(2030); + fieldAccess_lfno_primary(); + } + break; + case 10: + enterOuterAlt(_localctx, 10); + { + setState(2031); + methodInvocation_lfno_primary(); + } + break; + case 11: + enterOuterAlt(_localctx, 11); + { + setState(2032); + methodReference_lfno_primary(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ClassInstanceCreationExpressionContext extends ParserRuleContext { + public TerminalNode NEW() { return getToken(Java8Parser.NEW, 0); } + public List Identifier() { return getTokens(Java8Parser.Identifier); } + public TerminalNode Identifier(int i) { + return getToken(Java8Parser.Identifier, i); + } + public TerminalNode LPAREN() { return getToken(Java8Parser.LPAREN, 0); } + public TerminalNode RPAREN() { return getToken(Java8Parser.RPAREN, 0); } + public TypeArgumentsContext typeArguments() { + return getRuleContext(TypeArgumentsContext.class,0); + } + public List annotation() { + return getRuleContexts(AnnotationContext.class); + } + public AnnotationContext annotation(int i) { + return getRuleContext(AnnotationContext.class,i); + } + public List DOT() { return getTokens(Java8Parser.DOT); } + public TerminalNode DOT(int i) { + return getToken(Java8Parser.DOT, i); + } + public TypeArgumentsOrDiamondContext typeArgumentsOrDiamond() { + return getRuleContext(TypeArgumentsOrDiamondContext.class,0); + } + public ArgumentListContext argumentList() { + return getRuleContext(ArgumentListContext.class,0); + } + public ClassBodyContext classBody() { + return getRuleContext(ClassBodyContext.class,0); + } + public ExpressionNameContext expressionName() { + return getRuleContext(ExpressionNameContext.class,0); + } + public PrimaryContext primary() { + return getRuleContext(PrimaryContext.class,0); + } + public ClassInstanceCreationExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_classInstanceCreationExpression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterClassInstanceCreationExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitClassInstanceCreationExpression(this); + } + } + + public final ClassInstanceCreationExpressionContext classInstanceCreationExpression() throws RecognitionException { + ClassInstanceCreationExpressionContext _localctx = new ClassInstanceCreationExpressionContext(_ctx, getState()); + enterRule(_localctx, 372, RULE_classInstanceCreationExpression); + int _la; + try { + setState(2118); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,222,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(2035); + match(NEW); + setState(2037); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LT) { + { + setState(2036); + typeArguments(); + } + } + + setState(2042); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==AT) { + { + { + setState(2039); + annotation(); + } + } + setState(2044); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(2045); + match(Identifier); + setState(2056); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==DOT) { + { + { + setState(2046); + match(DOT); + setState(2050); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==AT) { + { + { + setState(2047); + annotation(); + } + } + setState(2052); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(2053); + match(Identifier); + } + } + setState(2058); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(2060); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LT) { + { + setState(2059); + typeArgumentsOrDiamond(); + } + } + + setState(2062); + match(LPAREN); + setState(2064); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 286270087177978152L) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & 25769819139L) != 0)) { + { + setState(2063); + argumentList(); + } + } + + setState(2066); + match(RPAREN); + setState(2068); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LBRACE) { + { + setState(2067); + classBody(); + } + } + + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(2070); + expressionName(); + setState(2071); + match(DOT); + setState(2072); + match(NEW); + setState(2074); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LT) { + { + setState(2073); + typeArguments(); + } + } + + setState(2079); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==AT) { + { + { + setState(2076); + annotation(); + } + } + setState(2081); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(2082); + match(Identifier); + setState(2084); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LT) { + { + setState(2083); + typeArgumentsOrDiamond(); + } + } + + setState(2086); + match(LPAREN); + setState(2088); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 286270087177978152L) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & 25769819139L) != 0)) { + { + setState(2087); + argumentList(); + } + } + + setState(2090); + match(RPAREN); + setState(2092); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LBRACE) { + { + setState(2091); + classBody(); + } + } + + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(2094); + primary(); + setState(2095); + match(DOT); + setState(2096); + match(NEW); + setState(2098); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LT) { + { + setState(2097); + typeArguments(); + } + } + + setState(2103); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==AT) { + { + { + setState(2100); + annotation(); + } + } + setState(2105); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(2106); + match(Identifier); + setState(2108); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LT) { + { + setState(2107); + typeArgumentsOrDiamond(); + } + } + + setState(2110); + match(LPAREN); + setState(2112); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 286270087177978152L) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & 25769819139L) != 0)) { + { + setState(2111); + argumentList(); + } + } + + setState(2114); + match(RPAREN); + setState(2116); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LBRACE) { + { + setState(2115); + classBody(); + } + } + + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ClassInstanceCreationExpression_lf_primaryContext extends ParserRuleContext { + public TerminalNode DOT() { return getToken(Java8Parser.DOT, 0); } + public TerminalNode NEW() { return getToken(Java8Parser.NEW, 0); } + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public TerminalNode LPAREN() { return getToken(Java8Parser.LPAREN, 0); } + public TerminalNode RPAREN() { return getToken(Java8Parser.RPAREN, 0); } + public TypeArgumentsContext typeArguments() { + return getRuleContext(TypeArgumentsContext.class,0); + } + public List annotation() { + return getRuleContexts(AnnotationContext.class); + } + public AnnotationContext annotation(int i) { + return getRuleContext(AnnotationContext.class,i); + } + public TypeArgumentsOrDiamondContext typeArgumentsOrDiamond() { + return getRuleContext(TypeArgumentsOrDiamondContext.class,0); + } + public ArgumentListContext argumentList() { + return getRuleContext(ArgumentListContext.class,0); + } + public ClassBodyContext classBody() { + return getRuleContext(ClassBodyContext.class,0); + } + public ClassInstanceCreationExpression_lf_primaryContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_classInstanceCreationExpression_lf_primary; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterClassInstanceCreationExpression_lf_primary(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitClassInstanceCreationExpression_lf_primary(this); + } + } + + public final ClassInstanceCreationExpression_lf_primaryContext classInstanceCreationExpression_lf_primary() throws RecognitionException { + ClassInstanceCreationExpression_lf_primaryContext _localctx = new ClassInstanceCreationExpression_lf_primaryContext(_ctx, getState()); + enterRule(_localctx, 374, RULE_classInstanceCreationExpression_lf_primary); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(2120); + match(DOT); + setState(2121); + match(NEW); + setState(2123); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LT) { + { + setState(2122); + typeArguments(); + } + } + + setState(2128); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==AT) { + { + { + setState(2125); + annotation(); + } + } + setState(2130); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(2131); + match(Identifier); + setState(2133); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LT) { + { + setState(2132); + typeArgumentsOrDiamond(); + } + } + + setState(2135); + match(LPAREN); + setState(2137); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 286270087177978152L) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & 25769819139L) != 0)) { + { + setState(2136); + argumentList(); + } + } + + setState(2139); + match(RPAREN); + setState(2141); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,227,_ctx) ) { + case 1: + { + setState(2140); + classBody(); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ClassInstanceCreationExpression_lfno_primaryContext extends ParserRuleContext { + public TerminalNode NEW() { return getToken(Java8Parser.NEW, 0); } + public List Identifier() { return getTokens(Java8Parser.Identifier); } + public TerminalNode Identifier(int i) { + return getToken(Java8Parser.Identifier, i); + } + public TerminalNode LPAREN() { return getToken(Java8Parser.LPAREN, 0); } + public TerminalNode RPAREN() { return getToken(Java8Parser.RPAREN, 0); } + public TypeArgumentsContext typeArguments() { + return getRuleContext(TypeArgumentsContext.class,0); + } + public List annotation() { + return getRuleContexts(AnnotationContext.class); + } + public AnnotationContext annotation(int i) { + return getRuleContext(AnnotationContext.class,i); + } + public List DOT() { return getTokens(Java8Parser.DOT); } + public TerminalNode DOT(int i) { + return getToken(Java8Parser.DOT, i); + } + public TypeArgumentsOrDiamondContext typeArgumentsOrDiamond() { + return getRuleContext(TypeArgumentsOrDiamondContext.class,0); + } + public ArgumentListContext argumentList() { + return getRuleContext(ArgumentListContext.class,0); + } + public ClassBodyContext classBody() { + return getRuleContext(ClassBodyContext.class,0); + } + public ExpressionNameContext expressionName() { + return getRuleContext(ExpressionNameContext.class,0); + } + public ClassInstanceCreationExpression_lfno_primaryContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_classInstanceCreationExpression_lfno_primary; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterClassInstanceCreationExpression_lfno_primary(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitClassInstanceCreationExpression_lfno_primary(this); + } + } + + public final ClassInstanceCreationExpression_lfno_primaryContext classInstanceCreationExpression_lfno_primary() throws RecognitionException { + ClassInstanceCreationExpression_lfno_primaryContext _localctx = new ClassInstanceCreationExpression_lfno_primaryContext(_ctx, getState()); + enterRule(_localctx, 376, RULE_classInstanceCreationExpression_lfno_primary); + int _la; + try { + setState(2202); + _errHandler.sync(this); + switch (_input.LA(1)) { + case NEW: + enterOuterAlt(_localctx, 1); + { + setState(2143); + match(NEW); + setState(2145); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LT) { + { + setState(2144); + typeArguments(); + } + } + + setState(2150); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==AT) { + { + { + setState(2147); + annotation(); + } + } + setState(2152); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(2153); + match(Identifier); + setState(2164); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==DOT) { + { + { + setState(2154); + match(DOT); + setState(2158); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==AT) { + { + { + setState(2155); + annotation(); + } + } + setState(2160); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(2161); + match(Identifier); + } + } + setState(2166); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(2168); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LT) { + { + setState(2167); + typeArgumentsOrDiamond(); + } + } + + setState(2170); + match(LPAREN); + setState(2172); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 286270087177978152L) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & 25769819139L) != 0)) { + { + setState(2171); + argumentList(); + } + } + + setState(2174); + match(RPAREN); + setState(2176); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,234,_ctx) ) { + case 1: + { + setState(2175); + classBody(); + } + break; + } + } + break; + case Identifier: + enterOuterAlt(_localctx, 2); + { + setState(2178); + expressionName(); + setState(2179); + match(DOT); + setState(2180); + match(NEW); + setState(2182); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LT) { + { + setState(2181); + typeArguments(); + } + } + + setState(2187); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==AT) { + { + { + setState(2184); + annotation(); + } + } + setState(2189); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(2190); + match(Identifier); + setState(2192); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LT) { + { + setState(2191); + typeArgumentsOrDiamond(); + } + } + + setState(2194); + match(LPAREN); + setState(2196); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 286270087177978152L) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & 25769819139L) != 0)) { + { + setState(2195); + argumentList(); + } + } + + setState(2198); + match(RPAREN); + setState(2200); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,239,_ctx) ) { + case 1: + { + setState(2199); + classBody(); + } + 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; + } + + @SuppressWarnings("CheckReturnValue") + public static class TypeArgumentsOrDiamondContext extends ParserRuleContext { + public TypeArgumentsContext typeArguments() { + return getRuleContext(TypeArgumentsContext.class,0); + } + public TerminalNode LT() { return getToken(Java8Parser.LT, 0); } + public TerminalNode GT() { return getToken(Java8Parser.GT, 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 Java8Listener ) ((Java8Listener)listener).enterTypeArgumentsOrDiamond(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitTypeArgumentsOrDiamond(this); + } + } + + public final TypeArgumentsOrDiamondContext typeArgumentsOrDiamond() throws RecognitionException { + TypeArgumentsOrDiamondContext _localctx = new TypeArgumentsOrDiamondContext(_ctx, getState()); + enterRule(_localctx, 378, RULE_typeArgumentsOrDiamond); + try { + setState(2207); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,241,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(2204); + typeArguments(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(2205); + match(LT); + setState(2206); + match(GT); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class FieldAccessContext extends ParserRuleContext { + public PrimaryContext primary() { + return getRuleContext(PrimaryContext.class,0); + } + public List DOT() { return getTokens(Java8Parser.DOT); } + public TerminalNode DOT(int i) { + return getToken(Java8Parser.DOT, i); + } + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public TerminalNode SUPER() { return getToken(Java8Parser.SUPER, 0); } + public TypeNameContext typeName() { + return getRuleContext(TypeNameContext.class,0); + } + public FieldAccessContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_fieldAccess; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterFieldAccess(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitFieldAccess(this); + } + } + + public final FieldAccessContext fieldAccess() throws RecognitionException { + FieldAccessContext _localctx = new FieldAccessContext(_ctx, getState()); + enterRule(_localctx, 380, RULE_fieldAccess); + try { + setState(2222); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,242,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(2209); + primary(); + setState(2210); + match(DOT); + setState(2211); + match(Identifier); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(2213); + match(SUPER); + setState(2214); + match(DOT); + setState(2215); + match(Identifier); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(2216); + typeName(); + setState(2217); + match(DOT); + setState(2218); + match(SUPER); + setState(2219); + match(DOT); + setState(2220); + match(Identifier); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class FieldAccess_lf_primaryContext extends ParserRuleContext { + public TerminalNode DOT() { return getToken(Java8Parser.DOT, 0); } + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public FieldAccess_lf_primaryContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_fieldAccess_lf_primary; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterFieldAccess_lf_primary(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitFieldAccess_lf_primary(this); + } + } + + public final FieldAccess_lf_primaryContext fieldAccess_lf_primary() throws RecognitionException { + FieldAccess_lf_primaryContext _localctx = new FieldAccess_lf_primaryContext(_ctx, getState()); + enterRule(_localctx, 382, RULE_fieldAccess_lf_primary); + try { + enterOuterAlt(_localctx, 1); + { + setState(2224); + match(DOT); + setState(2225); + match(Identifier); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class FieldAccess_lfno_primaryContext extends ParserRuleContext { + public TerminalNode SUPER() { return getToken(Java8Parser.SUPER, 0); } + public List DOT() { return getTokens(Java8Parser.DOT); } + public TerminalNode DOT(int i) { + return getToken(Java8Parser.DOT, i); + } + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public TypeNameContext typeName() { + return getRuleContext(TypeNameContext.class,0); + } + public FieldAccess_lfno_primaryContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_fieldAccess_lfno_primary; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterFieldAccess_lfno_primary(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitFieldAccess_lfno_primary(this); + } + } + + public final FieldAccess_lfno_primaryContext fieldAccess_lfno_primary() throws RecognitionException { + FieldAccess_lfno_primaryContext _localctx = new FieldAccess_lfno_primaryContext(_ctx, getState()); + enterRule(_localctx, 384, RULE_fieldAccess_lfno_primary); + try { + setState(2236); + _errHandler.sync(this); + switch (_input.LA(1)) { + case SUPER: + enterOuterAlt(_localctx, 1); + { + setState(2227); + match(SUPER); + setState(2228); + match(DOT); + setState(2229); + match(Identifier); + } + break; + case Identifier: + enterOuterAlt(_localctx, 2); + { + setState(2230); + typeName(); + setState(2231); + match(DOT); + setState(2232); + match(SUPER); + setState(2233); + match(DOT); + setState(2234); + match(Identifier); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ArrayAccessContext extends ParserRuleContext { + public ExpressionNameContext expressionName() { + return getRuleContext(ExpressionNameContext.class,0); + } + public List LBRACK() { return getTokens(Java8Parser.LBRACK); } + public TerminalNode LBRACK(int i) { + return getToken(Java8Parser.LBRACK, i); + } + public List expression() { + return getRuleContexts(ExpressionContext.class); + } + public ExpressionContext expression(int i) { + return getRuleContext(ExpressionContext.class,i); + } + public List RBRACK() { return getTokens(Java8Parser.RBRACK); } + public TerminalNode RBRACK(int i) { + return getToken(Java8Parser.RBRACK, i); + } + public PrimaryNoNewArray_lfno_arrayAccessContext primaryNoNewArray_lfno_arrayAccess() { + return getRuleContext(PrimaryNoNewArray_lfno_arrayAccessContext.class,0); + } + public List primaryNoNewArray_lf_arrayAccess() { + return getRuleContexts(PrimaryNoNewArray_lf_arrayAccessContext.class); + } + public PrimaryNoNewArray_lf_arrayAccessContext primaryNoNewArray_lf_arrayAccess(int i) { + return getRuleContext(PrimaryNoNewArray_lf_arrayAccessContext.class,i); + } + public ArrayAccessContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_arrayAccess; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterArrayAccess(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitArrayAccess(this); + } + } + + public final ArrayAccessContext arrayAccess() throws RecognitionException { + ArrayAccessContext _localctx = new ArrayAccessContext(_ctx, getState()); + enterRule(_localctx, 386, RULE_arrayAccess); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(2248); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,244,_ctx) ) { + case 1: + { + setState(2238); + expressionName(); + setState(2239); + match(LBRACK); + setState(2240); + expression(); + setState(2241); + match(RBRACK); + } + break; + case 2: + { + setState(2243); + primaryNoNewArray_lfno_arrayAccess(); + setState(2244); + match(LBRACK); + setState(2245); + expression(); + setState(2246); + match(RBRACK); + } + break; + } + setState(2257); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==LBRACK) { + { + { + setState(2250); + primaryNoNewArray_lf_arrayAccess(); + setState(2251); + match(LBRACK); + setState(2252); + expression(); + setState(2253); + match(RBRACK); + } + } + setState(2259); + _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; + } + + @SuppressWarnings("CheckReturnValue") + public static class ArrayAccess_lf_primaryContext extends ParserRuleContext { + public PrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primaryContext primaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary() { + return getRuleContext(PrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primaryContext.class,0); + } + public List LBRACK() { return getTokens(Java8Parser.LBRACK); } + public TerminalNode LBRACK(int i) { + return getToken(Java8Parser.LBRACK, i); + } + public List expression() { + return getRuleContexts(ExpressionContext.class); + } + public ExpressionContext expression(int i) { + return getRuleContext(ExpressionContext.class,i); + } + public List RBRACK() { return getTokens(Java8Parser.RBRACK); } + public TerminalNode RBRACK(int i) { + return getToken(Java8Parser.RBRACK, i); + } + public List primaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary() { + return getRuleContexts(PrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primaryContext.class); + } + public PrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primaryContext primaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary(int i) { + return getRuleContext(PrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primaryContext.class,i); + } + public ArrayAccess_lf_primaryContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_arrayAccess_lf_primary; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterArrayAccess_lf_primary(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitArrayAccess_lf_primary(this); + } + } + + public final ArrayAccess_lf_primaryContext arrayAccess_lf_primary() throws RecognitionException { + ArrayAccess_lf_primaryContext _localctx = new ArrayAccess_lf_primaryContext(_ctx, getState()); + enterRule(_localctx, 388, RULE_arrayAccess_lf_primary); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + { + setState(2260); + primaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary(); + setState(2261); + match(LBRACK); + setState(2262); + expression(); + setState(2263); + match(RBRACK); + } + setState(2272); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,246,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(2265); + primaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary(); + setState(2266); + match(LBRACK); + setState(2267); + expression(); + setState(2268); + match(RBRACK); + } + } + } + setState(2274); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,246,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ArrayAccess_lfno_primaryContext extends ParserRuleContext { + public ExpressionNameContext expressionName() { + return getRuleContext(ExpressionNameContext.class,0); + } + public List LBRACK() { return getTokens(Java8Parser.LBRACK); } + public TerminalNode LBRACK(int i) { + return getToken(Java8Parser.LBRACK, i); + } + public List expression() { + return getRuleContexts(ExpressionContext.class); + } + public ExpressionContext expression(int i) { + return getRuleContext(ExpressionContext.class,i); + } + public List RBRACK() { return getTokens(Java8Parser.RBRACK); } + public TerminalNode RBRACK(int i) { + return getToken(Java8Parser.RBRACK, i); + } + public PrimaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primaryContext primaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary() { + return getRuleContext(PrimaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primaryContext.class,0); + } + public List primaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary() { + return getRuleContexts(PrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primaryContext.class); + } + public PrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primaryContext primaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary(int i) { + return getRuleContext(PrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primaryContext.class,i); + } + public ArrayAccess_lfno_primaryContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_arrayAccess_lfno_primary; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterArrayAccess_lfno_primary(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitArrayAccess_lfno_primary(this); + } + } + + public final ArrayAccess_lfno_primaryContext arrayAccess_lfno_primary() throws RecognitionException { + ArrayAccess_lfno_primaryContext _localctx = new ArrayAccess_lfno_primaryContext(_ctx, getState()); + enterRule(_localctx, 390, RULE_arrayAccess_lfno_primary); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(2285); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,247,_ctx) ) { + case 1: + { + setState(2275); + expressionName(); + setState(2276); + match(LBRACK); + setState(2277); + expression(); + setState(2278); + match(RBRACK); + } + break; + case 2: + { + setState(2280); + primaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary(); + setState(2281); + match(LBRACK); + setState(2282); + expression(); + setState(2283); + match(RBRACK); + } + break; + } + setState(2294); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,248,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(2287); + primaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary(); + setState(2288); + match(LBRACK); + setState(2289); + expression(); + setState(2290); + match(RBRACK); + } + } + } + setState(2296); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,248,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class MethodInvocationContext extends ParserRuleContext { + public MethodNameContext methodName() { + return getRuleContext(MethodNameContext.class,0); + } + public TerminalNode LPAREN() { return getToken(Java8Parser.LPAREN, 0); } + public TerminalNode RPAREN() { return getToken(Java8Parser.RPAREN, 0); } + public ArgumentListContext argumentList() { + return getRuleContext(ArgumentListContext.class,0); + } + public TypeNameContext typeName() { + return getRuleContext(TypeNameContext.class,0); + } + public List DOT() { return getTokens(Java8Parser.DOT); } + public TerminalNode DOT(int i) { + return getToken(Java8Parser.DOT, i); + } + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public TypeArgumentsContext typeArguments() { + return getRuleContext(TypeArgumentsContext.class,0); + } + public ExpressionNameContext expressionName() { + return getRuleContext(ExpressionNameContext.class,0); + } + public PrimaryContext primary() { + return getRuleContext(PrimaryContext.class,0); + } + public TerminalNode SUPER() { return getToken(Java8Parser.SUPER, 0); } + public MethodInvocationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_methodInvocation; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterMethodInvocation(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitMethodInvocation(this); + } + } + + public final MethodInvocationContext methodInvocation() throws RecognitionException { + MethodInvocationContext _localctx = new MethodInvocationContext(_ctx, getState()); + enterRule(_localctx, 392, RULE_methodInvocation); + int _la; + try { + setState(2365); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,260,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(2297); + methodName(); + setState(2298); + match(LPAREN); + setState(2300); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 286270087177978152L) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & 25769819139L) != 0)) { + { + setState(2299); + argumentList(); + } + } + + setState(2302); + match(RPAREN); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(2304); + typeName(); + setState(2305); + match(DOT); + setState(2307); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LT) { + { + setState(2306); + typeArguments(); + } + } + + setState(2309); + match(Identifier); + setState(2310); + match(LPAREN); + setState(2312); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 286270087177978152L) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & 25769819139L) != 0)) { + { + setState(2311); + argumentList(); + } + } + + setState(2314); + match(RPAREN); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(2316); + expressionName(); + setState(2317); + match(DOT); + setState(2319); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LT) { + { + setState(2318); + typeArguments(); + } + } + + setState(2321); + match(Identifier); + setState(2322); + match(LPAREN); + setState(2324); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 286270087177978152L) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & 25769819139L) != 0)) { + { + setState(2323); + argumentList(); + } + } + + setState(2326); + match(RPAREN); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(2328); + primary(); + setState(2329); + match(DOT); + setState(2331); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LT) { + { + setState(2330); + typeArguments(); + } + } + + setState(2333); + match(Identifier); + setState(2334); + match(LPAREN); + setState(2336); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 286270087177978152L) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & 25769819139L) != 0)) { + { + setState(2335); + argumentList(); + } + } + + setState(2338); + match(RPAREN); + } + break; + case 5: + enterOuterAlt(_localctx, 5); + { + setState(2340); + match(SUPER); + setState(2341); + match(DOT); + setState(2343); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LT) { + { + setState(2342); + typeArguments(); + } + } + + setState(2345); + match(Identifier); + setState(2346); + match(LPAREN); + setState(2348); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 286270087177978152L) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & 25769819139L) != 0)) { + { + setState(2347); + argumentList(); + } + } + + setState(2350); + match(RPAREN); + } + break; + case 6: + enterOuterAlt(_localctx, 6); + { + setState(2351); + typeName(); + setState(2352); + match(DOT); + setState(2353); + match(SUPER); + setState(2354); + match(DOT); + setState(2356); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LT) { + { + setState(2355); + typeArguments(); + } + } + + setState(2358); + match(Identifier); + setState(2359); + match(LPAREN); + setState(2361); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 286270087177978152L) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & 25769819139L) != 0)) { + { + setState(2360); + argumentList(); + } + } + + setState(2363); + match(RPAREN); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class MethodInvocation_lf_primaryContext extends ParserRuleContext { + public TerminalNode DOT() { return getToken(Java8Parser.DOT, 0); } + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public TerminalNode LPAREN() { return getToken(Java8Parser.LPAREN, 0); } + public TerminalNode RPAREN() { return getToken(Java8Parser.RPAREN, 0); } + public TypeArgumentsContext typeArguments() { + return getRuleContext(TypeArgumentsContext.class,0); + } + public ArgumentListContext argumentList() { + return getRuleContext(ArgumentListContext.class,0); + } + public MethodInvocation_lf_primaryContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_methodInvocation_lf_primary; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterMethodInvocation_lf_primary(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitMethodInvocation_lf_primary(this); + } + } + + public final MethodInvocation_lf_primaryContext methodInvocation_lf_primary() throws RecognitionException { + MethodInvocation_lf_primaryContext _localctx = new MethodInvocation_lf_primaryContext(_ctx, getState()); + enterRule(_localctx, 394, RULE_methodInvocation_lf_primary); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(2367); + match(DOT); + setState(2369); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LT) { + { + setState(2368); + typeArguments(); + } + } + + setState(2371); + match(Identifier); + setState(2372); + match(LPAREN); + setState(2374); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 286270087177978152L) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & 25769819139L) != 0)) { + { + setState(2373); + argumentList(); + } + } + + setState(2376); + match(RPAREN); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class MethodInvocation_lfno_primaryContext extends ParserRuleContext { + public MethodNameContext methodName() { + return getRuleContext(MethodNameContext.class,0); + } + public TerminalNode LPAREN() { return getToken(Java8Parser.LPAREN, 0); } + public TerminalNode RPAREN() { return getToken(Java8Parser.RPAREN, 0); } + public ArgumentListContext argumentList() { + return getRuleContext(ArgumentListContext.class,0); + } + public TypeNameContext typeName() { + return getRuleContext(TypeNameContext.class,0); + } + public List DOT() { return getTokens(Java8Parser.DOT); } + public TerminalNode DOT(int i) { + return getToken(Java8Parser.DOT, i); + } + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public TypeArgumentsContext typeArguments() { + return getRuleContext(TypeArgumentsContext.class,0); + } + public ExpressionNameContext expressionName() { + return getRuleContext(ExpressionNameContext.class,0); + } + public TerminalNode SUPER() { return getToken(Java8Parser.SUPER, 0); } + public MethodInvocation_lfno_primaryContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_methodInvocation_lfno_primary; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterMethodInvocation_lfno_primary(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitMethodInvocation_lfno_primary(this); + } + } + + public final MethodInvocation_lfno_primaryContext methodInvocation_lfno_primary() throws RecognitionException { + MethodInvocation_lfno_primaryContext _localctx = new MethodInvocation_lfno_primaryContext(_ctx, getState()); + enterRule(_localctx, 396, RULE_methodInvocation_lfno_primary); + int _la; + try { + setState(2434); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,272,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(2378); + methodName(); + setState(2379); + match(LPAREN); + setState(2381); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 286270087177978152L) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & 25769819139L) != 0)) { + { + setState(2380); + argumentList(); + } + } + + setState(2383); + match(RPAREN); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(2385); + typeName(); + setState(2386); + match(DOT); + setState(2388); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LT) { + { + setState(2387); + typeArguments(); + } + } + + setState(2390); + match(Identifier); + setState(2391); + match(LPAREN); + setState(2393); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 286270087177978152L) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & 25769819139L) != 0)) { + { + setState(2392); + argumentList(); + } + } + + setState(2395); + match(RPAREN); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(2397); + expressionName(); + setState(2398); + match(DOT); + setState(2400); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LT) { + { + setState(2399); + typeArguments(); + } + } + + setState(2402); + match(Identifier); + setState(2403); + match(LPAREN); + setState(2405); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 286270087177978152L) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & 25769819139L) != 0)) { + { + setState(2404); + argumentList(); + } + } + + setState(2407); + match(RPAREN); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(2409); + match(SUPER); + setState(2410); + match(DOT); + setState(2412); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LT) { + { + setState(2411); + typeArguments(); + } + } + + setState(2414); + match(Identifier); + setState(2415); + match(LPAREN); + setState(2417); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 286270087177978152L) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & 25769819139L) != 0)) { + { + setState(2416); + argumentList(); + } + } + + setState(2419); + match(RPAREN); + } + break; + case 5: + enterOuterAlt(_localctx, 5); + { + setState(2420); + typeName(); + setState(2421); + match(DOT); + setState(2422); + match(SUPER); + setState(2423); + match(DOT); + setState(2425); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LT) { + { + setState(2424); + typeArguments(); + } + } + + setState(2427); + match(Identifier); + setState(2428); + match(LPAREN); + setState(2430); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 286270087177978152L) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & 25769819139L) != 0)) { + { + setState(2429); + argumentList(); + } + } + + setState(2432); + match(RPAREN); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ArgumentListContext extends ParserRuleContext { + public List expression() { + return getRuleContexts(ExpressionContext.class); + } + public ExpressionContext expression(int i) { + return getRuleContext(ExpressionContext.class,i); + } + public List COMMA() { return getTokens(Java8Parser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(Java8Parser.COMMA, i); + } + public ArgumentListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_argumentList; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterArgumentList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitArgumentList(this); + } + } + + public final ArgumentListContext argumentList() throws RecognitionException { + ArgumentListContext _localctx = new ArgumentListContext(_ctx, getState()); + enterRule(_localctx, 398, RULE_argumentList); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(2436); + expression(); + setState(2441); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(2437); + match(COMMA); + setState(2438); + expression(); + } + } + setState(2443); + _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; + } + + @SuppressWarnings("CheckReturnValue") + public static class MethodReferenceContext extends ParserRuleContext { + public ExpressionNameContext expressionName() { + return getRuleContext(ExpressionNameContext.class,0); + } + public TerminalNode COLONCOLON() { return getToken(Java8Parser.COLONCOLON, 0); } + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public TypeArgumentsContext typeArguments() { + return getRuleContext(TypeArgumentsContext.class,0); + } + public ReferenceTypeContext referenceType() { + return getRuleContext(ReferenceTypeContext.class,0); + } + public PrimaryContext primary() { + return getRuleContext(PrimaryContext.class,0); + } + public TerminalNode SUPER() { return getToken(Java8Parser.SUPER, 0); } + public TypeNameContext typeName() { + return getRuleContext(TypeNameContext.class,0); + } + public TerminalNode DOT() { return getToken(Java8Parser.DOT, 0); } + public ClassTypeContext classType() { + return getRuleContext(ClassTypeContext.class,0); + } + public TerminalNode NEW() { return getToken(Java8Parser.NEW, 0); } + public ArrayTypeContext arrayType() { + return getRuleContext(ArrayTypeContext.class,0); + } + public MethodReferenceContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_methodReference; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterMethodReference(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitMethodReference(this); + } + } + + public final MethodReferenceContext methodReference() throws RecognitionException { + MethodReferenceContext _localctx = new MethodReferenceContext(_ctx, getState()); + enterRule(_localctx, 400, RULE_methodReference); + int _la; + try { + setState(2491); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,280,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(2444); + expressionName(); + setState(2445); + match(COLONCOLON); + setState(2447); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LT) { + { + setState(2446); + typeArguments(); + } + } + + setState(2449); + match(Identifier); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(2451); + referenceType(); + setState(2452); + match(COLONCOLON); + setState(2454); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LT) { + { + setState(2453); + typeArguments(); + } + } + + setState(2456); + match(Identifier); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(2458); + primary(); + setState(2459); + match(COLONCOLON); + setState(2461); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LT) { + { + setState(2460); + typeArguments(); + } + } + + setState(2463); + match(Identifier); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(2465); + match(SUPER); + setState(2466); + match(COLONCOLON); + setState(2468); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LT) { + { + setState(2467); + typeArguments(); + } + } + + setState(2470); + match(Identifier); + } + break; + case 5: + enterOuterAlt(_localctx, 5); + { + setState(2471); + typeName(); + setState(2472); + match(DOT); + setState(2473); + match(SUPER); + setState(2474); + match(COLONCOLON); + setState(2476); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LT) { + { + setState(2475); + typeArguments(); + } + } + + setState(2478); + match(Identifier); + } + break; + case 6: + enterOuterAlt(_localctx, 6); + { + setState(2480); + classType(); + setState(2481); + match(COLONCOLON); + setState(2483); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LT) { + { + setState(2482); + typeArguments(); + } + } + + setState(2485); + match(NEW); + } + break; + case 7: + enterOuterAlt(_localctx, 7); + { + setState(2487); + arrayType(); + setState(2488); + match(COLONCOLON); + setState(2489); + match(NEW); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class MethodReference_lf_primaryContext extends ParserRuleContext { + public TerminalNode COLONCOLON() { return getToken(Java8Parser.COLONCOLON, 0); } + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public TypeArgumentsContext typeArguments() { + return getRuleContext(TypeArgumentsContext.class,0); + } + public MethodReference_lf_primaryContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_methodReference_lf_primary; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterMethodReference_lf_primary(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitMethodReference_lf_primary(this); + } + } + + public final MethodReference_lf_primaryContext methodReference_lf_primary() throws RecognitionException { + MethodReference_lf_primaryContext _localctx = new MethodReference_lf_primaryContext(_ctx, getState()); + enterRule(_localctx, 402, RULE_methodReference_lf_primary); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(2493); + match(COLONCOLON); + setState(2495); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LT) { + { + setState(2494); + typeArguments(); + } + } + + setState(2497); + match(Identifier); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class MethodReference_lfno_primaryContext extends ParserRuleContext { + public ExpressionNameContext expressionName() { + return getRuleContext(ExpressionNameContext.class,0); + } + public TerminalNode COLONCOLON() { return getToken(Java8Parser.COLONCOLON, 0); } + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public TypeArgumentsContext typeArguments() { + return getRuleContext(TypeArgumentsContext.class,0); + } + public ReferenceTypeContext referenceType() { + return getRuleContext(ReferenceTypeContext.class,0); + } + public TerminalNode SUPER() { return getToken(Java8Parser.SUPER, 0); } + public TypeNameContext typeName() { + return getRuleContext(TypeNameContext.class,0); + } + public TerminalNode DOT() { return getToken(Java8Parser.DOT, 0); } + public ClassTypeContext classType() { + return getRuleContext(ClassTypeContext.class,0); + } + public TerminalNode NEW() { return getToken(Java8Parser.NEW, 0); } + public ArrayTypeContext arrayType() { + return getRuleContext(ArrayTypeContext.class,0); + } + public MethodReference_lfno_primaryContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_methodReference_lfno_primary; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterMethodReference_lfno_primary(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitMethodReference_lfno_primary(this); + } + } + + public final MethodReference_lfno_primaryContext methodReference_lfno_primary() throws RecognitionException { + MethodReference_lfno_primaryContext _localctx = new MethodReference_lfno_primaryContext(_ctx, getState()); + enterRule(_localctx, 404, RULE_methodReference_lfno_primary); + int _la; + try { + setState(2539); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,287,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(2499); + expressionName(); + setState(2500); + match(COLONCOLON); + setState(2502); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LT) { + { + setState(2501); + typeArguments(); + } + } + + setState(2504); + match(Identifier); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(2506); + referenceType(); + setState(2507); + match(COLONCOLON); + setState(2509); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LT) { + { + setState(2508); + typeArguments(); + } + } + + setState(2511); + match(Identifier); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(2513); + match(SUPER); + setState(2514); + match(COLONCOLON); + setState(2516); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LT) { + { + setState(2515); + typeArguments(); + } + } + + setState(2518); + match(Identifier); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(2519); + typeName(); + setState(2520); + match(DOT); + setState(2521); + match(SUPER); + setState(2522); + match(COLONCOLON); + setState(2524); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LT) { + { + setState(2523); + typeArguments(); + } + } + + setState(2526); + match(Identifier); + } + break; + case 5: + enterOuterAlt(_localctx, 5); + { + setState(2528); + classType(); + setState(2529); + match(COLONCOLON); + setState(2531); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LT) { + { + setState(2530); + typeArguments(); + } + } + + setState(2533); + match(NEW); + } + break; + case 6: + enterOuterAlt(_localctx, 6); + { + setState(2535); + arrayType(); + setState(2536); + match(COLONCOLON); + setState(2537); + match(NEW); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ArrayCreationExpressionContext extends ParserRuleContext { + public TerminalNode NEW() { return getToken(Java8Parser.NEW, 0); } + public PrimitiveTypeContext primitiveType() { + return getRuleContext(PrimitiveTypeContext.class,0); + } + public DimExprsContext dimExprs() { + return getRuleContext(DimExprsContext.class,0); + } + public DimsContext dims() { + return getRuleContext(DimsContext.class,0); + } + public ClassOrInterfaceTypeContext classOrInterfaceType() { + return getRuleContext(ClassOrInterfaceTypeContext.class,0); + } + public ArrayInitializerContext arrayInitializer() { + return getRuleContext(ArrayInitializerContext.class,0); + } + public ArrayCreationExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_arrayCreationExpression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterArrayCreationExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitArrayCreationExpression(this); + } + } + + public final ArrayCreationExpressionContext arrayCreationExpression() throws RecognitionException { + ArrayCreationExpressionContext _localctx = new ArrayCreationExpressionContext(_ctx, getState()); + enterRule(_localctx, 406, RULE_arrayCreationExpression); + try { + setState(2563); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,290,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(2541); + match(NEW); + setState(2542); + primitiveType(); + setState(2543); + dimExprs(); + setState(2545); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,288,_ctx) ) { + case 1: + { + setState(2544); + dims(); + } + break; + } + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(2547); + match(NEW); + setState(2548); + classOrInterfaceType(); + setState(2549); + dimExprs(); + setState(2551); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,289,_ctx) ) { + case 1: + { + setState(2550); + dims(); + } + break; + } + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(2553); + match(NEW); + setState(2554); + primitiveType(); + setState(2555); + dims(); + setState(2556); + arrayInitializer(); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(2558); + match(NEW); + setState(2559); + classOrInterfaceType(); + setState(2560); + dims(); + setState(2561); + arrayInitializer(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class DimExprsContext extends ParserRuleContext { + public List dimExpr() { + return getRuleContexts(DimExprContext.class); + } + public DimExprContext dimExpr(int i) { + return getRuleContext(DimExprContext.class,i); + } + public DimExprsContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_dimExprs; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterDimExprs(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitDimExprs(this); + } + } + + public final DimExprsContext dimExprs() throws RecognitionException { + DimExprsContext _localctx = new DimExprsContext(_ctx, getState()); + enterRule(_localctx, 408, RULE_dimExprs); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(2565); + dimExpr(); + setState(2569); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,291,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(2566); + dimExpr(); + } + } + } + setState(2571); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,291,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class DimExprContext extends ParserRuleContext { + public TerminalNode LBRACK() { return getToken(Java8Parser.LBRACK, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public TerminalNode RBRACK() { return getToken(Java8Parser.RBRACK, 0); } + public List annotation() { + return getRuleContexts(AnnotationContext.class); + } + public AnnotationContext annotation(int i) { + return getRuleContext(AnnotationContext.class,i); + } + public DimExprContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_dimExpr; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterDimExpr(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitDimExpr(this); + } + } + + public final DimExprContext dimExpr() throws RecognitionException { + DimExprContext _localctx = new DimExprContext(_ctx, getState()); + enterRule(_localctx, 410, RULE_dimExpr); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(2575); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==AT) { + { + { + setState(2572); + annotation(); + } + } + setState(2577); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(2578); + match(LBRACK); + setState(2579); + expression(); + setState(2580); + match(RBRACK); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ConstantExpressionContext extends ParserRuleContext { + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public ConstantExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_constantExpression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterConstantExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitConstantExpression(this); + } + } + + public final ConstantExpressionContext constantExpression() throws RecognitionException { + ConstantExpressionContext _localctx = new ConstantExpressionContext(_ctx, getState()); + enterRule(_localctx, 412, RULE_constantExpression); + try { + enterOuterAlt(_localctx, 1); + { + setState(2582); + expression(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ExpressionContext extends ParserRuleContext { + public LambdaExpressionContext lambdaExpression() { + return getRuleContext(LambdaExpressionContext.class,0); + } + public AssignmentExpressionContext assignmentExpression() { + return getRuleContext(AssignmentExpressionContext.class,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 Java8Listener ) ((Java8Listener)listener).enterExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitExpression(this); + } + } + + public final ExpressionContext expression() throws RecognitionException { + ExpressionContext _localctx = new ExpressionContext(_ctx, getState()); + enterRule(_localctx, 414, RULE_expression); + try { + setState(2586); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,293,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(2584); + lambdaExpression(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(2585); + assignmentExpression(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class LambdaExpressionContext extends ParserRuleContext { + public LambdaParametersContext lambdaParameters() { + return getRuleContext(LambdaParametersContext.class,0); + } + public TerminalNode ARROW() { return getToken(Java8Parser.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 Java8Listener ) ((Java8Listener)listener).enterLambdaExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitLambdaExpression(this); + } + } + + public final LambdaExpressionContext lambdaExpression() throws RecognitionException { + LambdaExpressionContext _localctx = new LambdaExpressionContext(_ctx, getState()); + enterRule(_localctx, 416, RULE_lambdaExpression); + try { + enterOuterAlt(_localctx, 1); + { + setState(2588); + lambdaParameters(); + setState(2589); + match(ARROW); + setState(2590); + lambdaBody(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class LambdaParametersContext extends ParserRuleContext { + public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); } + public TerminalNode LPAREN() { return getToken(Java8Parser.LPAREN, 0); } + public TerminalNode RPAREN() { return getToken(Java8Parser.RPAREN, 0); } + public FormalParameterListContext formalParameterList() { + return getRuleContext(FormalParameterListContext.class,0); + } + public InferredFormalParameterListContext inferredFormalParameterList() { + return getRuleContext(InferredFormalParameterListContext.class,0); + } + 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 Java8Listener ) ((Java8Listener)listener).enterLambdaParameters(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitLambdaParameters(this); + } + } + + public final LambdaParametersContext lambdaParameters() throws RecognitionException { + LambdaParametersContext _localctx = new LambdaParametersContext(_ctx, getState()); + enterRule(_localctx, 418, RULE_lambdaParameters); + int _la; + try { + setState(2602); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,295,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(2592); + match(Identifier); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(2593); + match(LPAREN); + setState(2595); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 138111369512L) != 0) || _la==Identifier || _la==AT) { + { + setState(2594); + formalParameterList(); + } + } + + setState(2597); + match(RPAREN); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(2598); + match(LPAREN); + setState(2599); + inferredFormalParameterList(); + setState(2600); + match(RPAREN); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class InferredFormalParameterListContext extends ParserRuleContext { + public List Identifier() { return getTokens(Java8Parser.Identifier); } + public TerminalNode Identifier(int i) { + return getToken(Java8Parser.Identifier, i); + } + public List COMMA() { return getTokens(Java8Parser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(Java8Parser.COMMA, i); + } + public InferredFormalParameterListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_inferredFormalParameterList; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterInferredFormalParameterList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitInferredFormalParameterList(this); + } + } + + public final InferredFormalParameterListContext inferredFormalParameterList() throws RecognitionException { + InferredFormalParameterListContext _localctx = new InferredFormalParameterListContext(_ctx, getState()); + enterRule(_localctx, 420, RULE_inferredFormalParameterList); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(2604); + match(Identifier); + setState(2609); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(2605); + match(COMMA); + setState(2606); + match(Identifier); + } + } + setState(2611); + _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; + } + + @SuppressWarnings("CheckReturnValue") + 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 Java8Listener ) ((Java8Listener)listener).enterLambdaBody(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitLambdaBody(this); + } + } + + public final LambdaBodyContext lambdaBody() throws RecognitionException { + LambdaBodyContext _localctx = new LambdaBodyContext(_ctx, getState()); + enterRule(_localctx, 422, RULE_lambdaBody); + try { + setState(2614); + _errHandler.sync(this); + switch (_input.LA(1)) { + case BOOLEAN: + case BYTE: + case CHAR: + case DOUBLE: + case FLOAT: + case INT: + case LONG: + case NEW: + case SHORT: + case SUPER: + case THIS: + case VOID: + case IntegerLiteral: + case FloatingPointLiteral: + case BooleanLiteral: + case CharacterLiteral: + case StringLiteral: + case NullLiteral: + case LPAREN: + case BANG: + case TILDE: + case INC: + case DEC: + case ADD: + case SUB: + case Identifier: + case AT: + enterOuterAlt(_localctx, 1); + { + setState(2612); + expression(); + } + break; + case LBRACE: + enterOuterAlt(_localctx, 2); + { + setState(2613); + 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; + } + + @SuppressWarnings("CheckReturnValue") + public static class AssignmentExpressionContext extends ParserRuleContext { + public ConditionalExpressionContext conditionalExpression() { + return getRuleContext(ConditionalExpressionContext.class,0); + } + public AssignmentContext assignment() { + return getRuleContext(AssignmentContext.class,0); + } + public AssignmentExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_assignmentExpression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterAssignmentExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitAssignmentExpression(this); + } + } + + public final AssignmentExpressionContext assignmentExpression() throws RecognitionException { + AssignmentExpressionContext _localctx = new AssignmentExpressionContext(_ctx, getState()); + enterRule(_localctx, 424, RULE_assignmentExpression); + try { + setState(2618); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,298,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(2616); + conditionalExpression(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(2617); + assignment(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class AssignmentContext extends ParserRuleContext { + public LeftHandSideContext leftHandSide() { + return getRuleContext(LeftHandSideContext.class,0); + } + public AssignmentOperatorContext assignmentOperator() { + return getRuleContext(AssignmentOperatorContext.class,0); + } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public AssignmentContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_assignment; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterAssignment(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitAssignment(this); + } + } + + public final AssignmentContext assignment() throws RecognitionException { + AssignmentContext _localctx = new AssignmentContext(_ctx, getState()); + enterRule(_localctx, 426, RULE_assignment); + try { + enterOuterAlt(_localctx, 1); + { + setState(2620); + leftHandSide(); + setState(2621); + assignmentOperator(); + setState(2622); + expression(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class LeftHandSideContext extends ParserRuleContext { + public ExpressionNameContext expressionName() { + return getRuleContext(ExpressionNameContext.class,0); + } + public FieldAccessContext fieldAccess() { + return getRuleContext(FieldAccessContext.class,0); + } + public ArrayAccessContext arrayAccess() { + return getRuleContext(ArrayAccessContext.class,0); + } + public LeftHandSideContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_leftHandSide; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterLeftHandSide(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitLeftHandSide(this); + } + } + + public final LeftHandSideContext leftHandSide() throws RecognitionException { + LeftHandSideContext _localctx = new LeftHandSideContext(_ctx, getState()); + enterRule(_localctx, 428, RULE_leftHandSide); + try { + setState(2627); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,299,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(2624); + expressionName(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(2625); + fieldAccess(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(2626); + arrayAccess(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class AssignmentOperatorContext extends ParserRuleContext { + public TerminalNode ASSIGN() { return getToken(Java8Parser.ASSIGN, 0); } + public TerminalNode MUL_ASSIGN() { return getToken(Java8Parser.MUL_ASSIGN, 0); } + public TerminalNode DIV_ASSIGN() { return getToken(Java8Parser.DIV_ASSIGN, 0); } + public TerminalNode MOD_ASSIGN() { return getToken(Java8Parser.MOD_ASSIGN, 0); } + public TerminalNode ADD_ASSIGN() { return getToken(Java8Parser.ADD_ASSIGN, 0); } + public TerminalNode SUB_ASSIGN() { return getToken(Java8Parser.SUB_ASSIGN, 0); } + public TerminalNode LSHIFT_ASSIGN() { return getToken(Java8Parser.LSHIFT_ASSIGN, 0); } + public TerminalNode RSHIFT_ASSIGN() { return getToken(Java8Parser.RSHIFT_ASSIGN, 0); } + public TerminalNode URSHIFT_ASSIGN() { return getToken(Java8Parser.URSHIFT_ASSIGN, 0); } + public TerminalNode AND_ASSIGN() { return getToken(Java8Parser.AND_ASSIGN, 0); } + public TerminalNode XOR_ASSIGN() { return getToken(Java8Parser.XOR_ASSIGN, 0); } + public TerminalNode OR_ASSIGN() { return getToken(Java8Parser.OR_ASSIGN, 0); } + public AssignmentOperatorContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_assignmentOperator; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterAssignmentOperator(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitAssignmentOperator(this); + } + } + + public final AssignmentOperatorContext assignmentOperator() throws RecognitionException { + AssignmentOperatorContext _localctx = new AssignmentOperatorContext(_ctx, getState()); + enterRule(_localctx, 430, RULE_assignmentOperator); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(2629); + _la = _input.LA(1); + if ( !(((((_la - 66)) & ~0x3f) == 0 && ((1L << (_la - 66)) & 68685922305L) != 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; + } + + @SuppressWarnings("CheckReturnValue") + public static class ConditionalExpressionContext extends ParserRuleContext { + public ConditionalOrExpressionContext conditionalOrExpression() { + return getRuleContext(ConditionalOrExpressionContext.class,0); + } + public TerminalNode QUESTION() { return getToken(Java8Parser.QUESTION, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public TerminalNode COLON() { return getToken(Java8Parser.COLON, 0); } + public ConditionalExpressionContext conditionalExpression() { + return getRuleContext(ConditionalExpressionContext.class,0); + } + public ConditionalExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_conditionalExpression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterConditionalExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitConditionalExpression(this); + } + } + + public final ConditionalExpressionContext conditionalExpression() throws RecognitionException { + ConditionalExpressionContext _localctx = new ConditionalExpressionContext(_ctx, getState()); + enterRule(_localctx, 432, RULE_conditionalExpression); + try { + setState(2638); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,300,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(2631); + conditionalOrExpression(0); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(2632); + conditionalOrExpression(0); + setState(2633); + match(QUESTION); + setState(2634); + expression(); + setState(2635); + match(COLON); + setState(2636); + conditionalExpression(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ConditionalOrExpressionContext extends ParserRuleContext { + public ConditionalAndExpressionContext conditionalAndExpression() { + return getRuleContext(ConditionalAndExpressionContext.class,0); + } + public ConditionalOrExpressionContext conditionalOrExpression() { + return getRuleContext(ConditionalOrExpressionContext.class,0); + } + public TerminalNode OR() { return getToken(Java8Parser.OR, 0); } + public ConditionalOrExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_conditionalOrExpression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterConditionalOrExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitConditionalOrExpression(this); + } + } + + public final ConditionalOrExpressionContext conditionalOrExpression() throws RecognitionException { + return conditionalOrExpression(0); + } + + private ConditionalOrExpressionContext conditionalOrExpression(int _p) throws RecognitionException { + ParserRuleContext _parentctx = _ctx; + int _parentState = getState(); + ConditionalOrExpressionContext _localctx = new ConditionalOrExpressionContext(_ctx, _parentState); + ConditionalOrExpressionContext _prevctx = _localctx; + int _startState = 434; + enterRecursionRule(_localctx, 434, RULE_conditionalOrExpression, _p); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + { + setState(2641); + conditionalAndExpression(0); + } + _ctx.stop = _input.LT(-1); + setState(2648); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,301,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + if ( _parseListeners!=null ) triggerExitRuleEvent(); + _prevctx = _localctx; + { + { + _localctx = new ConditionalOrExpressionContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_conditionalOrExpression); + setState(2643); + if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); + setState(2644); + match(OR); + setState(2645); + conditionalAndExpression(0); + } + } + } + setState(2650); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,301,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + unrollRecursionContexts(_parentctx); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ConditionalAndExpressionContext extends ParserRuleContext { + public InclusiveOrExpressionContext inclusiveOrExpression() { + return getRuleContext(InclusiveOrExpressionContext.class,0); + } + public ConditionalAndExpressionContext conditionalAndExpression() { + return getRuleContext(ConditionalAndExpressionContext.class,0); + } + public TerminalNode AND() { return getToken(Java8Parser.AND, 0); } + public ConditionalAndExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_conditionalAndExpression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterConditionalAndExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitConditionalAndExpression(this); + } + } + + public final ConditionalAndExpressionContext conditionalAndExpression() throws RecognitionException { + return conditionalAndExpression(0); + } + + private ConditionalAndExpressionContext conditionalAndExpression(int _p) throws RecognitionException { + ParserRuleContext _parentctx = _ctx; + int _parentState = getState(); + ConditionalAndExpressionContext _localctx = new ConditionalAndExpressionContext(_ctx, _parentState); + ConditionalAndExpressionContext _prevctx = _localctx; + int _startState = 436; + enterRecursionRule(_localctx, 436, RULE_conditionalAndExpression, _p); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + { + setState(2652); + inclusiveOrExpression(0); + } + _ctx.stop = _input.LT(-1); + setState(2659); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,302,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + if ( _parseListeners!=null ) triggerExitRuleEvent(); + _prevctx = _localctx; + { + { + _localctx = new ConditionalAndExpressionContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_conditionalAndExpression); + setState(2654); + if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); + setState(2655); + match(AND); + setState(2656); + inclusiveOrExpression(0); + } + } + } + setState(2661); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,302,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + unrollRecursionContexts(_parentctx); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class InclusiveOrExpressionContext extends ParserRuleContext { + public ExclusiveOrExpressionContext exclusiveOrExpression() { + return getRuleContext(ExclusiveOrExpressionContext.class,0); + } + public InclusiveOrExpressionContext inclusiveOrExpression() { + return getRuleContext(InclusiveOrExpressionContext.class,0); + } + public TerminalNode BITOR() { return getToken(Java8Parser.BITOR, 0); } + public InclusiveOrExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_inclusiveOrExpression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterInclusiveOrExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitInclusiveOrExpression(this); + } + } + + public final InclusiveOrExpressionContext inclusiveOrExpression() throws RecognitionException { + return inclusiveOrExpression(0); + } + + private InclusiveOrExpressionContext inclusiveOrExpression(int _p) throws RecognitionException { + ParserRuleContext _parentctx = _ctx; + int _parentState = getState(); + InclusiveOrExpressionContext _localctx = new InclusiveOrExpressionContext(_ctx, _parentState); + InclusiveOrExpressionContext _prevctx = _localctx; + int _startState = 438; + enterRecursionRule(_localctx, 438, RULE_inclusiveOrExpression, _p); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + { + setState(2663); + exclusiveOrExpression(0); + } + _ctx.stop = _input.LT(-1); + setState(2670); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,303,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + if ( _parseListeners!=null ) triggerExitRuleEvent(); + _prevctx = _localctx; + { + { + _localctx = new InclusiveOrExpressionContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_inclusiveOrExpression); + setState(2665); + if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); + setState(2666); + match(BITOR); + setState(2667); + exclusiveOrExpression(0); + } + } + } + setState(2672); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,303,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + unrollRecursionContexts(_parentctx); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ExclusiveOrExpressionContext extends ParserRuleContext { + public AndExpressionContext andExpression() { + return getRuleContext(AndExpressionContext.class,0); + } + public ExclusiveOrExpressionContext exclusiveOrExpression() { + return getRuleContext(ExclusiveOrExpressionContext.class,0); + } + public TerminalNode CARET() { return getToken(Java8Parser.CARET, 0); } + public ExclusiveOrExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_exclusiveOrExpression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterExclusiveOrExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitExclusiveOrExpression(this); + } + } + + public final ExclusiveOrExpressionContext exclusiveOrExpression() throws RecognitionException { + return exclusiveOrExpression(0); + } + + private ExclusiveOrExpressionContext exclusiveOrExpression(int _p) throws RecognitionException { + ParserRuleContext _parentctx = _ctx; + int _parentState = getState(); + ExclusiveOrExpressionContext _localctx = new ExclusiveOrExpressionContext(_ctx, _parentState); + ExclusiveOrExpressionContext _prevctx = _localctx; + int _startState = 440; + enterRecursionRule(_localctx, 440, RULE_exclusiveOrExpression, _p); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + { + setState(2674); + andExpression(0); + } + _ctx.stop = _input.LT(-1); + setState(2681); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,304,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + if ( _parseListeners!=null ) triggerExitRuleEvent(); + _prevctx = _localctx; + { + { + _localctx = new ExclusiveOrExpressionContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_exclusiveOrExpression); + setState(2676); + if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); + setState(2677); + match(CARET); + setState(2678); + andExpression(0); + } + } + } + setState(2683); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,304,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + unrollRecursionContexts(_parentctx); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class AndExpressionContext extends ParserRuleContext { + public EqualityExpressionContext equalityExpression() { + return getRuleContext(EqualityExpressionContext.class,0); + } + public AndExpressionContext andExpression() { + return getRuleContext(AndExpressionContext.class,0); + } + public TerminalNode BITAND() { return getToken(Java8Parser.BITAND, 0); } + public AndExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_andExpression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterAndExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitAndExpression(this); + } + } + + public final AndExpressionContext andExpression() throws RecognitionException { + return andExpression(0); + } + + private AndExpressionContext andExpression(int _p) throws RecognitionException { + ParserRuleContext _parentctx = _ctx; + int _parentState = getState(); + AndExpressionContext _localctx = new AndExpressionContext(_ctx, _parentState); + AndExpressionContext _prevctx = _localctx; + int _startState = 442; + enterRecursionRule(_localctx, 442, RULE_andExpression, _p); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + { + setState(2685); + equalityExpression(0); + } + _ctx.stop = _input.LT(-1); + setState(2692); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,305,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + if ( _parseListeners!=null ) triggerExitRuleEvent(); + _prevctx = _localctx; + { + { + _localctx = new AndExpressionContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_andExpression); + setState(2687); + if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); + setState(2688); + match(BITAND); + setState(2689); + equalityExpression(0); + } + } + } + setState(2694); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,305,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + unrollRecursionContexts(_parentctx); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class EqualityExpressionContext extends ParserRuleContext { + public RelationalExpressionContext relationalExpression() { + return getRuleContext(RelationalExpressionContext.class,0); + } + public EqualityExpressionContext equalityExpression() { + return getRuleContext(EqualityExpressionContext.class,0); + } + public TerminalNode EQUAL() { return getToken(Java8Parser.EQUAL, 0); } + public TerminalNode NOTEQUAL() { return getToken(Java8Parser.NOTEQUAL, 0); } + public EqualityExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_equalityExpression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterEqualityExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitEqualityExpression(this); + } + } + + public final EqualityExpressionContext equalityExpression() throws RecognitionException { + return equalityExpression(0); + } + + private EqualityExpressionContext equalityExpression(int _p) throws RecognitionException { + ParserRuleContext _parentctx = _ctx; + int _parentState = getState(); + EqualityExpressionContext _localctx = new EqualityExpressionContext(_ctx, _parentState); + EqualityExpressionContext _prevctx = _localctx; + int _startState = 444; + enterRecursionRule(_localctx, 444, RULE_equalityExpression, _p); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + { + setState(2696); + relationalExpression(0); + } + _ctx.stop = _input.LT(-1); + setState(2706); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,307,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + if ( _parseListeners!=null ) triggerExitRuleEvent(); + _prevctx = _localctx; + { + setState(2704); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,306,_ctx) ) { + case 1: + { + _localctx = new EqualityExpressionContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_equalityExpression); + setState(2698); + if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)"); + setState(2699); + match(EQUAL); + setState(2700); + relationalExpression(0); + } + break; + case 2: + { + _localctx = new EqualityExpressionContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_equalityExpression); + setState(2701); + if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); + setState(2702); + match(NOTEQUAL); + setState(2703); + relationalExpression(0); + } + break; + } + } + } + setState(2708); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,307,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + unrollRecursionContexts(_parentctx); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class RelationalExpressionContext extends ParserRuleContext { + public ShiftExpressionContext shiftExpression() { + return getRuleContext(ShiftExpressionContext.class,0); + } + public RelationalExpressionContext relationalExpression() { + return getRuleContext(RelationalExpressionContext.class,0); + } + public TerminalNode LT() { return getToken(Java8Parser.LT, 0); } + public TerminalNode GT() { return getToken(Java8Parser.GT, 0); } + public TerminalNode LE() { return getToken(Java8Parser.LE, 0); } + public TerminalNode GE() { return getToken(Java8Parser.GE, 0); } + public TerminalNode INSTANCEOF() { return getToken(Java8Parser.INSTANCEOF, 0); } + public ReferenceTypeContext referenceType() { + return getRuleContext(ReferenceTypeContext.class,0); + } + public RelationalExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_relationalExpression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterRelationalExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitRelationalExpression(this); + } + } + + public final RelationalExpressionContext relationalExpression() throws RecognitionException { + return relationalExpression(0); + } + + private RelationalExpressionContext relationalExpression(int _p) throws RecognitionException { + ParserRuleContext _parentctx = _ctx; + int _parentState = getState(); + RelationalExpressionContext _localctx = new RelationalExpressionContext(_ctx, _parentState); + RelationalExpressionContext _prevctx = _localctx; + int _startState = 446; + enterRecursionRule(_localctx, 446, RULE_relationalExpression, _p); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + { + setState(2710); + shiftExpression(0); + } + _ctx.stop = _input.LT(-1); + setState(2729); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,309,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + if ( _parseListeners!=null ) triggerExitRuleEvent(); + _prevctx = _localctx; + { + setState(2727); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,308,_ctx) ) { + case 1: + { + _localctx = new RelationalExpressionContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_relationalExpression); + setState(2712); + if (!(precpred(_ctx, 5))) throw new FailedPredicateException(this, "precpred(_ctx, 5)"); + setState(2713); + match(LT); + setState(2714); + shiftExpression(0); + } + break; + case 2: + { + _localctx = new RelationalExpressionContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_relationalExpression); + setState(2715); + if (!(precpred(_ctx, 4))) throw new FailedPredicateException(this, "precpred(_ctx, 4)"); + setState(2716); + match(GT); + setState(2717); + shiftExpression(0); + } + break; + case 3: + { + _localctx = new RelationalExpressionContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_relationalExpression); + setState(2718); + if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)"); + setState(2719); + match(LE); + setState(2720); + shiftExpression(0); + } + break; + case 4: + { + _localctx = new RelationalExpressionContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_relationalExpression); + setState(2721); + if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)"); + setState(2722); + match(GE); + setState(2723); + shiftExpression(0); + } + break; + case 5: + { + _localctx = new RelationalExpressionContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_relationalExpression); + setState(2724); + if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); + setState(2725); + match(INSTANCEOF); + setState(2726); + referenceType(); + } + break; + } + } + } + setState(2731); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,309,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + unrollRecursionContexts(_parentctx); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ShiftExpressionContext extends ParserRuleContext { + public AdditiveExpressionContext additiveExpression() { + return getRuleContext(AdditiveExpressionContext.class,0); + } + public ShiftExpressionContext shiftExpression() { + return getRuleContext(ShiftExpressionContext.class,0); + } + public List LT() { return getTokens(Java8Parser.LT); } + public TerminalNode LT(int i) { + return getToken(Java8Parser.LT, i); + } + public List GT() { return getTokens(Java8Parser.GT); } + public TerminalNode GT(int i) { + return getToken(Java8Parser.GT, i); + } + public ShiftExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_shiftExpression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterShiftExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitShiftExpression(this); + } + } + + public final ShiftExpressionContext shiftExpression() throws RecognitionException { + return shiftExpression(0); + } + + private ShiftExpressionContext shiftExpression(int _p) throws RecognitionException { + ParserRuleContext _parentctx = _ctx; + int _parentState = getState(); + ShiftExpressionContext _localctx = new ShiftExpressionContext(_ctx, _parentState); + ShiftExpressionContext _prevctx = _localctx; + int _startState = 448; + enterRecursionRule(_localctx, 448, RULE_shiftExpression, _p); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + { + setState(2733); + additiveExpression(0); + } + _ctx.stop = _input.LT(-1); + setState(2750); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,311,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + if ( _parseListeners!=null ) triggerExitRuleEvent(); + _prevctx = _localctx; + { + setState(2748); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,310,_ctx) ) { + case 1: + { + _localctx = new ShiftExpressionContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_shiftExpression); + setState(2735); + if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)"); + setState(2736); + match(LT); + setState(2737); + match(LT); + setState(2738); + additiveExpression(0); + } + break; + case 2: + { + _localctx = new ShiftExpressionContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_shiftExpression); + setState(2739); + if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)"); + setState(2740); + match(GT); + setState(2741); + match(GT); + setState(2742); + additiveExpression(0); + } + break; + case 3: + { + _localctx = new ShiftExpressionContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_shiftExpression); + setState(2743); + if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); + setState(2744); + match(GT); + setState(2745); + match(GT); + setState(2746); + match(GT); + setState(2747); + additiveExpression(0); + } + break; + } + } + } + setState(2752); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,311,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + unrollRecursionContexts(_parentctx); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class AdditiveExpressionContext extends ParserRuleContext { + public MultiplicativeExpressionContext multiplicativeExpression() { + return getRuleContext(MultiplicativeExpressionContext.class,0); + } + public AdditiveExpressionContext additiveExpression() { + return getRuleContext(AdditiveExpressionContext.class,0); + } + public TerminalNode ADD() { return getToken(Java8Parser.ADD, 0); } + public TerminalNode SUB() { return getToken(Java8Parser.SUB, 0); } + public AdditiveExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_additiveExpression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterAdditiveExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitAdditiveExpression(this); + } + } + + public final AdditiveExpressionContext additiveExpression() throws RecognitionException { + return additiveExpression(0); + } + + private AdditiveExpressionContext additiveExpression(int _p) throws RecognitionException { + ParserRuleContext _parentctx = _ctx; + int _parentState = getState(); + AdditiveExpressionContext _localctx = new AdditiveExpressionContext(_ctx, _parentState); + AdditiveExpressionContext _prevctx = _localctx; + int _startState = 450; + enterRecursionRule(_localctx, 450, RULE_additiveExpression, _p); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + { + setState(2754); + multiplicativeExpression(0); + } + _ctx.stop = _input.LT(-1); + setState(2764); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,313,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + if ( _parseListeners!=null ) triggerExitRuleEvent(); + _prevctx = _localctx; + { + setState(2762); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,312,_ctx) ) { + case 1: + { + _localctx = new AdditiveExpressionContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_additiveExpression); + setState(2756); + if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)"); + setState(2757); + match(ADD); + setState(2758); + multiplicativeExpression(0); + } + break; + case 2: + { + _localctx = new AdditiveExpressionContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_additiveExpression); + setState(2759); + if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); + setState(2760); + match(SUB); + setState(2761); + multiplicativeExpression(0); + } + break; + } + } + } + setState(2766); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,313,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + unrollRecursionContexts(_parentctx); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class MultiplicativeExpressionContext extends ParserRuleContext { + public UnaryExpressionContext unaryExpression() { + return getRuleContext(UnaryExpressionContext.class,0); + } + public MultiplicativeExpressionContext multiplicativeExpression() { + return getRuleContext(MultiplicativeExpressionContext.class,0); + } + public TerminalNode MUL() { return getToken(Java8Parser.MUL, 0); } + public TerminalNode DIV() { return getToken(Java8Parser.DIV, 0); } + public TerminalNode MOD() { return getToken(Java8Parser.MOD, 0); } + public MultiplicativeExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_multiplicativeExpression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterMultiplicativeExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitMultiplicativeExpression(this); + } + } + + public final MultiplicativeExpressionContext multiplicativeExpression() throws RecognitionException { + return multiplicativeExpression(0); + } + + private MultiplicativeExpressionContext multiplicativeExpression(int _p) throws RecognitionException { + ParserRuleContext _parentctx = _ctx; + int _parentState = getState(); + MultiplicativeExpressionContext _localctx = new MultiplicativeExpressionContext(_ctx, _parentState); + MultiplicativeExpressionContext _prevctx = _localctx; + int _startState = 452; + enterRecursionRule(_localctx, 452, RULE_multiplicativeExpression, _p); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + { + setState(2768); + unaryExpression(); + } + _ctx.stop = _input.LT(-1); + setState(2781); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,315,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + if ( _parseListeners!=null ) triggerExitRuleEvent(); + _prevctx = _localctx; + { + setState(2779); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,314,_ctx) ) { + case 1: + { + _localctx = new MultiplicativeExpressionContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_multiplicativeExpression); + setState(2770); + if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)"); + setState(2771); + match(MUL); + setState(2772); + unaryExpression(); + } + break; + case 2: + { + _localctx = new MultiplicativeExpressionContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_multiplicativeExpression); + setState(2773); + if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)"); + setState(2774); + match(DIV); + setState(2775); + unaryExpression(); + } + break; + case 3: + { + _localctx = new MultiplicativeExpressionContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_multiplicativeExpression); + setState(2776); + if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); + setState(2777); + match(MOD); + setState(2778); + unaryExpression(); + } + break; + } + } + } + setState(2783); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,315,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + unrollRecursionContexts(_parentctx); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class UnaryExpressionContext extends ParserRuleContext { + public PreIncrementExpressionContext preIncrementExpression() { + return getRuleContext(PreIncrementExpressionContext.class,0); + } + public PreDecrementExpressionContext preDecrementExpression() { + return getRuleContext(PreDecrementExpressionContext.class,0); + } + public TerminalNode ADD() { return getToken(Java8Parser.ADD, 0); } + public UnaryExpressionContext unaryExpression() { + return getRuleContext(UnaryExpressionContext.class,0); + } + public TerminalNode SUB() { return getToken(Java8Parser.SUB, 0); } + public UnaryExpressionNotPlusMinusContext unaryExpressionNotPlusMinus() { + return getRuleContext(UnaryExpressionNotPlusMinusContext.class,0); + } + public UnaryExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_unaryExpression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterUnaryExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitUnaryExpression(this); + } + } + + public final UnaryExpressionContext unaryExpression() throws RecognitionException { + UnaryExpressionContext _localctx = new UnaryExpressionContext(_ctx, getState()); + enterRule(_localctx, 454, RULE_unaryExpression); + try { + setState(2791); + _errHandler.sync(this); + switch (_input.LA(1)) { + case INC: + enterOuterAlt(_localctx, 1); + { + setState(2784); + preIncrementExpression(); + } + break; + case DEC: + enterOuterAlt(_localctx, 2); + { + setState(2785); + preDecrementExpression(); + } + break; + case ADD: + enterOuterAlt(_localctx, 3); + { + setState(2786); + match(ADD); + setState(2787); + unaryExpression(); + } + break; + case SUB: + enterOuterAlt(_localctx, 4); + { + setState(2788); + match(SUB); + setState(2789); + unaryExpression(); + } + break; + case BOOLEAN: + case BYTE: + case CHAR: + case DOUBLE: + case FLOAT: + case INT: + case LONG: + case NEW: + case SHORT: + case SUPER: + case THIS: + case VOID: + case IntegerLiteral: + case FloatingPointLiteral: + case BooleanLiteral: + case CharacterLiteral: + case StringLiteral: + case NullLiteral: + case LPAREN: + case BANG: + case TILDE: + case Identifier: + case AT: + enterOuterAlt(_localctx, 5); + { + setState(2790); + unaryExpressionNotPlusMinus(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class PreIncrementExpressionContext extends ParserRuleContext { + public TerminalNode INC() { return getToken(Java8Parser.INC, 0); } + public UnaryExpressionContext unaryExpression() { + return getRuleContext(UnaryExpressionContext.class,0); + } + public PreIncrementExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_preIncrementExpression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterPreIncrementExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitPreIncrementExpression(this); + } + } + + public final PreIncrementExpressionContext preIncrementExpression() throws RecognitionException { + PreIncrementExpressionContext _localctx = new PreIncrementExpressionContext(_ctx, getState()); + enterRule(_localctx, 456, RULE_preIncrementExpression); + try { + enterOuterAlt(_localctx, 1); + { + setState(2793); + match(INC); + setState(2794); + unaryExpression(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class PreDecrementExpressionContext extends ParserRuleContext { + public TerminalNode DEC() { return getToken(Java8Parser.DEC, 0); } + public UnaryExpressionContext unaryExpression() { + return getRuleContext(UnaryExpressionContext.class,0); + } + public PreDecrementExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_preDecrementExpression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterPreDecrementExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitPreDecrementExpression(this); + } + } + + public final PreDecrementExpressionContext preDecrementExpression() throws RecognitionException { + PreDecrementExpressionContext _localctx = new PreDecrementExpressionContext(_ctx, getState()); + enterRule(_localctx, 458, RULE_preDecrementExpression); + try { + enterOuterAlt(_localctx, 1); + { + setState(2796); + match(DEC); + setState(2797); + unaryExpression(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class UnaryExpressionNotPlusMinusContext extends ParserRuleContext { + public PostfixExpressionContext postfixExpression() { + return getRuleContext(PostfixExpressionContext.class,0); + } + public TerminalNode TILDE() { return getToken(Java8Parser.TILDE, 0); } + public UnaryExpressionContext unaryExpression() { + return getRuleContext(UnaryExpressionContext.class,0); + } + public TerminalNode BANG() { return getToken(Java8Parser.BANG, 0); } + public CastExpressionContext castExpression() { + return getRuleContext(CastExpressionContext.class,0); + } + public UnaryExpressionNotPlusMinusContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_unaryExpressionNotPlusMinus; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterUnaryExpressionNotPlusMinus(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitUnaryExpressionNotPlusMinus(this); + } + } + + public final UnaryExpressionNotPlusMinusContext unaryExpressionNotPlusMinus() throws RecognitionException { + UnaryExpressionNotPlusMinusContext _localctx = new UnaryExpressionNotPlusMinusContext(_ctx, getState()); + enterRule(_localctx, 460, RULE_unaryExpressionNotPlusMinus); + try { + setState(2805); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,317,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(2799); + postfixExpression(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(2800); + match(TILDE); + setState(2801); + unaryExpression(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(2802); + match(BANG); + setState(2803); + unaryExpression(); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(2804); + castExpression(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class PostfixExpressionContext extends ParserRuleContext { + public PrimaryContext primary() { + return getRuleContext(PrimaryContext.class,0); + } + public ExpressionNameContext expressionName() { + return getRuleContext(ExpressionNameContext.class,0); + } + public List postIncrementExpression_lf_postfixExpression() { + return getRuleContexts(PostIncrementExpression_lf_postfixExpressionContext.class); + } + public PostIncrementExpression_lf_postfixExpressionContext postIncrementExpression_lf_postfixExpression(int i) { + return getRuleContext(PostIncrementExpression_lf_postfixExpressionContext.class,i); + } + public List postDecrementExpression_lf_postfixExpression() { + return getRuleContexts(PostDecrementExpression_lf_postfixExpressionContext.class); + } + public PostDecrementExpression_lf_postfixExpressionContext postDecrementExpression_lf_postfixExpression(int i) { + return getRuleContext(PostDecrementExpression_lf_postfixExpressionContext.class,i); + } + public PostfixExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_postfixExpression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterPostfixExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitPostfixExpression(this); + } + } + + public final PostfixExpressionContext postfixExpression() throws RecognitionException { + PostfixExpressionContext _localctx = new PostfixExpressionContext(_ctx, getState()); + enterRule(_localctx, 462, RULE_postfixExpression); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(2809); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,318,_ctx) ) { + case 1: + { + setState(2807); + primary(); + } + break; + case 2: + { + setState(2808); + expressionName(); + } + break; + } + setState(2815); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,320,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + setState(2813); + _errHandler.sync(this); + switch (_input.LA(1)) { + case INC: + { + setState(2811); + postIncrementExpression_lf_postfixExpression(); + } + break; + case DEC: + { + setState(2812); + postDecrementExpression_lf_postfixExpression(); + } + break; + default: + throw new NoViableAltException(this); + } + } + } + setState(2817); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,320,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class PostIncrementExpressionContext extends ParserRuleContext { + public PostfixExpressionContext postfixExpression() { + return getRuleContext(PostfixExpressionContext.class,0); + } + public TerminalNode INC() { return getToken(Java8Parser.INC, 0); } + public PostIncrementExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_postIncrementExpression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterPostIncrementExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitPostIncrementExpression(this); + } + } + + public final PostIncrementExpressionContext postIncrementExpression() throws RecognitionException { + PostIncrementExpressionContext _localctx = new PostIncrementExpressionContext(_ctx, getState()); + enterRule(_localctx, 464, RULE_postIncrementExpression); + try { + enterOuterAlt(_localctx, 1); + { + setState(2818); + postfixExpression(); + setState(2819); + match(INC); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class PostIncrementExpression_lf_postfixExpressionContext extends ParserRuleContext { + public TerminalNode INC() { return getToken(Java8Parser.INC, 0); } + public PostIncrementExpression_lf_postfixExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_postIncrementExpression_lf_postfixExpression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterPostIncrementExpression_lf_postfixExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitPostIncrementExpression_lf_postfixExpression(this); + } + } + + public final PostIncrementExpression_lf_postfixExpressionContext postIncrementExpression_lf_postfixExpression() throws RecognitionException { + PostIncrementExpression_lf_postfixExpressionContext _localctx = new PostIncrementExpression_lf_postfixExpressionContext(_ctx, getState()); + enterRule(_localctx, 466, RULE_postIncrementExpression_lf_postfixExpression); + try { + enterOuterAlt(_localctx, 1); + { + setState(2821); + match(INC); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class PostDecrementExpressionContext extends ParserRuleContext { + public PostfixExpressionContext postfixExpression() { + return getRuleContext(PostfixExpressionContext.class,0); + } + public TerminalNode DEC() { return getToken(Java8Parser.DEC, 0); } + public PostDecrementExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_postDecrementExpression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterPostDecrementExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitPostDecrementExpression(this); + } + } + + public final PostDecrementExpressionContext postDecrementExpression() throws RecognitionException { + PostDecrementExpressionContext _localctx = new PostDecrementExpressionContext(_ctx, getState()); + enterRule(_localctx, 468, RULE_postDecrementExpression); + try { + enterOuterAlt(_localctx, 1); + { + setState(2823); + postfixExpression(); + setState(2824); + match(DEC); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class PostDecrementExpression_lf_postfixExpressionContext extends ParserRuleContext { + public TerminalNode DEC() { return getToken(Java8Parser.DEC, 0); } + public PostDecrementExpression_lf_postfixExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_postDecrementExpression_lf_postfixExpression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterPostDecrementExpression_lf_postfixExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitPostDecrementExpression_lf_postfixExpression(this); + } + } + + public final PostDecrementExpression_lf_postfixExpressionContext postDecrementExpression_lf_postfixExpression() throws RecognitionException { + PostDecrementExpression_lf_postfixExpressionContext _localctx = new PostDecrementExpression_lf_postfixExpressionContext(_ctx, getState()); + enterRule(_localctx, 470, RULE_postDecrementExpression_lf_postfixExpression); + try { + enterOuterAlt(_localctx, 1); + { + setState(2826); + match(DEC); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class CastExpressionContext extends ParserRuleContext { + public TerminalNode LPAREN() { return getToken(Java8Parser.LPAREN, 0); } + public PrimitiveTypeContext primitiveType() { + return getRuleContext(PrimitiveTypeContext.class,0); + } + public TerminalNode RPAREN() { return getToken(Java8Parser.RPAREN, 0); } + public UnaryExpressionContext unaryExpression() { + return getRuleContext(UnaryExpressionContext.class,0); + } + public ReferenceTypeContext referenceType() { + return getRuleContext(ReferenceTypeContext.class,0); + } + public UnaryExpressionNotPlusMinusContext unaryExpressionNotPlusMinus() { + return getRuleContext(UnaryExpressionNotPlusMinusContext.class,0); + } + public List additionalBound() { + return getRuleContexts(AdditionalBoundContext.class); + } + public AdditionalBoundContext additionalBound(int i) { + return getRuleContext(AdditionalBoundContext.class,i); + } + public LambdaExpressionContext lambdaExpression() { + return getRuleContext(LambdaExpressionContext.class,0); + } + public CastExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_castExpression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterCastExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitCastExpression(this); + } + } + + public final CastExpressionContext castExpression() throws RecognitionException { + CastExpressionContext _localctx = new CastExpressionContext(_ctx, getState()); + enterRule(_localctx, 472, RULE_castExpression); + int _la; + try { + setState(2855); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,323,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(2828); + match(LPAREN); + setState(2829); + primitiveType(); + setState(2830); + match(RPAREN); + setState(2831); + unaryExpression(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(2833); + match(LPAREN); + setState(2834); + referenceType(); + setState(2838); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==BITAND) { + { + { + setState(2835); + additionalBound(); + } + } + setState(2840); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(2841); + match(RPAREN); + setState(2842); + unaryExpressionNotPlusMinus(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(2844); + match(LPAREN); + setState(2845); + referenceType(); + setState(2849); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==BITAND) { + { + { + setState(2846); + additionalBound(); + } + } + setState(2851); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(2852); + match(RPAREN); + setState(2853); + lambdaExpression(); + } + break; + } + } + 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 26: + return packageName_sempred((PackageNameContext)_localctx, predIndex); + case 28: + return packageOrTypeName_sempred((PackageOrTypeNameContext)_localctx, predIndex); + case 31: + return ambiguousName_sempred((AmbiguousNameContext)_localctx, predIndex); + case 217: + return conditionalOrExpression_sempred((ConditionalOrExpressionContext)_localctx, predIndex); + case 218: + return conditionalAndExpression_sempred((ConditionalAndExpressionContext)_localctx, predIndex); + case 219: + return inclusiveOrExpression_sempred((InclusiveOrExpressionContext)_localctx, predIndex); + case 220: + return exclusiveOrExpression_sempred((ExclusiveOrExpressionContext)_localctx, predIndex); + case 221: + return andExpression_sempred((AndExpressionContext)_localctx, predIndex); + case 222: + return equalityExpression_sempred((EqualityExpressionContext)_localctx, predIndex); + case 223: + return relationalExpression_sempred((RelationalExpressionContext)_localctx, predIndex); + case 224: + return shiftExpression_sempred((ShiftExpressionContext)_localctx, predIndex); + case 225: + return additiveExpression_sempred((AdditiveExpressionContext)_localctx, predIndex); + case 226: + return multiplicativeExpression_sempred((MultiplicativeExpressionContext)_localctx, predIndex); + } + return true; + } + private boolean packageName_sempred(PackageNameContext _localctx, int predIndex) { + switch (predIndex) { + case 0: + return precpred(_ctx, 1); + } + return true; + } + private boolean packageOrTypeName_sempred(PackageOrTypeNameContext _localctx, int predIndex) { + switch (predIndex) { + case 1: + return precpred(_ctx, 1); + } + return true; + } + private boolean ambiguousName_sempred(AmbiguousNameContext _localctx, int predIndex) { + switch (predIndex) { + case 2: + return precpred(_ctx, 1); + } + return true; + } + private boolean conditionalOrExpression_sempred(ConditionalOrExpressionContext _localctx, int predIndex) { + switch (predIndex) { + case 3: + return precpred(_ctx, 1); + } + return true; + } + private boolean conditionalAndExpression_sempred(ConditionalAndExpressionContext _localctx, int predIndex) { + switch (predIndex) { + case 4: + return precpred(_ctx, 1); + } + return true; + } + private boolean inclusiveOrExpression_sempred(InclusiveOrExpressionContext _localctx, int predIndex) { + switch (predIndex) { + case 5: + return precpred(_ctx, 1); + } + return true; + } + private boolean exclusiveOrExpression_sempred(ExclusiveOrExpressionContext _localctx, int predIndex) { + switch (predIndex) { + case 6: + return precpred(_ctx, 1); + } + return true; + } + private boolean andExpression_sempred(AndExpressionContext _localctx, int predIndex) { + switch (predIndex) { + case 7: + return precpred(_ctx, 1); + } + return true; + } + private boolean equalityExpression_sempred(EqualityExpressionContext _localctx, int predIndex) { + switch (predIndex) { + case 8: + return precpred(_ctx, 2); + case 9: + return precpred(_ctx, 1); + } + return true; + } + private boolean relationalExpression_sempred(RelationalExpressionContext _localctx, int predIndex) { + switch (predIndex) { + case 10: + return precpred(_ctx, 5); + case 11: + return precpred(_ctx, 4); + case 12: + return precpred(_ctx, 3); + case 13: + return precpred(_ctx, 2); + case 14: + return precpred(_ctx, 1); + } + return true; + } + private boolean shiftExpression_sempred(ShiftExpressionContext _localctx, int predIndex) { + switch (predIndex) { + case 15: + return precpred(_ctx, 3); + case 16: + return precpred(_ctx, 2); + case 17: + return precpred(_ctx, 1); + } + return true; + } + private boolean additiveExpression_sempred(AdditiveExpressionContext _localctx, int predIndex) { + switch (predIndex) { + case 18: + return precpred(_ctx, 2); + case 19: + return precpred(_ctx, 1); + } + return true; + } + private boolean multiplicativeExpression_sempred(MultiplicativeExpressionContext _localctx, int predIndex) { + switch (predIndex) { + case 20: + return precpred(_ctx, 3); + case 21: + return precpred(_ctx, 2); + case 22: + return precpred(_ctx, 1); + } + return true; + } + + private static final String _serializedATNSegment0 = + "\u0004\u0001k\u0b2a\u0002\u0000\u0007\u0000\u0002\u0001\u0007\u0001\u0002"+ + "\u0002\u0007\u0002\u0002\u0003\u0007\u0003\u0002\u0004\u0007\u0004\u0002"+ + "\u0005\u0007\u0005\u0002\u0006\u0007\u0006\u0002\u0007\u0007\u0007\u0002"+ + "\b\u0007\b\u0002\t\u0007\t\u0002\n\u0007\n\u0002\u000b\u0007\u000b\u0002"+ + "\f\u0007\f\u0002\r\u0007\r\u0002\u000e\u0007\u000e\u0002\u000f\u0007\u000f"+ + "\u0002\u0010\u0007\u0010\u0002\u0011\u0007\u0011\u0002\u0012\u0007\u0012"+ + "\u0002\u0013\u0007\u0013\u0002\u0014\u0007\u0014\u0002\u0015\u0007\u0015"+ + "\u0002\u0016\u0007\u0016\u0002\u0017\u0007\u0017\u0002\u0018\u0007\u0018"+ + "\u0002\u0019\u0007\u0019\u0002\u001a\u0007\u001a\u0002\u001b\u0007\u001b"+ + "\u0002\u001c\u0007\u001c\u0002\u001d\u0007\u001d\u0002\u001e\u0007\u001e"+ + "\u0002\u001f\u0007\u001f\u0002 \u0007 \u0002!\u0007!\u0002\"\u0007\"\u0002"+ + "#\u0007#\u0002$\u0007$\u0002%\u0007%\u0002&\u0007&\u0002\'\u0007\'\u0002"+ + "(\u0007(\u0002)\u0007)\u0002*\u0007*\u0002+\u0007+\u0002,\u0007,\u0002"+ + "-\u0007-\u0002.\u0007.\u0002/\u0007/\u00020\u00070\u00021\u00071\u0002"+ + "2\u00072\u00023\u00073\u00024\u00074\u00025\u00075\u00026\u00076\u0002"+ + "7\u00077\u00028\u00078\u00029\u00079\u0002:\u0007:\u0002;\u0007;\u0002"+ + "<\u0007<\u0002=\u0007=\u0002>\u0007>\u0002?\u0007?\u0002@\u0007@\u0002"+ + "A\u0007A\u0002B\u0007B\u0002C\u0007C\u0002D\u0007D\u0002E\u0007E\u0002"+ + "F\u0007F\u0002G\u0007G\u0002H\u0007H\u0002I\u0007I\u0002J\u0007J\u0002"+ + "K\u0007K\u0002L\u0007L\u0002M\u0007M\u0002N\u0007N\u0002O\u0007O\u0002"+ + "P\u0007P\u0002Q\u0007Q\u0002R\u0007R\u0002S\u0007S\u0002T\u0007T\u0002"+ + "U\u0007U\u0002V\u0007V\u0002W\u0007W\u0002X\u0007X\u0002Y\u0007Y\u0002"+ + "Z\u0007Z\u0002[\u0007[\u0002\\\u0007\\\u0002]\u0007]\u0002^\u0007^\u0002"+ + "_\u0007_\u0002`\u0007`\u0002a\u0007a\u0002b\u0007b\u0002c\u0007c\u0002"+ + "d\u0007d\u0002e\u0007e\u0002f\u0007f\u0002g\u0007g\u0002h\u0007h\u0002"+ + "i\u0007i\u0002j\u0007j\u0002k\u0007k\u0002l\u0007l\u0002m\u0007m\u0002"+ + "n\u0007n\u0002o\u0007o\u0002p\u0007p\u0002q\u0007q\u0002r\u0007r\u0002"+ + "s\u0007s\u0002t\u0007t\u0002u\u0007u\u0002v\u0007v\u0002w\u0007w\u0002"+ + "x\u0007x\u0002y\u0007y\u0002z\u0007z\u0002{\u0007{\u0002|\u0007|\u0002"+ + "}\u0007}\u0002~\u0007~\u0002\u007f\u0007\u007f\u0002\u0080\u0007\u0080"+ + "\u0002\u0081\u0007\u0081\u0002\u0082\u0007\u0082\u0002\u0083\u0007\u0083"+ + "\u0002\u0084\u0007\u0084\u0002\u0085\u0007\u0085\u0002\u0086\u0007\u0086"+ + "\u0002\u0087\u0007\u0087\u0002\u0088\u0007\u0088\u0002\u0089\u0007\u0089"+ + "\u0002\u008a\u0007\u008a\u0002\u008b\u0007\u008b\u0002\u008c\u0007\u008c"+ + "\u0002\u008d\u0007\u008d\u0002\u008e\u0007\u008e\u0002\u008f\u0007\u008f"+ + "\u0002\u0090\u0007\u0090\u0002\u0091\u0007\u0091\u0002\u0092\u0007\u0092"+ + "\u0002\u0093\u0007\u0093\u0002\u0094\u0007\u0094\u0002\u0095\u0007\u0095"+ + "\u0002\u0096\u0007\u0096\u0002\u0097\u0007\u0097\u0002\u0098\u0007\u0098"+ + "\u0002\u0099\u0007\u0099\u0002\u009a\u0007\u009a\u0002\u009b\u0007\u009b"+ + "\u0002\u009c\u0007\u009c\u0002\u009d\u0007\u009d\u0002\u009e\u0007\u009e"+ + "\u0002\u009f\u0007\u009f\u0002\u00a0\u0007\u00a0\u0002\u00a1\u0007\u00a1"+ + "\u0002\u00a2\u0007\u00a2\u0002\u00a3\u0007\u00a3\u0002\u00a4\u0007\u00a4"+ + "\u0002\u00a5\u0007\u00a5\u0002\u00a6\u0007\u00a6\u0002\u00a7\u0007\u00a7"+ + "\u0002\u00a8\u0007\u00a8\u0002\u00a9\u0007\u00a9\u0002\u00aa\u0007\u00aa"+ + "\u0002\u00ab\u0007\u00ab\u0002\u00ac\u0007\u00ac\u0002\u00ad\u0007\u00ad"+ + "\u0002\u00ae\u0007\u00ae\u0002\u00af\u0007\u00af\u0002\u00b0\u0007\u00b0"+ + "\u0002\u00b1\u0007\u00b1\u0002\u00b2\u0007\u00b2\u0002\u00b3\u0007\u00b3"+ + "\u0002\u00b4\u0007\u00b4\u0002\u00b5\u0007\u00b5\u0002\u00b6\u0007\u00b6"+ + "\u0002\u00b7\u0007\u00b7\u0002\u00b8\u0007\u00b8\u0002\u00b9\u0007\u00b9"+ + "\u0002\u00ba\u0007\u00ba\u0002\u00bb\u0007\u00bb\u0002\u00bc\u0007\u00bc"+ + "\u0002\u00bd\u0007\u00bd\u0002\u00be\u0007\u00be\u0002\u00bf\u0007\u00bf"+ + "\u0002\u00c0\u0007\u00c0\u0002\u00c1\u0007\u00c1\u0002\u00c2\u0007\u00c2"+ + "\u0002\u00c3\u0007\u00c3\u0002\u00c4\u0007\u00c4\u0002\u00c5\u0007\u00c5"+ + "\u0002\u00c6\u0007\u00c6\u0002\u00c7\u0007\u00c7\u0002\u00c8\u0007\u00c8"+ + "\u0002\u00c9\u0007\u00c9\u0002\u00ca\u0007\u00ca\u0002\u00cb\u0007\u00cb"+ + "\u0002\u00cc\u0007\u00cc\u0002\u00cd\u0007\u00cd\u0002\u00ce\u0007\u00ce"+ + "\u0002\u00cf\u0007\u00cf\u0002\u00d0\u0007\u00d0\u0002\u00d1\u0007\u00d1"+ + "\u0002\u00d2\u0007\u00d2\u0002\u00d3\u0007\u00d3\u0002\u00d4\u0007\u00d4"+ + "\u0002\u00d5\u0007\u00d5\u0002\u00d6\u0007\u00d6\u0002\u00d7\u0007\u00d7"+ + "\u0002\u00d8\u0007\u00d8\u0002\u00d9\u0007\u00d9\u0002\u00da\u0007\u00da"+ + "\u0002\u00db\u0007\u00db\u0002\u00dc\u0007\u00dc\u0002\u00dd\u0007\u00dd"+ + "\u0002\u00de\u0007\u00de\u0002\u00df\u0007\u00df\u0002\u00e0\u0007\u00e0"+ + "\u0002\u00e1\u0007\u00e1\u0002\u00e2\u0007\u00e2\u0002\u00e3\u0007\u00e3"+ + "\u0002\u00e4\u0007\u00e4\u0002\u00e5\u0007\u00e5\u0002\u00e6\u0007\u00e6"+ + "\u0002\u00e7\u0007\u00e7\u0002\u00e8\u0007\u00e8\u0002\u00e9\u0007\u00e9"+ + "\u0002\u00ea\u0007\u00ea\u0002\u00eb\u0007\u00eb\u0002\u00ec\u0007\u00ec"+ + "\u0001\u0000\u0001\u0000\u0001\u0001\u0001\u0001\u0003\u0001\u01df\b\u0001"+ + "\u0001\u0002\u0005\u0002\u01e2\b\u0002\n\u0002\f\u0002\u01e5\t\u0002\u0001"+ + "\u0002\u0001\u0002\u0005\u0002\u01e9\b\u0002\n\u0002\f\u0002\u01ec\t\u0002"+ + "\u0001\u0002\u0003\u0002\u01ef\b\u0002\u0001\u0003\u0001\u0003\u0003\u0003"+ + "\u01f3\b\u0003\u0001\u0004\u0001\u0004\u0001\u0005\u0001\u0005\u0001\u0006"+ + "\u0001\u0006\u0001\u0006\u0003\u0006\u01fc\b\u0006\u0001\u0007\u0001\u0007"+ + "\u0003\u0007\u0200\b\u0007\u0001\u0007\u0001\u0007\u0005\u0007\u0204\b"+ + "\u0007\n\u0007\f\u0007\u0207\t\u0007\u0001\b\u0005\b\u020a\b\b\n\b\f\b"+ + "\u020d\t\b\u0001\b\u0001\b\u0003\b\u0211\b\b\u0001\b\u0001\b\u0001\b\u0005"+ + "\b\u0216\b\b\n\b\f\b\u0219\t\b\u0001\b\u0001\b\u0003\b\u021d\b\b\u0003"+ + "\b\u021f\b\b\u0001\t\u0001\t\u0005\t\u0223\b\t\n\t\f\t\u0226\t\t\u0001"+ + "\t\u0001\t\u0003\t\u022a\b\t\u0001\n\u0005\n\u022d\b\n\n\n\f\n\u0230\t"+ + "\n\u0001\n\u0001\n\u0003\n\u0234\b\n\u0001\u000b\u0001\u000b\u0001\f\u0001"+ + "\f\u0001\r\u0001\r\u0001\u000e\u0005\u000e\u023d\b\u000e\n\u000e\f\u000e"+ + "\u0240\t\u000e\u0001\u000e\u0001\u000e\u0001\u000f\u0001\u000f\u0001\u000f"+ + "\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f"+ + "\u0003\u000f\u024d\b\u000f\u0001\u0010\u0005\u0010\u0250\b\u0010\n\u0010"+ + "\f\u0010\u0253\t\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0005\u0010"+ + "\u0258\b\u0010\n\u0010\f\u0010\u025b\t\u0010\u0001\u0010\u0001\u0010\u0005"+ + "\u0010\u025f\b\u0010\n\u0010\f\u0010\u0262\t\u0010\u0001\u0011\u0005\u0011"+ + "\u0265\b\u0011\n\u0011\f\u0011\u0268\t\u0011\u0001\u0011\u0001\u0011\u0003"+ + "\u0011\u026c\b\u0011\u0001\u0012\u0001\u0012\u0001\u0013\u0001\u0013\u0001"+ + "\u0013\u0001\u0013\u0001\u0013\u0005\u0013\u0275\b\u0013\n\u0013\f\u0013"+ + "\u0278\t\u0013\u0003\u0013\u027a\b\u0013\u0001\u0014\u0001\u0014\u0001"+ + "\u0014\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0016\u0001"+ + "\u0016\u0001\u0016\u0005\u0016\u0286\b\u0016\n\u0016\f\u0016\u0289\t\u0016"+ + "\u0001\u0017\u0001\u0017\u0003\u0017\u028d\b\u0017\u0001\u0018\u0005\u0018"+ + "\u0290\b\u0018\n\u0018\f\u0018\u0293\t\u0018\u0001\u0018\u0001\u0018\u0003"+ + "\u0018\u0297\b\u0018\u0001\u0019\u0001\u0019\u0001\u0019\u0001\u0019\u0003"+ + "\u0019\u029d\b\u0019\u0001\u001a\u0001\u001a\u0001\u001a\u0001\u001a\u0001"+ + "\u001a\u0001\u001a\u0005\u001a\u02a5\b\u001a\n\u001a\f\u001a\u02a8\t\u001a"+ + "\u0001\u001b\u0001\u001b\u0001\u001b\u0001\u001b\u0001\u001b\u0003\u001b"+ + "\u02af\b\u001b\u0001\u001c\u0001\u001c\u0001\u001c\u0001\u001c\u0001\u001c"+ + "\u0001\u001c\u0005\u001c\u02b7\b\u001c\n\u001c\f\u001c\u02ba\t\u001c\u0001"+ + "\u001d\u0001\u001d\u0001\u001d\u0001\u001d\u0001\u001d\u0003\u001d\u02c1"+ + "\b\u001d\u0001\u001e\u0001\u001e\u0001\u001f\u0001\u001f\u0001\u001f\u0001"+ + "\u001f\u0001\u001f\u0001\u001f\u0005\u001f\u02cb\b\u001f\n\u001f\f\u001f"+ + "\u02ce\t\u001f\u0001 \u0003 \u02d1\b \u0001 \u0005 \u02d4\b \n \f \u02d7"+ + "\t \u0001 \u0005 \u02da\b \n \f \u02dd\t \u0001 \u0001 \u0001!\u0005!"+ + "\u02e2\b!\n!\f!\u02e5\t!\u0001!\u0001!\u0001!\u0001!\u0005!\u02eb\b!\n"+ + "!\f!\u02ee\t!\u0001!\u0001!\u0001\"\u0001\"\u0001#\u0001#\u0001#\u0001"+ + "#\u0003#\u02f8\b#\u0001$\u0001$\u0001$\u0001$\u0001%\u0001%\u0001%\u0001"+ + "%\u0001%\u0001%\u0001&\u0001&\u0001&\u0001&\u0001&\u0001&\u0001&\u0001"+ + "\'\u0001\'\u0001\'\u0001\'\u0001\'\u0001\'\u0001\'\u0001(\u0001(\u0001"+ + "(\u0003(\u0315\b(\u0001)\u0001)\u0003)\u0319\b)\u0001*\u0005*\u031c\b"+ + "*\n*\f*\u031f\t*\u0001*\u0001*\u0001*\u0003*\u0324\b*\u0001*\u0003*\u0327"+ + "\b*\u0001*\u0003*\u032a\b*\u0001*\u0001*\u0001+\u0001+\u0001+\u0001+\u0001"+ + "+\u0001+\u0001+\u0001+\u0003+\u0336\b+\u0001,\u0001,\u0001,\u0001,\u0001"+ + "-\u0001-\u0001-\u0005-\u033f\b-\n-\f-\u0342\t-\u0001.\u0001.\u0001.\u0001"+ + "/\u0001/\u0001/\u00010\u00010\u00010\u00050\u034d\b0\n0\f0\u0350\t0\u0001"+ + "1\u00011\u00051\u0354\b1\n1\f1\u0357\t1\u00011\u00011\u00012\u00012\u0001"+ + "2\u00012\u00032\u035f\b2\u00013\u00013\u00013\u00013\u00013\u00033\u0366"+ + "\b3\u00014\u00054\u0369\b4\n4\f4\u036c\t4\u00014\u00014\u00014\u00014"+ + "\u00015\u00015\u00015\u00015\u00015\u00015\u00015\u00015\u00035\u037a"+ + "\b5\u00016\u00016\u00016\u00056\u037f\b6\n6\f6\u0382\t6\u00017\u00017"+ + "\u00017\u00037\u0387\b7\u00018\u00018\u00038\u038b\b8\u00019\u00019\u0003"+ + "9\u038f\b9\u0001:\u0001:\u0003:\u0393\b:\u0001;\u0001;\u0003;\u0397\b"+ + ";\u0001<\u0001<\u0001<\u0003<\u039c\b<\u0001=\u0001=\u0003=\u03a0\b=\u0001"+ + "=\u0001=\u0005=\u03a4\b=\n=\f=\u03a7\t=\u0001>\u0001>\u0003>\u03ab\b>"+ + "\u0001>\u0001>\u0001>\u0005>\u03b0\b>\n>\f>\u03b3\t>\u0001>\u0001>\u0003"+ + ">\u03b7\b>\u0003>\u03b9\b>\u0001?\u0001?\u0005?\u03bd\b?\n?\f?\u03c0\t"+ + "?\u0001?\u0001?\u0003?\u03c4\b?\u0001@\u0001@\u0003@\u03c8\b@\u0001A\u0001"+ + "A\u0001B\u0001B\u0001C\u0001C\u0001D\u0001D\u0001E\u0001E\u0001E\u0001"+ + "E\u0001E\u0001E\u0001E\u0001E\u0001E\u0003E\u03db\bE\u0001F\u0005F\u03de"+ + "\bF\nF\fF\u03e1\tF\u0001F\u0001F\u0001F\u0001G\u0001G\u0001G\u0001G\u0001"+ + "G\u0001G\u0001G\u0001G\u0001G\u0001G\u0003G\u03f0\bG\u0001H\u0001H\u0001"+ + "H\u0003H\u03f5\bH\u0001H\u0001H\u0005H\u03f9\bH\nH\fH\u03fc\tH\u0001H"+ + "\u0001H\u0001H\u0003H\u0401\bH\u0003H\u0403\bH\u0001I\u0001I\u0003I\u0407"+ + "\bI\u0001J\u0001J\u0001J\u0003J\u040c\bJ\u0001J\u0001J\u0003J\u0410\b"+ + "J\u0001K\u0001K\u0001K\u0001K\u0001K\u0003K\u0417\bK\u0001L\u0001L\u0001"+ + "L\u0005L\u041c\bL\nL\fL\u041f\tL\u0001L\u0001L\u0001L\u0005L\u0424\bL"+ + "\nL\fL\u0427\tL\u0003L\u0429\bL\u0001M\u0005M\u042c\bM\nM\fM\u042f\tM"+ + "\u0001M\u0001M\u0001M\u0001N\u0001N\u0003N\u0436\bN\u0001O\u0005O\u0439"+ + "\bO\nO\fO\u043c\tO\u0001O\u0001O\u0005O\u0440\bO\nO\fO\u0443\tO\u0001"+ + "O\u0001O\u0001O\u0001O\u0003O\u0449\bO\u0001P\u0005P\u044c\bP\nP\fP\u044f"+ + "\tP\u0001P\u0001P\u0001P\u0003P\u0454\bP\u0001P\u0001P\u0001Q\u0001Q\u0001"+ + "Q\u0001R\u0001R\u0001R\u0005R\u045e\bR\nR\fR\u0461\tR\u0001S\u0001S\u0003"+ + "S\u0465\bS\u0001T\u0001T\u0003T\u0469\bT\u0001U\u0001U\u0001V\u0001V\u0001"+ + "V\u0001W\u0005W\u0471\bW\nW\fW\u0474\tW\u0001W\u0001W\u0003W\u0478\bW"+ + "\u0001W\u0001W\u0001X\u0001X\u0001X\u0001X\u0003X\u0480\bX\u0001Y\u0003"+ + "Y\u0483\bY\u0001Y\u0001Y\u0001Y\u0003Y\u0488\bY\u0001Y\u0001Y\u0001Z\u0001"+ + "Z\u0001[\u0001[\u0003[\u0490\b[\u0001[\u0003[\u0493\b[\u0001[\u0001[\u0001"+ + "\\\u0003\\\u0498\b\\\u0001\\\u0001\\\u0001\\\u0003\\\u049d\b\\\u0001\\"+ + "\u0001\\\u0001\\\u0003\\\u04a2\b\\\u0001\\\u0001\\\u0001\\\u0003\\\u04a7"+ + "\b\\\u0001\\\u0001\\\u0001\\\u0001\\\u0001\\\u0003\\\u04ae\b\\\u0001\\"+ + "\u0001\\\u0001\\\u0003\\\u04b3\b\\\u0001\\\u0001\\\u0001\\\u0001\\\u0001"+ + "\\\u0001\\\u0003\\\u04bb\b\\\u0001\\\u0001\\\u0001\\\u0003\\\u04c0\b\\"+ + "\u0001\\\u0001\\\u0001\\\u0003\\\u04c5\b\\\u0001]\u0005]\u04c8\b]\n]\f"+ + "]\u04cb\t]\u0001]\u0001]\u0001]\u0003]\u04d0\b]\u0001]\u0001]\u0001^\u0001"+ + "^\u0003^\u04d6\b^\u0001^\u0003^\u04d9\b^\u0001^\u0003^\u04dc\b^\u0001"+ + "^\u0001^\u0001_\u0001_\u0001_\u0005_\u04e3\b_\n_\f_\u04e6\t_\u0001`\u0005"+ + "`\u04e9\b`\n`\f`\u04ec\t`\u0001`\u0001`\u0001`\u0003`\u04f1\b`\u0001`"+ + "\u0003`\u04f4\b`\u0001`\u0003`\u04f7\b`\u0001a\u0001a\u0001b\u0001b\u0005"+ + "b\u04fd\bb\nb\fb\u0500\tb\u0001c\u0001c\u0003c\u0504\bc\u0001d\u0005d"+ + "\u0507\bd\nd\fd\u050a\td\u0001d\u0001d\u0001d\u0003d\u050f\bd\u0001d\u0003"+ + "d\u0512\bd\u0001d\u0001d\u0001e\u0001e\u0001e\u0001e\u0001e\u0001e\u0001"+ + "e\u0003e\u051d\be\u0001f\u0001f\u0001f\u0001g\u0001g\u0005g\u0524\bg\n"+ + "g\fg\u0527\tg\u0001g\u0001g\u0001h\u0001h\u0001h\u0001h\u0001h\u0003h"+ + "\u0530\bh\u0001i\u0005i\u0533\bi\ni\fi\u0536\ti\u0001i\u0001i\u0001i\u0001"+ + "i\u0001j\u0001j\u0001j\u0001j\u0003j\u0540\bj\u0001k\u0005k\u0543\bk\n"+ + "k\fk\u0546\tk\u0001k\u0001k\u0001k\u0001l\u0001l\u0001l\u0001l\u0001l"+ + "\u0001l\u0003l\u0551\bl\u0001m\u0005m\u0554\bm\nm\fm\u0557\tm\u0001m\u0001"+ + "m\u0001m\u0001m\u0001m\u0001n\u0001n\u0005n\u0560\bn\nn\fn\u0563\tn\u0001"+ + "n\u0001n\u0001o\u0001o\u0001o\u0001o\u0001o\u0003o\u056c\bo\u0001p\u0005"+ + "p\u056f\bp\np\fp\u0572\tp\u0001p\u0001p\u0001p\u0001p\u0001p\u0003p\u0579"+ + "\bp\u0001p\u0003p\u057c\bp\u0001p\u0001p\u0001q\u0001q\u0001q\u0003q\u0583"+ + "\bq\u0001r\u0001r\u0001r\u0001s\u0001s\u0001s\u0003s\u058b\bs\u0001t\u0001"+ + "t\u0001t\u0001t\u0003t\u0591\bt\u0001t\u0001t\u0001u\u0001u\u0001u\u0005"+ + "u\u0598\bu\nu\fu\u059b\tu\u0001v\u0001v\u0001v\u0001v\u0001w\u0001w\u0001"+ + "w\u0003w\u05a4\bw\u0001x\u0001x\u0003x\u05a8\bx\u0001x\u0003x\u05ab\b"+ + "x\u0001x\u0001x\u0001y\u0001y\u0001y\u0005y\u05b2\by\ny\fy\u05b5\ty\u0001"+ + "z\u0001z\u0001z\u0001{\u0001{\u0001{\u0001{\u0001{\u0001{\u0001|\u0001"+ + "|\u0003|\u05c2\b|\u0001|\u0003|\u05c5\b|\u0001|\u0001|\u0001}\u0001}\u0001"+ + "}\u0005}\u05cc\b}\n}\f}\u05cf\t}\u0001~\u0001~\u0003~\u05d3\b~\u0001~"+ + "\u0001~\u0001\u007f\u0001\u007f\u0005\u007f\u05d9\b\u007f\n\u007f\f\u007f"+ + "\u05dc\t\u007f\u0001\u0080\u0001\u0080\u0001\u0080\u0003\u0080\u05e1\b"+ + "\u0080\u0001\u0081\u0001\u0081\u0001\u0081\u0001\u0082\u0005\u0082\u05e7"+ + "\b\u0082\n\u0082\f\u0082\u05ea\t\u0082\u0001\u0082\u0001\u0082\u0001\u0082"+ + "\u0001\u0083\u0001\u0083\u0001\u0083\u0001\u0083\u0001\u0083\u0001\u0083"+ + "\u0003\u0083\u05f5\b\u0083\u0001\u0084\u0001\u0084\u0001\u0084\u0001\u0084"+ + "\u0001\u0084\u0003\u0084\u05fc\b\u0084\u0001\u0085\u0001\u0085\u0001\u0085"+ + "\u0001\u0085\u0001\u0085\u0001\u0085\u0001\u0085\u0001\u0085\u0001\u0085"+ + "\u0001\u0085\u0001\u0085\u0001\u0085\u0003\u0085\u060a\b\u0085\u0001\u0086"+ + "\u0001\u0086\u0001\u0087\u0001\u0087\u0001\u0087\u0001\u0087\u0001\u0088"+ + "\u0001\u0088\u0001\u0088\u0001\u0088\u0001\u0089\u0001\u0089\u0001\u0089"+ + "\u0001\u008a\u0001\u008a\u0001\u008a\u0001\u008a\u0001\u008a\u0001\u008a"+ + "\u0001\u008a\u0003\u008a\u0620\b\u008a\u0001\u008b\u0001\u008b\u0001\u008b"+ + "\u0001\u008b\u0001\u008b\u0001\u008b\u0001\u008c\u0001\u008c\u0001\u008c"+ + "\u0001\u008c\u0001\u008c\u0001\u008c\u0001\u008c\u0001\u008c\u0001\u008d"+ + "\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d"+ + "\u0001\u008d\u0001\u008e\u0001\u008e\u0001\u008e\u0001\u008e\u0001\u008e"+ + "\u0001\u008e\u0001\u008e\u0001\u008e\u0001\u008e\u0001\u008e\u0003\u008e"+ + "\u0642\b\u008e\u0001\u008f\u0001\u008f\u0001\u008f\u0001\u008f\u0001\u008f"+ + "\u0001\u008f\u0001\u0090\u0001\u0090\u0005\u0090\u064c\b\u0090\n\u0090"+ + "\f\u0090\u064f\t\u0090\u0001\u0090\u0005\u0090\u0652\b\u0090\n\u0090\f"+ + "\u0090\u0655\t\u0090\u0001\u0090\u0001\u0090\u0001\u0091\u0001\u0091\u0001"+ + "\u0091\u0001\u0092\u0001\u0092\u0005\u0092\u065e\b\u0092\n\u0092\f\u0092"+ + "\u0661\t\u0092\u0001\u0093\u0001\u0093\u0001\u0093\u0001\u0093\u0001\u0093"+ + "\u0001\u0093\u0001\u0093\u0001\u0093\u0001\u0093\u0001\u0093\u0003\u0093"+ + "\u066d\b\u0093\u0001\u0094\u0001\u0094\u0001\u0095\u0001\u0095\u0001\u0095"+ + "\u0001\u0095\u0001\u0095\u0001\u0095\u0001\u0096\u0001\u0096\u0001\u0096"+ + "\u0001\u0096\u0001\u0096\u0001\u0096\u0001\u0097\u0001\u0097\u0001\u0097"+ + "\u0001\u0097\u0001\u0097\u0001\u0097\u0001\u0097\u0001\u0097\u0001\u0098"+ + "\u0001\u0098\u0003\u0098\u0687\b\u0098\u0001\u0099\u0001\u0099\u0003\u0099"+ + "\u068b\b\u0099\u0001\u009a\u0001\u009a\u0001\u009a\u0003\u009a\u0690\b"+ + "\u009a\u0001\u009a\u0001\u009a\u0003\u009a\u0694\b\u009a\u0001\u009a\u0001"+ + "\u009a\u0003\u009a\u0698\b\u009a\u0001\u009a\u0001\u009a\u0001\u009a\u0001"+ + "\u009b\u0001\u009b\u0001\u009b\u0003\u009b\u06a0\b\u009b\u0001\u009b\u0001"+ + "\u009b\u0003\u009b\u06a4\b\u009b\u0001\u009b\u0001\u009b\u0003\u009b\u06a8"+ + "\b\u009b\u0001\u009b\u0001\u009b\u0001\u009b\u0001\u009c\u0001\u009c\u0003"+ + "\u009c\u06af\b\u009c\u0001\u009d\u0001\u009d\u0001\u009e\u0001\u009e\u0001"+ + "\u009e\u0005\u009e\u06b6\b\u009e\n\u009e\f\u009e\u06b9\t\u009e\u0001\u009f"+ + "\u0001\u009f\u0001\u009f\u0005\u009f\u06be\b\u009f\n\u009f\f\u009f\u06c1"+ + "\t\u009f\u0001\u009f\u0001\u009f\u0001\u009f\u0001\u009f\u0001\u009f\u0001"+ + "\u009f\u0001\u009f\u0001\u00a0\u0001\u00a0\u0001\u00a0\u0005\u00a0\u06cd"+ + "\b\u00a0\n\u00a0\f\u00a0\u06d0\t\u00a0\u0001\u00a0\u0001\u00a0\u0001\u00a0"+ + "\u0001\u00a0\u0001\u00a0\u0001\u00a0\u0001\u00a0\u0001\u00a1\u0001\u00a1"+ + "\u0003\u00a1\u06db\b\u00a1\u0001\u00a1\u0001\u00a1\u0001\u00a2\u0001\u00a2"+ + "\u0003\u00a2\u06e1\b\u00a2\u0001\u00a2\u0001\u00a2\u0001\u00a3\u0001\u00a3"+ + "\u0003\u00a3\u06e7\b\u00a3\u0001\u00a3\u0001\u00a3\u0001\u00a4\u0001\u00a4"+ + "\u0001\u00a4\u0001\u00a4\u0001\u00a5\u0001\u00a5\u0001\u00a5\u0001\u00a5"+ + "\u0001\u00a5\u0001\u00a5\u0001\u00a6\u0001\u00a6\u0001\u00a6\u0001\u00a6"+ + "\u0001\u00a6\u0001\u00a6\u0001\u00a6\u0003\u00a6\u06fc\b\u00a6\u0001\u00a6"+ + "\u0001\u00a6\u0001\u00a6\u0003\u00a6\u0701\b\u00a6\u0001\u00a7\u0001\u00a7"+ + "\u0005\u00a7\u0705\b\u00a7\n\u00a7\f\u00a7\u0708\t\u00a7\u0001\u00a8\u0001"+ + "\u00a8\u0001\u00a8\u0001\u00a8\u0001\u00a8\u0001\u00a8\u0001\u00a9\u0005"+ + "\u00a9\u0711\b\u00a9\n\u00a9\f\u00a9\u0714\t\u00a9\u0001\u00a9\u0001\u00a9"+ + "\u0001\u00a9\u0001\u00aa\u0001\u00aa\u0001\u00aa\u0005\u00aa\u071c\b\u00aa"+ + "\n\u00aa\f\u00aa\u071f\t\u00aa\u0001\u00ab\u0001\u00ab\u0001\u00ab\u0001"+ + "\u00ac\u0001\u00ac\u0001\u00ac\u0001\u00ac\u0003\u00ac\u0728\b\u00ac\u0001"+ + "\u00ac\u0003\u00ac\u072b\b\u00ac\u0001\u00ad\u0001\u00ad\u0001\u00ad\u0003"+ + "\u00ad\u0730\b\u00ad\u0001\u00ad\u0001\u00ad\u0001\u00ae\u0001\u00ae\u0001"+ + "\u00ae\u0005\u00ae\u0737\b\u00ae\n\u00ae\f\u00ae\u073a\t\u00ae\u0001\u00af"+ + "\u0005\u00af\u073d\b\u00af\n\u00af\f\u00af\u0740\t\u00af\u0001\u00af\u0001"+ + "\u00af\u0001\u00af\u0001\u00af\u0001\u00af\u0001\u00b0\u0001\u00b0\u0003"+ + "\u00b0\u0749\b\u00b0\u0001\u00b0\u0005\u00b0\u074c\b\u00b0\n\u00b0\f\u00b0"+ + "\u074f\t\u00b0\u0001\u00b1\u0001\u00b1\u0001\u00b1\u0001\u00b1\u0005\u00b1"+ + "\u0755\b\u00b1\n\u00b1\f\u00b1\u0758\t\u00b1\u0001\u00b1\u0001\u00b1\u0001"+ + "\u00b1\u0001\u00b1\u0001\u00b1\u0001\u00b1\u0001\u00b1\u0001\u00b1\u0001"+ + "\u00b1\u0001\u00b1\u0001\u00b1\u0001\u00b1\u0001\u00b1\u0001\u00b1\u0001"+ + "\u00b1\u0001\u00b1\u0001\u00b1\u0001\u00b1\u0001\u00b1\u0001\u00b1\u0003"+ + "\u00b1\u076e\b\u00b1\u0001\u00b2\u0001\u00b2\u0001\u00b3\u0001\u00b3\u0001"+ + "\u00b3\u0001\u00b3\u0005\u00b3\u0776\b\u00b3\n\u00b3\f\u00b3\u0779\t\u00b3"+ + "\u0001\u00b3\u0001\u00b3\u0001\u00b3\u0001\u00b3\u0001\u00b3\u0001\u00b3"+ + "\u0001\u00b3\u0001\u00b3\u0001\u00b3\u0001\u00b3\u0001\u00b3\u0001\u00b3"+ + "\u0001\u00b3\u0001\u00b3\u0001\u00b3\u0001\u00b3\u0001\u00b3\u0001\u00b3"+ + "\u0001\u00b3\u0003\u00b3\u078e\b\u00b3\u0001\u00b4\u0001\u00b4\u0001\u00b4"+ + "\u0001\u00b4\u0001\u00b4\u0003\u00b4\u0795\b\u00b4\u0001\u00b5\u0001\u00b5"+ + "\u0001\u00b6\u0001\u00b6\u0001\u00b6\u0001\u00b6\u0003\u00b6\u079d\b\u00b6"+ + "\u0001\u00b7\u0001\u00b7\u0001\u00b7\u0001\u00b7\u0005\u00b7\u07a3\b\u00b7"+ + "\n\u00b7\f\u00b7\u07a6\t\u00b7\u0001\u00b7\u0001\u00b7\u0001\u00b7\u0001"+ + "\u00b7\u0001\u00b7\u0001\u00b7\u0005\u00b7\u07ae\b\u00b7\n\u00b7\f\u00b7"+ + "\u07b1\t\u00b7\u0001\u00b7\u0001\u00b7\u0001\u00b7\u0001\u00b7\u0001\u00b7"+ + "\u0001\u00b7\u0001\u00b7\u0001\u00b7\u0001\u00b7\u0001\u00b7\u0001\u00b7"+ + "\u0001\u00b7\u0001\u00b7\u0001\u00b7\u0001\u00b7\u0001\u00b7\u0001\u00b7"+ + "\u0001\u00b7\u0001\u00b7\u0001\u00b7\u0003\u00b7\u07c7\b\u00b7\u0001\u00b8"+ + "\u0001\u00b8\u0001\u00b9\u0001\u00b9\u0001\u00b9\u0001\u00b9\u0005\u00b9"+ + "\u07cf\b\u00b9\n\u00b9\f\u00b9\u07d2\t\u00b9\u0001\u00b9\u0001\u00b9\u0001"+ + "\u00b9\u0001\u00b9\u0001\u00b9\u0001\u00b9\u0005\u00b9\u07da\b\u00b9\n"+ + "\u00b9\f\u00b9\u07dd\t\u00b9\u0001\u00b9\u0001\u00b9\u0001\u00b9\u0001"+ + "\u00b9\u0001\u00b9\u0001\u00b9\u0001\u00b9\u0001\u00b9\u0001\u00b9\u0001"+ + "\u00b9\u0001\u00b9\u0001\u00b9\u0001\u00b9\u0001\u00b9\u0001\u00b9\u0001"+ + "\u00b9\u0001\u00b9\u0001\u00b9\u0001\u00b9\u0003\u00b9\u07f2\b\u00b9\u0001"+ + "\u00ba\u0001\u00ba\u0003\u00ba\u07f6\b\u00ba\u0001\u00ba\u0005\u00ba\u07f9"+ + "\b\u00ba\n\u00ba\f\u00ba\u07fc\t\u00ba\u0001\u00ba\u0001\u00ba\u0001\u00ba"+ + "\u0005\u00ba\u0801\b\u00ba\n\u00ba\f\u00ba\u0804\t\u00ba\u0001\u00ba\u0005"+ + "\u00ba\u0807\b\u00ba\n\u00ba\f\u00ba\u080a\t\u00ba\u0001\u00ba\u0003\u00ba"+ + "\u080d\b\u00ba\u0001\u00ba\u0001\u00ba\u0003\u00ba\u0811\b\u00ba\u0001"+ + "\u00ba\u0001\u00ba\u0003\u00ba\u0815\b\u00ba\u0001\u00ba\u0001\u00ba\u0001"+ + "\u00ba\u0001\u00ba\u0003\u00ba\u081b\b\u00ba\u0001\u00ba\u0005\u00ba\u081e"+ + "\b\u00ba\n\u00ba\f\u00ba\u0821\t\u00ba\u0001\u00ba\u0001\u00ba\u0003\u00ba"+ + "\u0825\b\u00ba\u0001\u00ba\u0001\u00ba\u0003\u00ba\u0829\b\u00ba\u0001"+ + "\u00ba\u0001\u00ba\u0003\u00ba\u082d\b\u00ba\u0001\u00ba\u0001\u00ba\u0001"+ + "\u00ba\u0001\u00ba\u0003\u00ba\u0833\b\u00ba\u0001\u00ba\u0005\u00ba\u0836"+ + "\b\u00ba\n\u00ba\f\u00ba\u0839\t\u00ba\u0001\u00ba\u0001\u00ba\u0003\u00ba"+ + "\u083d\b\u00ba\u0001\u00ba\u0001\u00ba\u0003\u00ba\u0841\b\u00ba\u0001"+ + "\u00ba\u0001\u00ba\u0003\u00ba\u0845\b\u00ba\u0003\u00ba\u0847\b\u00ba"+ + "\u0001\u00bb\u0001\u00bb\u0001\u00bb\u0003\u00bb\u084c\b\u00bb\u0001\u00bb"+ + "\u0005\u00bb\u084f\b\u00bb\n\u00bb\f\u00bb\u0852\t\u00bb\u0001\u00bb\u0001"+ + "\u00bb\u0003\u00bb\u0856\b\u00bb\u0001\u00bb\u0001\u00bb\u0003\u00bb\u085a"+ + "\b\u00bb\u0001\u00bb\u0001\u00bb\u0003\u00bb\u085e\b\u00bb\u0001\u00bc"+ + "\u0001\u00bc\u0003\u00bc\u0862\b\u00bc\u0001\u00bc\u0005\u00bc\u0865\b"+ + "\u00bc\n\u00bc\f\u00bc\u0868\t\u00bc\u0001\u00bc\u0001\u00bc\u0001\u00bc"+ + "\u0005\u00bc\u086d\b\u00bc\n\u00bc\f\u00bc\u0870\t\u00bc\u0001\u00bc\u0005"+ + "\u00bc\u0873\b\u00bc\n\u00bc\f\u00bc\u0876\t\u00bc\u0001\u00bc\u0003\u00bc"+ + "\u0879\b\u00bc\u0001\u00bc\u0001\u00bc\u0003\u00bc\u087d\b\u00bc\u0001"+ + "\u00bc\u0001\u00bc\u0003\u00bc\u0881\b\u00bc\u0001\u00bc\u0001\u00bc\u0001"+ + "\u00bc\u0001\u00bc\u0003\u00bc\u0887\b\u00bc\u0001\u00bc\u0005\u00bc\u088a"+ + "\b\u00bc\n\u00bc\f\u00bc\u088d\t\u00bc\u0001\u00bc\u0001\u00bc\u0003\u00bc"+ + "\u0891\b\u00bc\u0001\u00bc\u0001\u00bc\u0003\u00bc\u0895\b\u00bc\u0001"+ + "\u00bc\u0001\u00bc\u0003\u00bc\u0899\b\u00bc\u0003\u00bc\u089b\b\u00bc"+ + "\u0001\u00bd\u0001\u00bd\u0001\u00bd\u0003\u00bd\u08a0\b\u00bd\u0001\u00be"+ + "\u0001\u00be\u0001\u00be\u0001\u00be\u0001\u00be\u0001\u00be\u0001\u00be"+ + "\u0001\u00be\u0001\u00be\u0001\u00be\u0001\u00be\u0001\u00be\u0001\u00be"+ + "\u0003\u00be\u08af\b\u00be\u0001\u00bf\u0001\u00bf\u0001\u00bf\u0001\u00c0"+ + "\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0"+ + "\u0001\u00c0\u0001\u00c0\u0003\u00c0\u08bd\b\u00c0\u0001\u00c1\u0001\u00c1"+ + "\u0001\u00c1\u0001\u00c1\u0001\u00c1\u0001\u00c1\u0001\u00c1\u0001\u00c1"+ + "\u0001\u00c1\u0001\u00c1\u0003\u00c1\u08c9\b\u00c1\u0001\u00c1\u0001\u00c1"+ + "\u0001\u00c1\u0001\u00c1\u0001\u00c1\u0005\u00c1\u08d0\b\u00c1\n\u00c1"+ + "\f\u00c1\u08d3\t\u00c1\u0001\u00c2\u0001\u00c2\u0001\u00c2\u0001\u00c2"+ + "\u0001\u00c2\u0001\u00c2\u0001\u00c2\u0001\u00c2\u0001\u00c2\u0001\u00c2"+ + "\u0005\u00c2\u08df\b\u00c2\n\u00c2\f\u00c2\u08e2\t\u00c2\u0001\u00c3\u0001"+ + "\u00c3\u0001\u00c3\u0001\u00c3\u0001\u00c3\u0001\u00c3\u0001\u00c3\u0001"+ + "\u00c3\u0001\u00c3\u0001\u00c3\u0003\u00c3\u08ee\b\u00c3\u0001\u00c3\u0001"+ + "\u00c3\u0001\u00c3\u0001\u00c3\u0001\u00c3\u0005\u00c3\u08f5\b\u00c3\n"+ + "\u00c3\f\u00c3\u08f8\t\u00c3\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0003"+ + "\u00c4\u08fd\b\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001"+ + "\u00c4\u0003\u00c4\u0904\b\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0003"+ + "\u00c4\u0909\b\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001"+ + "\u00c4\u0003\u00c4\u0910\b\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0003"+ + "\u00c4\u0915\b\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001"+ + "\u00c4\u0003\u00c4\u091c\b\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0003"+ + "\u00c4\u0921\b\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001"+ + "\u00c4\u0003\u00c4\u0928\b\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0003"+ + "\u00c4\u092d\b\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001"+ + "\u00c4\u0001\u00c4\u0003\u00c4\u0935\b\u00c4\u0001\u00c4\u0001\u00c4\u0001"+ + "\u00c4\u0003\u00c4\u093a\b\u00c4\u0001\u00c4\u0001\u00c4\u0003\u00c4\u093e"+ + "\b\u00c4\u0001\u00c5\u0001\u00c5\u0003\u00c5\u0942\b\u00c5\u0001\u00c5"+ + "\u0001\u00c5\u0001\u00c5\u0003\u00c5\u0947\b\u00c5\u0001\u00c5\u0001\u00c5"+ + "\u0001\u00c6\u0001\u00c6\u0001\u00c6\u0003\u00c6\u094e\b\u00c6\u0001\u00c6"+ + "\u0001\u00c6\u0001\u00c6\u0001\u00c6\u0001\u00c6\u0003\u00c6\u0955\b\u00c6"+ + "\u0001\u00c6\u0001\u00c6\u0001\u00c6\u0003\u00c6\u095a\b\u00c6\u0001\u00c6"+ + "\u0001\u00c6\u0001\u00c6\u0001\u00c6\u0001\u00c6\u0003\u00c6\u0961\b\u00c6"+ + "\u0001\u00c6\u0001\u00c6\u0001\u00c6\u0003\u00c6\u0966\b\u00c6\u0001\u00c6"+ + "\u0001\u00c6\u0001\u00c6\u0001\u00c6\u0001\u00c6\u0003\u00c6\u096d\b\u00c6"+ + "\u0001\u00c6\u0001\u00c6\u0001\u00c6\u0003\u00c6\u0972\b\u00c6\u0001\u00c6"+ + "\u0001\u00c6\u0001\u00c6\u0001\u00c6\u0001\u00c6\u0001\u00c6\u0003\u00c6"+ + "\u097a\b\u00c6\u0001\u00c6\u0001\u00c6\u0001\u00c6\u0003\u00c6\u097f\b"+ + "\u00c6\u0001\u00c6\u0001\u00c6\u0003\u00c6\u0983\b\u00c6\u0001\u00c7\u0001"+ + "\u00c7\u0001\u00c7\u0005\u00c7\u0988\b\u00c7\n\u00c7\f\u00c7\u098b\t\u00c7"+ + "\u0001\u00c8\u0001\u00c8\u0001\u00c8\u0003\u00c8\u0990\b\u00c8\u0001\u00c8"+ + "\u0001\u00c8\u0001\u00c8\u0001\u00c8\u0001\u00c8\u0003\u00c8\u0997\b\u00c8"+ + "\u0001\u00c8\u0001\u00c8\u0001\u00c8\u0001\u00c8\u0001\u00c8\u0003\u00c8"+ + "\u099e\b\u00c8\u0001\u00c8\u0001\u00c8\u0001\u00c8\u0001\u00c8\u0001\u00c8"+ + "\u0003\u00c8\u09a5\b\u00c8\u0001\u00c8\u0001\u00c8\u0001\u00c8\u0001\u00c8"+ + "\u0001\u00c8\u0001\u00c8\u0003\u00c8\u09ad\b\u00c8\u0001\u00c8\u0001\u00c8"+ + "\u0001\u00c8\u0001\u00c8\u0001\u00c8\u0003\u00c8\u09b4\b\u00c8\u0001\u00c8"+ + "\u0001\u00c8\u0001\u00c8\u0001\u00c8\u0001\u00c8\u0001\u00c8\u0003\u00c8"+ + "\u09bc\b\u00c8\u0001\u00c9\u0001\u00c9\u0003\u00c9\u09c0\b\u00c9\u0001"+ + "\u00c9\u0001\u00c9\u0001\u00ca\u0001\u00ca\u0001\u00ca\u0003\u00ca\u09c7"+ + "\b\u00ca\u0001\u00ca\u0001\u00ca\u0001\u00ca\u0001\u00ca\u0001\u00ca\u0003"+ + "\u00ca\u09ce\b\u00ca\u0001\u00ca\u0001\u00ca\u0001\u00ca\u0001\u00ca\u0001"+ + "\u00ca\u0003\u00ca\u09d5\b\u00ca\u0001\u00ca\u0001\u00ca\u0001\u00ca\u0001"+ + "\u00ca\u0001\u00ca\u0001\u00ca\u0003\u00ca\u09dd\b\u00ca\u0001\u00ca\u0001"+ + "\u00ca\u0001\u00ca\u0001\u00ca\u0001\u00ca\u0003\u00ca\u09e4\b\u00ca\u0001"+ + "\u00ca\u0001\u00ca\u0001\u00ca\u0001\u00ca\u0001\u00ca\u0001\u00ca\u0003"+ + "\u00ca\u09ec\b\u00ca\u0001\u00cb\u0001\u00cb\u0001\u00cb\u0001\u00cb\u0003"+ + "\u00cb\u09f2\b\u00cb\u0001\u00cb\u0001\u00cb\u0001\u00cb\u0001\u00cb\u0003"+ + "\u00cb\u09f8\b\u00cb\u0001\u00cb\u0001\u00cb\u0001\u00cb\u0001\u00cb\u0001"+ + "\u00cb\u0001\u00cb\u0001\u00cb\u0001\u00cb\u0001\u00cb\u0001\u00cb\u0003"+ + "\u00cb\u0a04\b\u00cb\u0001\u00cc\u0001\u00cc\u0005\u00cc\u0a08\b\u00cc"+ + "\n\u00cc\f\u00cc\u0a0b\t\u00cc\u0001\u00cd\u0005\u00cd\u0a0e\b\u00cd\n"+ + "\u00cd\f\u00cd\u0a11\t\u00cd\u0001\u00cd\u0001\u00cd\u0001\u00cd\u0001"+ + "\u00cd\u0001\u00ce\u0001\u00ce\u0001\u00cf\u0001\u00cf\u0003\u00cf\u0a1b"+ + "\b\u00cf\u0001\u00d0\u0001\u00d0\u0001\u00d0\u0001\u00d0\u0001\u00d1\u0001"+ + "\u00d1\u0001\u00d1\u0003\u00d1\u0a24\b\u00d1\u0001\u00d1\u0001\u00d1\u0001"+ + "\u00d1\u0001\u00d1\u0001\u00d1\u0003\u00d1\u0a2b\b\u00d1\u0001\u00d2\u0001"+ + "\u00d2\u0001\u00d2\u0005\u00d2\u0a30\b\u00d2\n\u00d2\f\u00d2\u0a33\t\u00d2"+ + "\u0001\u00d3\u0001\u00d3\u0003\u00d3\u0a37\b\u00d3\u0001\u00d4\u0001\u00d4"+ + "\u0003\u00d4\u0a3b\b\u00d4\u0001\u00d5\u0001\u00d5\u0001\u00d5\u0001\u00d5"+ + "\u0001\u00d6\u0001\u00d6\u0001\u00d6\u0003\u00d6\u0a44\b\u00d6\u0001\u00d7"+ + "\u0001\u00d7\u0001\u00d8\u0001\u00d8\u0001\u00d8\u0001\u00d8\u0001\u00d8"+ + "\u0001\u00d8\u0001\u00d8\u0003\u00d8\u0a4f\b\u00d8\u0001\u00d9\u0001\u00d9"+ + "\u0001\u00d9\u0001\u00d9\u0001\u00d9\u0001\u00d9\u0005\u00d9\u0a57\b\u00d9"+ + "\n\u00d9\f\u00d9\u0a5a\t\u00d9\u0001\u00da\u0001\u00da\u0001\u00da\u0001"+ + "\u00da\u0001\u00da\u0001\u00da\u0005\u00da\u0a62\b\u00da\n\u00da\f\u00da"+ + "\u0a65\t\u00da\u0001\u00db\u0001\u00db\u0001\u00db\u0001\u00db\u0001\u00db"+ + "\u0001\u00db\u0005\u00db\u0a6d\b\u00db\n\u00db\f\u00db\u0a70\t\u00db\u0001"+ + "\u00dc\u0001\u00dc\u0001\u00dc\u0001\u00dc\u0001\u00dc\u0001\u00dc\u0005"+ + "\u00dc\u0a78\b\u00dc\n\u00dc\f\u00dc\u0a7b\t\u00dc\u0001\u00dd\u0001\u00dd"+ + "\u0001\u00dd\u0001\u00dd\u0001\u00dd\u0001\u00dd\u0005\u00dd\u0a83\b\u00dd"+ + "\n\u00dd\f\u00dd\u0a86\t\u00dd\u0001\u00de\u0001\u00de\u0001\u00de\u0001"+ + "\u00de\u0001\u00de\u0001\u00de\u0001\u00de\u0001\u00de\u0001\u00de\u0005"+ + "\u00de\u0a91\b\u00de\n\u00de\f\u00de\u0a94\t\u00de\u0001\u00df\u0001\u00df"+ + "\u0001\u00df\u0001\u00df\u0001\u00df\u0001\u00df\u0001\u00df\u0001\u00df"+ + "\u0001\u00df\u0001\u00df\u0001\u00df\u0001\u00df\u0001\u00df\u0001\u00df"+ + "\u0001\u00df\u0001\u00df\u0001\u00df\u0001\u00df\u0005\u00df\u0aa8\b\u00df"+ + "\n\u00df\f\u00df\u0aab\t\u00df\u0001\u00e0\u0001\u00e0\u0001\u00e0\u0001"+ + "\u00e0\u0001\u00e0\u0001\u00e0\u0001\u00e0\u0001\u00e0\u0001\u00e0\u0001"+ + "\u00e0\u0001\u00e0\u0001\u00e0\u0001\u00e0\u0001\u00e0\u0001\u00e0\u0001"+ + "\u00e0\u0005\u00e0\u0abd\b\u00e0\n\u00e0\f\u00e0\u0ac0\t\u00e0\u0001\u00e1"+ + "\u0001\u00e1\u0001\u00e1\u0001\u00e1\u0001\u00e1\u0001\u00e1\u0001\u00e1"+ + "\u0001\u00e1\u0001\u00e1\u0005\u00e1\u0acb\b\u00e1\n\u00e1\f\u00e1\u0ace"+ + "\t\u00e1\u0001\u00e2\u0001\u00e2\u0001\u00e2\u0001\u00e2\u0001\u00e2\u0001"+ + "\u00e2\u0001\u00e2\u0001\u00e2\u0001\u00e2\u0001\u00e2\u0001\u00e2\u0001"+ + "\u00e2\u0005\u00e2\u0adc\b\u00e2\n\u00e2\f\u00e2\u0adf\t\u00e2\u0001\u00e3"+ + "\u0001\u00e3\u0001\u00e3\u0001\u00e3\u0001\u00e3\u0001\u00e3\u0001\u00e3"+ + "\u0003\u00e3\u0ae8\b\u00e3\u0001\u00e4\u0001\u00e4\u0001\u00e4\u0001\u00e5"+ + "\u0001\u00e5\u0001\u00e5\u0001\u00e6\u0001\u00e6\u0001\u00e6\u0001\u00e6"+ + "\u0001\u00e6\u0001\u00e6\u0003\u00e6\u0af6\b\u00e6\u0001\u00e7\u0001\u00e7"+ + "\u0003\u00e7\u0afa\b\u00e7\u0001\u00e7\u0001\u00e7\u0005\u00e7\u0afe\b"+ + "\u00e7\n\u00e7\f\u00e7\u0b01\t\u00e7\u0001\u00e8\u0001\u00e8\u0001\u00e8"+ + "\u0001\u00e9\u0001\u00e9\u0001\u00ea\u0001\u00ea\u0001\u00ea\u0001\u00eb"+ + "\u0001\u00eb\u0001\u00ec\u0001\u00ec\u0001\u00ec\u0001\u00ec\u0001\u00ec"+ + "\u0001\u00ec\u0001\u00ec\u0001\u00ec\u0005\u00ec\u0b15\b\u00ec\n\u00ec"+ + "\f\u00ec\u0b18\t\u00ec\u0001\u00ec\u0001\u00ec\u0001\u00ec\u0001\u00ec"+ + "\u0001\u00ec\u0001\u00ec\u0005\u00ec\u0b20\b\u00ec\n\u00ec\f\u00ec\u0b23"+ + "\t\u00ec\u0001\u00ec\u0001\u00ec\u0001\u00ec\u0003\u00ec\u0b28\b\u00ec"+ + "\u0001\u00ec\u0000\r48>\u01b2\u01b4\u01b6\u01b8\u01ba\u01bc\u01be\u01c0"+ + "\u01c2\u01c4\u00ed\u0000\u0002\u0004\u0006\b\n\f\u000e\u0010\u0012\u0014"+ + "\u0016\u0018\u001a\u001c\u001e \"$&(*,.02468:<>@BDFHJLNPRTVXZ\\^`bdfh"+ + "jlnprtvxz|~\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\u00ea\u00ec\u00ee\u00f0\u00f2"+ + "\u00f4\u00f6\u00f8\u00fa\u00fc\u00fe\u0100\u0102\u0104\u0106\u0108\u010a"+ + "\u010c\u010e\u0110\u0112\u0114\u0116\u0118\u011a\u011c\u011e\u0120\u0122"+ + "\u0124\u0126\u0128\u012a\u012c\u012e\u0130\u0132\u0134\u0136\u0138\u013a"+ + "\u013c\u013e\u0140\u0142\u0144\u0146\u0148\u014a\u014c\u014e\u0150\u0152"+ + "\u0154\u0156\u0158\u015a\u015c\u015e\u0160\u0162\u0164\u0166\u0168\u016a"+ + "\u016c\u016e\u0170\u0172\u0174\u0176\u0178\u017a\u017c\u017e\u0180\u0182"+ + "\u0184\u0186\u0188\u018a\u018c\u018e\u0190\u0192\u0194\u0196\u0198\u019a"+ + "\u019c\u019e\u01a0\u01a2\u01a4\u01a6\u01a8\u01aa\u01ac\u01ae\u01b0\u01b2"+ + "\u01b4\u01b6\u01b8\u01ba\u01bc\u01be\u01c0\u01c2\u01c4\u01c6\u01c8\u01ca"+ + "\u01cc\u01ce\u01d0\u01d2\u01d4\u01d6\u01d8\u0000\u0004\u0001\u000038\u0005"+ + "\u0000\u0005\u0005\b\b\u001b\u001b\u001d\u001d%%\u0002\u0000\u000e\u000e"+ + "\u0014\u0014\u0002\u0000BB[e\u0c1b\u0000\u01da\u0001\u0000\u0000\u0000"+ + "\u0002\u01de\u0001\u0000\u0000\u0000\u0004\u01ee\u0001\u0000\u0000\u0000"+ + "\u0006\u01f2\u0001\u0000\u0000\u0000\b\u01f4\u0001\u0000\u0000\u0000\n"+ + "\u01f6\u0001\u0000\u0000\u0000\f\u01fb\u0001\u0000\u0000\u0000\u000e\u01ff"+ + "\u0001\u0000\u0000\u0000\u0010\u021e\u0001\u0000\u0000\u0000\u0012\u0220"+ + "\u0001\u0000\u0000\u0000\u0014\u022e\u0001\u0000\u0000\u0000\u0016\u0235"+ + "\u0001\u0000\u0000\u0000\u0018\u0237\u0001\u0000\u0000\u0000\u001a\u0239"+ + "\u0001\u0000\u0000\u0000\u001c\u023e\u0001\u0000\u0000\u0000\u001e\u024c"+ + "\u0001\u0000\u0000\u0000 \u0251\u0001\u0000\u0000\u0000\"\u0266\u0001"+ + "\u0000\u0000\u0000$\u026d\u0001\u0000\u0000\u0000&\u0279\u0001\u0000\u0000"+ + "\u0000(\u027b\u0001\u0000\u0000\u0000*\u027e\u0001\u0000\u0000\u0000,"+ + "\u0282\u0001\u0000\u0000\u0000.\u028c\u0001\u0000\u0000\u00000\u0291\u0001"+ + "\u0000\u0000\u00002\u029c\u0001\u0000\u0000\u00004\u029e\u0001\u0000\u0000"+ + "\u00006\u02ae\u0001\u0000\u0000\u00008\u02b0\u0001\u0000\u0000\u0000:"+ + "\u02c0\u0001\u0000\u0000\u0000<\u02c2\u0001\u0000\u0000\u0000>\u02c4\u0001"+ + "\u0000\u0000\u0000@\u02d0\u0001\u0000\u0000\u0000B\u02e3\u0001\u0000\u0000"+ + "\u0000D\u02f1\u0001\u0000\u0000\u0000F\u02f7\u0001\u0000\u0000\u0000H"+ + "\u02f9\u0001\u0000\u0000\u0000J\u02fd\u0001\u0000\u0000\u0000L\u0303\u0001"+ + "\u0000\u0000\u0000N\u030a\u0001\u0000\u0000\u0000P\u0314\u0001\u0000\u0000"+ + "\u0000R\u0318\u0001\u0000\u0000\u0000T\u031d\u0001\u0000\u0000\u0000V"+ + "\u0335\u0001\u0000\u0000\u0000X\u0337\u0001\u0000\u0000\u0000Z\u033b\u0001"+ + "\u0000\u0000\u0000\\\u0343\u0001\u0000\u0000\u0000^\u0346\u0001\u0000"+ + "\u0000\u0000`\u0349\u0001\u0000\u0000\u0000b\u0351\u0001\u0000\u0000\u0000"+ + "d\u035e\u0001\u0000\u0000\u0000f\u0365\u0001\u0000\u0000\u0000h\u036a"+ + "\u0001\u0000\u0000\u0000j\u0379\u0001\u0000\u0000\u0000l\u037b\u0001\u0000"+ + "\u0000\u0000n\u0383\u0001\u0000\u0000\u0000p\u0388\u0001\u0000\u0000\u0000"+ + "r\u038e\u0001\u0000\u0000\u0000t\u0392\u0001\u0000\u0000\u0000v\u0396"+ + "\u0001\u0000\u0000\u0000x\u039b\u0001\u0000\u0000\u0000z\u039f\u0001\u0000"+ + "\u0000\u0000|\u03b8\u0001\u0000\u0000\u0000~\u03ba\u0001\u0000\u0000\u0000"+ + "\u0080\u03c5\u0001\u0000\u0000\u0000\u0082\u03c9\u0001\u0000\u0000\u0000"+ + "\u0084\u03cb\u0001\u0000\u0000\u0000\u0086\u03cd\u0001\u0000\u0000\u0000"+ + "\u0088\u03cf\u0001\u0000\u0000\u0000\u008a\u03da\u0001\u0000\u0000\u0000"+ + "\u008c\u03df\u0001\u0000\u0000\u0000\u008e\u03ef\u0001\u0000\u0000\u0000"+ + "\u0090\u0402\u0001\u0000\u0000\u0000\u0092\u0406\u0001\u0000\u0000\u0000"+ + "\u0094\u0408\u0001\u0000\u0000\u0000\u0096\u0416\u0001\u0000\u0000\u0000"+ + "\u0098\u0428\u0001\u0000\u0000\u0000\u009a\u042d\u0001\u0000\u0000\u0000"+ + "\u009c\u0435\u0001\u0000\u0000\u0000\u009e\u0448\u0001\u0000\u0000\u0000"+ + "\u00a0\u044d\u0001\u0000\u0000\u0000\u00a2\u0457\u0001\u0000\u0000\u0000"+ + "\u00a4\u045a\u0001\u0000\u0000\u0000\u00a6\u0464\u0001\u0000\u0000\u0000"+ + "\u00a8\u0468\u0001\u0000\u0000\u0000\u00aa\u046a\u0001\u0000\u0000\u0000"+ + "\u00ac\u046c\u0001\u0000\u0000\u0000\u00ae\u0472\u0001\u0000\u0000\u0000"+ + "\u00b0\u047f\u0001\u0000\u0000\u0000\u00b2\u0482\u0001\u0000\u0000\u0000"+ + "\u00b4\u048b\u0001\u0000\u0000\u0000\u00b6\u048d\u0001\u0000\u0000\u0000"+ + "\u00b8\u04c4\u0001\u0000\u0000\u0000\u00ba\u04c9\u0001\u0000\u0000\u0000"+ + "\u00bc\u04d3\u0001\u0000\u0000\u0000\u00be\u04df\u0001\u0000\u0000\u0000"+ + "\u00c0\u04ea\u0001\u0000\u0000\u0000\u00c2\u04f8\u0001\u0000\u0000\u0000"+ + "\u00c4\u04fa\u0001\u0000\u0000\u0000\u00c6\u0503\u0001\u0000\u0000\u0000"+ + "\u00c8\u0508\u0001\u0000\u0000\u0000\u00ca\u051c\u0001\u0000\u0000\u0000"+ + "\u00cc\u051e\u0001\u0000\u0000\u0000\u00ce\u0521\u0001\u0000\u0000\u0000"+ + "\u00d0\u052f\u0001\u0000\u0000\u0000\u00d2\u0534\u0001\u0000\u0000\u0000"+ + "\u00d4\u053f\u0001\u0000\u0000\u0000\u00d6\u0544\u0001\u0000\u0000\u0000"+ + "\u00d8\u0550\u0001\u0000\u0000\u0000\u00da\u0555\u0001\u0000\u0000\u0000"+ + "\u00dc\u055d\u0001\u0000\u0000\u0000\u00de\u056b\u0001\u0000\u0000\u0000"+ + "\u00e0\u0570\u0001\u0000\u0000\u0000\u00e2\u0582\u0001\u0000\u0000\u0000"+ + "\u00e4\u0584\u0001\u0000\u0000\u0000\u00e6\u058a\u0001\u0000\u0000\u0000"+ + "\u00e8\u058c\u0001\u0000\u0000\u0000\u00ea\u0594\u0001\u0000\u0000\u0000"+ + "\u00ec\u059c\u0001\u0000\u0000\u0000\u00ee\u05a3\u0001\u0000\u0000\u0000"+ + "\u00f0\u05a5\u0001\u0000\u0000\u0000\u00f2\u05ae\u0001\u0000\u0000\u0000"+ + "\u00f4\u05b6\u0001\u0000\u0000\u0000\u00f6\u05b9\u0001\u0000\u0000\u0000"+ + "\u00f8\u05bf\u0001\u0000\u0000\u0000\u00fa\u05c8\u0001\u0000\u0000\u0000"+ + "\u00fc\u05d0\u0001\u0000\u0000\u0000\u00fe\u05d6\u0001\u0000\u0000\u0000"+ + "\u0100\u05e0\u0001\u0000\u0000\u0000\u0102\u05e2\u0001\u0000\u0000\u0000"+ + "\u0104\u05e8\u0001\u0000\u0000\u0000\u0106\u05f4\u0001\u0000\u0000\u0000"+ + "\u0108\u05fb\u0001\u0000\u0000\u0000\u010a\u0609\u0001\u0000\u0000\u0000"+ + "\u010c\u060b\u0001\u0000\u0000\u0000\u010e\u060d\u0001\u0000\u0000\u0000"+ + "\u0110\u0611\u0001\u0000\u0000\u0000\u0112\u0615\u0001\u0000\u0000\u0000"+ + "\u0114\u061f\u0001\u0000\u0000\u0000\u0116\u0621\u0001\u0000\u0000\u0000"+ + "\u0118\u0627\u0001\u0000\u0000\u0000\u011a\u062f\u0001\u0000\u0000\u0000"+ + "\u011c\u0641\u0001\u0000\u0000\u0000\u011e\u0643\u0001\u0000\u0000\u0000"+ + "\u0120\u0649\u0001\u0000\u0000\u0000\u0122\u0658\u0001\u0000\u0000\u0000"+ + "\u0124\u065b\u0001\u0000\u0000\u0000\u0126\u066c\u0001\u0000\u0000\u0000"+ + "\u0128\u066e\u0001\u0000\u0000\u0000\u012a\u0670\u0001\u0000\u0000\u0000"+ + "\u012c\u0676\u0001\u0000\u0000\u0000\u012e\u067c\u0001\u0000\u0000\u0000"+ + "\u0130\u0686\u0001\u0000\u0000\u0000\u0132\u068a\u0001\u0000\u0000\u0000"+ + "\u0134\u068c\u0001\u0000\u0000\u0000\u0136\u069c\u0001\u0000\u0000\u0000"+ + "\u0138\u06ae\u0001\u0000\u0000\u0000\u013a\u06b0\u0001\u0000\u0000\u0000"+ + "\u013c\u06b2\u0001\u0000\u0000\u0000\u013e\u06ba\u0001\u0000\u0000\u0000"+ + "\u0140\u06c9\u0001\u0000\u0000\u0000\u0142\u06d8\u0001\u0000\u0000\u0000"+ + "\u0144\u06de\u0001\u0000\u0000\u0000\u0146\u06e4\u0001\u0000\u0000\u0000"+ + "\u0148\u06ea\u0001\u0000\u0000\u0000\u014a\u06ee\u0001\u0000\u0000\u0000"+ + "\u014c\u0700\u0001\u0000\u0000\u0000\u014e\u0702\u0001\u0000\u0000\u0000"+ + "\u0150\u0709\u0001\u0000\u0000\u0000\u0152\u0712\u0001\u0000\u0000\u0000"+ + "\u0154\u0718\u0001\u0000\u0000\u0000\u0156\u0720\u0001\u0000\u0000\u0000"+ + "\u0158\u0723\u0001\u0000\u0000\u0000\u015a\u072c\u0001\u0000\u0000\u0000"+ + "\u015c\u0733\u0001\u0000\u0000\u0000\u015e\u073e\u0001\u0000\u0000\u0000"+ + "\u0160\u0748\u0001\u0000\u0000\u0000\u0162\u076d\u0001\u0000\u0000\u0000"+ + "\u0164\u076f\u0001\u0000\u0000\u0000\u0166\u078d\u0001\u0000\u0000\u0000"+ + "\u0168\u0794\u0001\u0000\u0000\u0000\u016a\u0796\u0001\u0000\u0000\u0000"+ + "\u016c\u079c\u0001\u0000\u0000\u0000\u016e\u07c6\u0001\u0000\u0000\u0000"+ + "\u0170\u07c8\u0001\u0000\u0000\u0000\u0172\u07f1\u0001\u0000\u0000\u0000"+ + "\u0174\u0846\u0001\u0000\u0000\u0000\u0176\u0848\u0001\u0000\u0000\u0000"+ + "\u0178\u089a\u0001\u0000\u0000\u0000\u017a\u089f\u0001\u0000\u0000\u0000"+ + "\u017c\u08ae\u0001\u0000\u0000\u0000\u017e\u08b0\u0001\u0000\u0000\u0000"+ + "\u0180\u08bc\u0001\u0000\u0000\u0000\u0182\u08c8\u0001\u0000\u0000\u0000"+ + "\u0184\u08d4\u0001\u0000\u0000\u0000\u0186\u08ed\u0001\u0000\u0000\u0000"+ + "\u0188\u093d\u0001\u0000\u0000\u0000\u018a\u093f\u0001\u0000\u0000\u0000"+ + "\u018c\u0982\u0001\u0000\u0000\u0000\u018e\u0984\u0001\u0000\u0000\u0000"+ + "\u0190\u09bb\u0001\u0000\u0000\u0000\u0192\u09bd\u0001\u0000\u0000\u0000"+ + "\u0194\u09eb\u0001\u0000\u0000\u0000\u0196\u0a03\u0001\u0000\u0000\u0000"+ + "\u0198\u0a05\u0001\u0000\u0000\u0000\u019a\u0a0f\u0001\u0000\u0000\u0000"+ + "\u019c\u0a16\u0001\u0000\u0000\u0000\u019e\u0a1a\u0001\u0000\u0000\u0000"+ + "\u01a0\u0a1c\u0001\u0000\u0000\u0000\u01a2\u0a2a\u0001\u0000\u0000\u0000"+ + "\u01a4\u0a2c\u0001\u0000\u0000\u0000\u01a6\u0a36\u0001\u0000\u0000\u0000"+ + "\u01a8\u0a3a\u0001\u0000\u0000\u0000\u01aa\u0a3c\u0001\u0000\u0000\u0000"+ + "\u01ac\u0a43\u0001\u0000\u0000\u0000\u01ae\u0a45\u0001\u0000\u0000\u0000"+ + "\u01b0\u0a4e\u0001\u0000\u0000\u0000\u01b2\u0a50\u0001\u0000\u0000\u0000"+ + "\u01b4\u0a5b\u0001\u0000\u0000\u0000\u01b6\u0a66\u0001\u0000\u0000\u0000"+ + "\u01b8\u0a71\u0001\u0000\u0000\u0000\u01ba\u0a7c\u0001\u0000\u0000\u0000"+ + "\u01bc\u0a87\u0001\u0000\u0000\u0000\u01be\u0a95\u0001\u0000\u0000\u0000"+ + "\u01c0\u0aac\u0001\u0000\u0000\u0000\u01c2\u0ac1\u0001\u0000\u0000\u0000"+ + "\u01c4\u0acf\u0001\u0000\u0000\u0000\u01c6\u0ae7\u0001\u0000\u0000\u0000"+ + "\u01c8\u0ae9\u0001\u0000\u0000\u0000\u01ca\u0aec\u0001\u0000\u0000\u0000"+ + "\u01cc\u0af5\u0001\u0000\u0000\u0000\u01ce\u0af9\u0001\u0000\u0000\u0000"+ + "\u01d0\u0b02\u0001\u0000\u0000\u0000\u01d2\u0b05\u0001\u0000\u0000\u0000"+ + "\u01d4\u0b07\u0001\u0000\u0000\u0000\u01d6\u0b0a\u0001\u0000\u0000\u0000"+ + "\u01d8\u0b27\u0001\u0000\u0000\u0000\u01da\u01db\u0007\u0000\u0000\u0000"+ + "\u01db\u0001\u0001\u0000\u0000\u0000\u01dc\u01df\u0003\u0004\u0002\u0000"+ + "\u01dd\u01df\u0003\f\u0006\u0000\u01de\u01dc\u0001\u0000\u0000\u0000\u01de"+ + "\u01dd\u0001\u0000\u0000\u0000\u01df\u0003\u0001\u0000\u0000\u0000\u01e0"+ + "\u01e2\u0003\u00e6s\u0000\u01e1\u01e0\u0001\u0000\u0000\u0000\u01e2\u01e5"+ + "\u0001\u0000\u0000\u0000\u01e3\u01e1\u0001\u0000\u0000\u0000\u01e3\u01e4"+ + "\u0001\u0000\u0000\u0000\u01e4\u01e6\u0001\u0000\u0000\u0000\u01e5\u01e3"+ + "\u0001\u0000\u0000\u0000\u01e6\u01ef\u0003\u0006\u0003\u0000\u01e7\u01e9"+ + "\u0003\u00e6s\u0000\u01e8\u01e7\u0001\u0000\u0000\u0000\u01e9\u01ec\u0001"+ + "\u0000\u0000\u0000\u01ea\u01e8\u0001\u0000\u0000\u0000\u01ea\u01eb\u0001"+ + "\u0000\u0000\u0000\u01eb\u01ed\u0001\u0000\u0000\u0000\u01ec\u01ea\u0001"+ + "\u0000\u0000\u0000\u01ed\u01ef\u0005\u0003\u0000\u0000\u01ee\u01e3\u0001"+ + "\u0000\u0000\u0000\u01ee\u01ea\u0001\u0000\u0000\u0000\u01ef\u0005\u0001"+ + "\u0000\u0000\u0000\u01f0\u01f3\u0003\b\u0004\u0000\u01f1\u01f3\u0003\n"+ + "\u0005\u0000\u01f2\u01f0\u0001\u0000\u0000\u0000\u01f2\u01f1\u0001\u0000"+ + "\u0000\u0000\u01f3\u0007\u0001\u0000\u0000\u0000\u01f4\u01f5\u0007\u0001"+ + "\u0000\u0000\u01f5\t\u0001\u0000\u0000\u0000\u01f6\u01f7\u0007\u0002\u0000"+ + "\u0000\u01f7\u000b\u0001\u0000\u0000\u0000\u01f8\u01fc\u0003\u000e\u0007"+ + "\u0000\u01f9\u01fc\u0003\u001c\u000e\u0000\u01fa\u01fc\u0003\u001e\u000f"+ + "\u0000\u01fb\u01f8\u0001\u0000\u0000\u0000\u01fb\u01f9\u0001\u0000\u0000"+ + "\u0000\u01fb\u01fa\u0001\u0000\u0000\u0000\u01fc\r\u0001\u0000\u0000\u0000"+ + "\u01fd\u0200\u0003\u0014\n\u0000\u01fe\u0200\u0003\u001a\r\u0000\u01ff"+ + "\u01fd\u0001\u0000\u0000\u0000\u01ff\u01fe\u0001\u0000\u0000\u0000\u0200"+ + "\u0205\u0001\u0000\u0000\u0000\u0201\u0204\u0003\u0012\t\u0000\u0202\u0204"+ + "\u0003\u0018\f\u0000\u0203\u0201\u0001\u0000\u0000\u0000\u0203\u0202\u0001"+ + "\u0000\u0000\u0000\u0204\u0207\u0001\u0000\u0000\u0000\u0205\u0203\u0001"+ + "\u0000\u0000\u0000\u0205\u0206\u0001\u0000\u0000\u0000\u0206\u000f\u0001"+ + "\u0000\u0000\u0000\u0207\u0205\u0001\u0000\u0000\u0000\u0208\u020a\u0003"+ + "\u00e6s\u0000\u0209\u0208\u0001\u0000\u0000\u0000\u020a\u020d\u0001\u0000"+ + "\u0000\u0000\u020b\u0209\u0001\u0000\u0000\u0000\u020b\u020c\u0001\u0000"+ + "\u0000\u0000\u020c\u020e\u0001\u0000\u0000\u0000\u020d\u020b\u0001\u0000"+ + "\u0000\u0000\u020e\u0210\u0005f\u0000\u0000\u020f\u0211\u0003*\u0015\u0000"+ + "\u0210\u020f\u0001\u0000\u0000\u0000\u0210\u0211\u0001\u0000\u0000\u0000"+ + "\u0211\u021f\u0001\u0000\u0000\u0000\u0212\u0213\u0003\u000e\u0007\u0000"+ + "\u0213\u0217\u0005A\u0000\u0000\u0214\u0216\u0003\u00e6s\u0000\u0215\u0214"+ + "\u0001\u0000\u0000\u0000\u0216\u0219\u0001\u0000\u0000\u0000\u0217\u0215"+ + "\u0001\u0000\u0000\u0000\u0217\u0218\u0001\u0000\u0000\u0000\u0218\u021a"+ + "\u0001\u0000\u0000\u0000\u0219\u0217\u0001\u0000\u0000\u0000\u021a\u021c"+ + "\u0005f\u0000\u0000\u021b\u021d\u0003*\u0015\u0000\u021c\u021b\u0001\u0000"+ + "\u0000\u0000\u021c\u021d\u0001\u0000\u0000\u0000\u021d\u021f\u0001\u0000"+ + "\u0000\u0000\u021e\u020b\u0001\u0000\u0000\u0000\u021e\u0212\u0001\u0000"+ + "\u0000\u0000\u021f\u0011\u0001\u0000\u0000\u0000\u0220\u0224\u0005A\u0000"+ + "\u0000\u0221\u0223\u0003\u00e6s\u0000\u0222\u0221\u0001\u0000\u0000\u0000"+ + "\u0223\u0226\u0001\u0000\u0000\u0000\u0224\u0222\u0001\u0000\u0000\u0000"+ + "\u0224\u0225\u0001\u0000\u0000\u0000\u0225\u0227\u0001\u0000\u0000\u0000"+ + "\u0226\u0224\u0001\u0000\u0000\u0000\u0227\u0229\u0005f\u0000\u0000\u0228"+ + "\u022a\u0003*\u0015\u0000\u0229\u0228\u0001\u0000\u0000\u0000\u0229\u022a"+ + "\u0001\u0000\u0000\u0000\u022a\u0013\u0001\u0000\u0000\u0000\u022b\u022d"+ + "\u0003\u00e6s\u0000\u022c\u022b\u0001\u0000\u0000\u0000\u022d\u0230\u0001"+ + "\u0000\u0000\u0000\u022e\u022c\u0001\u0000\u0000\u0000\u022e\u022f\u0001"+ + "\u0000\u0000\u0000\u022f\u0231\u0001\u0000\u0000\u0000\u0230\u022e\u0001"+ + "\u0000\u0000\u0000\u0231\u0233\u0005f\u0000\u0000\u0232\u0234\u0003*\u0015"+ + "\u0000\u0233\u0232\u0001\u0000\u0000\u0000\u0233\u0234\u0001\u0000\u0000"+ + "\u0000\u0234\u0015\u0001\u0000\u0000\u0000\u0235\u0236\u0003\u0010\b\u0000"+ + "\u0236\u0017\u0001\u0000\u0000\u0000\u0237\u0238\u0003\u0012\t\u0000\u0238"+ + "\u0019\u0001\u0000\u0000\u0000\u0239\u023a\u0003\u0014\n\u0000\u023a\u001b"+ + "\u0001\u0000\u0000\u0000\u023b\u023d\u0003\u00e6s\u0000\u023c\u023b\u0001"+ + "\u0000\u0000\u0000\u023d\u0240\u0001\u0000\u0000\u0000\u023e\u023c\u0001"+ + "\u0000\u0000\u0000\u023e\u023f\u0001\u0000\u0000\u0000\u023f\u0241\u0001"+ + "\u0000\u0000\u0000\u0240\u023e\u0001\u0000\u0000\u0000\u0241\u0242\u0005"+ + "f\u0000\u0000\u0242\u001d\u0001\u0000\u0000\u0000\u0243\u0244\u0003\u0004"+ + "\u0002\u0000\u0244\u0245\u0003 \u0010\u0000\u0245\u024d\u0001\u0000\u0000"+ + "\u0000\u0246\u0247\u0003\u000e\u0007\u0000\u0247\u0248\u0003 \u0010\u0000"+ + "\u0248\u024d\u0001\u0000\u0000\u0000\u0249\u024a\u0003\u001c\u000e\u0000"+ + "\u024a\u024b\u0003 \u0010\u0000\u024b\u024d\u0001\u0000\u0000\u0000\u024c"+ + "\u0243\u0001\u0000\u0000\u0000\u024c\u0246\u0001\u0000\u0000\u0000\u024c"+ + "\u0249\u0001\u0000\u0000\u0000\u024d\u001f\u0001\u0000\u0000\u0000\u024e"+ + "\u0250\u0003\u00e6s\u0000\u024f\u024e\u0001\u0000\u0000\u0000\u0250\u0253"+ + "\u0001\u0000\u0000\u0000\u0251\u024f\u0001\u0000\u0000\u0000\u0251\u0252"+ + "\u0001\u0000\u0000\u0000\u0252\u0254\u0001\u0000\u0000\u0000\u0253\u0251"+ + "\u0001\u0000\u0000\u0000\u0254\u0255\u0005=\u0000\u0000\u0255\u0260\u0005"+ + ">\u0000\u0000\u0256\u0258\u0003\u00e6s\u0000\u0257\u0256\u0001\u0000\u0000"+ + "\u0000\u0258\u025b\u0001\u0000\u0000\u0000\u0259\u0257\u0001\u0000\u0000"+ + "\u0000\u0259\u025a\u0001\u0000\u0000\u0000\u025a\u025c\u0001\u0000\u0000"+ + "\u0000\u025b\u0259\u0001\u0000\u0000\u0000\u025c\u025d\u0005=\u0000\u0000"+ + "\u025d\u025f\u0005>\u0000\u0000\u025e\u0259\u0001\u0000\u0000\u0000\u025f"+ + "\u0262\u0001\u0000\u0000\u0000\u0260\u025e\u0001\u0000\u0000\u0000\u0260"+ + "\u0261\u0001\u0000\u0000\u0000\u0261!\u0001\u0000\u0000\u0000\u0262\u0260"+ + "\u0001\u0000\u0000\u0000\u0263\u0265\u0003$\u0012\u0000\u0264\u0263\u0001"+ + "\u0000\u0000\u0000\u0265\u0268\u0001\u0000\u0000\u0000\u0266\u0264\u0001"+ + "\u0000\u0000\u0000\u0266\u0267\u0001\u0000\u0000\u0000\u0267\u0269\u0001"+ + "\u0000\u0000\u0000\u0268\u0266\u0001\u0000\u0000\u0000\u0269\u026b\u0005"+ + "f\u0000\u0000\u026a\u026c\u0003&\u0013\u0000\u026b\u026a\u0001\u0000\u0000"+ + "\u0000\u026b\u026c\u0001\u0000\u0000\u0000\u026c#\u0001\u0000\u0000\u0000"+ + "\u026d\u026e\u0003\u00e6s\u0000\u026e%\u0001\u0000\u0000\u0000\u026f\u0270"+ + "\u0005\u0011\u0000\u0000\u0270\u027a\u0003\u001c\u000e\u0000\u0271\u0272"+ + "\u0005\u0011\u0000\u0000\u0272\u0276\u0003\u000e\u0007\u0000\u0273\u0275"+ + "\u0003(\u0014\u0000\u0274\u0273\u0001\u0000\u0000\u0000\u0275\u0278\u0001"+ + "\u0000\u0000\u0000\u0276\u0274\u0001\u0000\u0000\u0000\u0276\u0277\u0001"+ + "\u0000\u0000\u0000\u0277\u027a\u0001\u0000\u0000\u0000\u0278\u0276\u0001"+ + "\u0000\u0000\u0000\u0279\u026f\u0001\u0000\u0000\u0000\u0279\u0271\u0001"+ + "\u0000\u0000\u0000\u027a\'\u0001\u0000\u0000\u0000\u027b\u027c\u0005U"+ + "\u0000\u0000\u027c\u027d\u0003\u0016\u000b\u0000\u027d)\u0001\u0000\u0000"+ + "\u0000\u027e\u027f\u0005D\u0000\u0000\u027f\u0280\u0003,\u0016\u0000\u0280"+ + "\u0281\u0005C\u0000\u0000\u0281+\u0001\u0000\u0000\u0000\u0282\u0287\u0003"+ + ".\u0017\u0000\u0283\u0284\u0005@\u0000\u0000\u0284\u0286\u0003.\u0017"+ + "\u0000\u0285\u0283\u0001\u0000\u0000\u0000\u0286\u0289\u0001\u0000\u0000"+ + "\u0000\u0287\u0285\u0001\u0000\u0000\u0000\u0287\u0288\u0001\u0000\u0000"+ + "\u0000\u0288-\u0001\u0000\u0000\u0000\u0289\u0287\u0001\u0000\u0000\u0000"+ + "\u028a\u028d\u0003\f\u0006\u0000\u028b\u028d\u00030\u0018\u0000\u028c"+ + "\u028a\u0001\u0000\u0000\u0000\u028c\u028b\u0001\u0000\u0000\u0000\u028d"+ + "/\u0001\u0000\u0000\u0000\u028e\u0290\u0003\u00e6s\u0000\u028f\u028e\u0001"+ + "\u0000\u0000\u0000\u0290\u0293\u0001\u0000\u0000\u0000\u0291\u028f\u0001"+ + "\u0000\u0000\u0000\u0291\u0292\u0001\u0000\u0000\u0000\u0292\u0294\u0001"+ + "\u0000\u0000\u0000\u0293\u0291\u0001\u0000\u0000\u0000\u0294\u0296\u0005"+ + "G\u0000\u0000\u0295\u0297\u00032\u0019\u0000\u0296\u0295\u0001\u0000\u0000"+ + "\u0000\u0296\u0297\u0001\u0000\u0000\u0000\u02971\u0001\u0000\u0000\u0000"+ + "\u0298\u0299\u0005\u0011\u0000\u0000\u0299\u029d\u0003\f\u0006\u0000\u029a"+ + "\u029b\u0005(\u0000\u0000\u029b\u029d\u0003\f\u0006\u0000\u029c\u0298"+ + "\u0001\u0000\u0000\u0000\u029c\u029a\u0001\u0000\u0000\u0000\u029d3\u0001"+ + "\u0000\u0000\u0000\u029e\u029f\u0006\u001a\uffff\uffff\u0000\u029f\u02a0"+ + "\u0005f\u0000\u0000\u02a0\u02a6\u0001\u0000\u0000\u0000\u02a1\u02a2\n"+ + "\u0001\u0000\u0000\u02a2\u02a3\u0005A\u0000\u0000\u02a3\u02a5\u0005f\u0000"+ + "\u0000\u02a4\u02a1\u0001\u0000\u0000\u0000\u02a5\u02a8\u0001\u0000\u0000"+ + "\u0000\u02a6\u02a4\u0001\u0000\u0000\u0000\u02a6\u02a7\u0001\u0000\u0000"+ + "\u0000\u02a75\u0001\u0000\u0000\u0000\u02a8\u02a6\u0001\u0000\u0000\u0000"+ + "\u02a9\u02af\u0005f\u0000\u0000\u02aa\u02ab\u00038\u001c\u0000\u02ab\u02ac"+ + "\u0005A\u0000\u0000\u02ac\u02ad\u0005f\u0000\u0000\u02ad\u02af\u0001\u0000"+ + "\u0000\u0000\u02ae\u02a9\u0001\u0000\u0000\u0000\u02ae\u02aa\u0001\u0000"+ + "\u0000\u0000\u02af7\u0001\u0000\u0000\u0000\u02b0\u02b1\u0006\u001c\uffff"+ + "\uffff\u0000\u02b1\u02b2\u0005f\u0000\u0000\u02b2\u02b8\u0001\u0000\u0000"+ + "\u0000\u02b3\u02b4\n\u0001\u0000\u0000\u02b4\u02b5\u0005A\u0000\u0000"+ + "\u02b5\u02b7\u0005f\u0000\u0000\u02b6\u02b3\u0001\u0000\u0000\u0000\u02b7"+ + "\u02ba\u0001\u0000\u0000\u0000\u02b8\u02b6\u0001\u0000\u0000\u0000\u02b8"+ + "\u02b9\u0001\u0000\u0000\u0000\u02b99\u0001\u0000\u0000\u0000\u02ba\u02b8"+ + "\u0001\u0000\u0000\u0000\u02bb\u02c1\u0005f\u0000\u0000\u02bc\u02bd\u0003"+ + ">\u001f\u0000\u02bd\u02be\u0005A\u0000\u0000\u02be\u02bf\u0005f\u0000"+ + "\u0000\u02bf\u02c1\u0001\u0000\u0000\u0000\u02c0\u02bb\u0001\u0000\u0000"+ + "\u0000\u02c0\u02bc\u0001\u0000\u0000\u0000\u02c1;\u0001\u0000\u0000\u0000"+ + "\u02c2\u02c3\u0005f\u0000\u0000\u02c3=\u0001\u0000\u0000\u0000\u02c4\u02c5"+ + "\u0006\u001f\uffff\uffff\u0000\u02c5\u02c6\u0005f\u0000\u0000\u02c6\u02cc"+ + "\u0001\u0000\u0000\u0000\u02c7\u02c8\n\u0001\u0000\u0000\u02c8\u02c9\u0005"+ + "A\u0000\u0000\u02c9\u02cb\u0005f\u0000\u0000\u02ca\u02c7\u0001\u0000\u0000"+ + "\u0000\u02cb\u02ce\u0001\u0000\u0000\u0000\u02cc\u02ca\u0001\u0000\u0000"+ + "\u0000\u02cc\u02cd\u0001\u0000\u0000\u0000\u02cd?\u0001\u0000\u0000\u0000"+ + "\u02ce\u02cc\u0001\u0000\u0000\u0000\u02cf\u02d1\u0003B!\u0000\u02d0\u02cf"+ + "\u0001\u0000\u0000\u0000\u02d0\u02d1\u0001\u0000\u0000\u0000\u02d1\u02d5"+ + "\u0001\u0000\u0000\u0000\u02d2\u02d4\u0003F#\u0000\u02d3\u02d2\u0001\u0000"+ + "\u0000\u0000\u02d4\u02d7\u0001\u0000\u0000\u0000\u02d5\u02d3\u0001\u0000"+ + "\u0000\u0000\u02d5\u02d6\u0001\u0000\u0000\u0000\u02d6\u02db\u0001\u0000"+ + "\u0000\u0000\u02d7\u02d5\u0001\u0000\u0000\u0000\u02d8\u02da\u0003P(\u0000"+ + "\u02d9\u02d8\u0001\u0000\u0000\u0000\u02da\u02dd\u0001\u0000\u0000\u0000"+ + "\u02db\u02d9\u0001\u0000\u0000\u0000\u02db\u02dc\u0001\u0000\u0000\u0000"+ + "\u02dc\u02de\u0001\u0000\u0000\u0000\u02dd\u02db\u0001\u0000\u0000\u0000"+ + "\u02de\u02df\u0005\u0000\u0000\u0001\u02dfA\u0001\u0000\u0000\u0000\u02e0"+ + "\u02e2\u0003D\"\u0000\u02e1\u02e0\u0001\u0000\u0000\u0000\u02e2\u02e5"+ + "\u0001\u0000\u0000\u0000\u02e3\u02e1\u0001\u0000\u0000\u0000\u02e3\u02e4"+ + "\u0001\u0000\u0000\u0000\u02e4\u02e6\u0001\u0000\u0000\u0000\u02e5\u02e3"+ + "\u0001\u0000\u0000\u0000\u02e6\u02e7\u0005 \u0000\u0000\u02e7\u02ec\u0005"+ + "f\u0000\u0000\u02e8\u02e9\u0005A\u0000\u0000\u02e9\u02eb\u0005f\u0000"+ + "\u0000\u02ea\u02e8\u0001\u0000\u0000\u0000\u02eb\u02ee\u0001\u0000\u0000"+ + "\u0000\u02ec\u02ea\u0001\u0000\u0000\u0000\u02ec\u02ed\u0001\u0000\u0000"+ + "\u0000\u02ed\u02ef\u0001\u0000\u0000\u0000\u02ee\u02ec\u0001\u0000\u0000"+ + "\u0000\u02ef\u02f0\u0005?\u0000\u0000\u02f0C\u0001\u0000\u0000\u0000\u02f1"+ + "\u02f2\u0003\u00e6s\u0000\u02f2E\u0001\u0000\u0000\u0000\u02f3\u02f8\u0003"+ + "H$\u0000\u02f4\u02f8\u0003J%\u0000\u02f5\u02f8\u0003L&\u0000\u02f6\u02f8"+ + "\u0003N\'\u0000\u02f7\u02f3\u0001\u0000\u0000\u0000\u02f7\u02f4\u0001"+ + "\u0000\u0000\u0000\u02f7\u02f5\u0001\u0000\u0000\u0000\u02f7\u02f6\u0001"+ + "\u0000\u0000\u0000\u02f8G\u0001\u0000\u0000\u0000\u02f9\u02fa\u0005\u0019"+ + "\u0000\u0000\u02fa\u02fb\u00036\u001b\u0000\u02fb\u02fc\u0005?\u0000\u0000"+ + "\u02fcI\u0001\u0000\u0000\u0000\u02fd\u02fe\u0005\u0019\u0000\u0000\u02fe"+ + "\u02ff\u00038\u001c\u0000\u02ff\u0300\u0005A\u0000\u0000\u0300\u0301\u0005"+ + "S\u0000\u0000\u0301\u0302\u0005?\u0000\u0000\u0302K\u0001\u0000\u0000"+ + "\u0000\u0303\u0304\u0005\u0019\u0000\u0000\u0304\u0305\u0005&\u0000\u0000"+ + "\u0305\u0306\u00036\u001b\u0000\u0306\u0307\u0005A\u0000\u0000\u0307\u0308"+ + "\u0005f\u0000\u0000\u0308\u0309\u0005?\u0000\u0000\u0309M\u0001\u0000"+ + "\u0000\u0000\u030a\u030b\u0005\u0019\u0000\u0000\u030b\u030c\u0005&\u0000"+ + "\u0000\u030c\u030d\u00036\u001b\u0000\u030d\u030e\u0005A\u0000\u0000\u030e"+ + "\u030f\u0005S\u0000\u0000\u030f\u0310\u0005?\u0000\u0000\u0310O\u0001"+ + "\u0000\u0000\u0000\u0311\u0315\u0003R)\u0000\u0312\u0315\u0003\u00c6c"+ + "\u0000\u0313\u0315\u0005?\u0000\u0000\u0314\u0311\u0001\u0000\u0000\u0000"+ + "\u0314\u0312\u0001\u0000\u0000\u0000\u0314\u0313\u0001\u0000\u0000\u0000"+ + "\u0315Q\u0001\u0000\u0000\u0000\u0316\u0319\u0003T*\u0000\u0317\u0319"+ + "\u0003\u00ba]\u0000\u0318\u0316\u0001\u0000\u0000\u0000\u0318\u0317\u0001"+ + "\u0000\u0000\u0000\u0319S\u0001\u0000\u0000\u0000\u031a\u031c\u0003V+"+ + "\u0000\u031b\u031a\u0001\u0000\u0000\u0000\u031c\u031f\u0001\u0000\u0000"+ + "\u0000\u031d\u031b\u0001\u0000\u0000\u0000\u031d\u031e\u0001\u0000\u0000"+ + "\u0000\u031e\u0320\u0001\u0000\u0000\u0000\u031f\u031d\u0001\u0000\u0000"+ + "\u0000\u0320\u0321\u0005\t\u0000\u0000\u0321\u0323\u0005f\u0000\u0000"+ + "\u0322\u0324\u0003X,\u0000\u0323\u0322\u0001\u0000\u0000\u0000\u0323\u0324"+ + "\u0001\u0000\u0000\u0000\u0324\u0326\u0001\u0000\u0000\u0000\u0325\u0327"+ + "\u0003\\.\u0000\u0326\u0325\u0001\u0000\u0000\u0000\u0326\u0327\u0001"+ + "\u0000\u0000\u0000\u0327\u0329\u0001\u0000\u0000\u0000\u0328\u032a\u0003"+ + "^/\u0000\u0329\u0328\u0001\u0000\u0000\u0000\u0329\u032a\u0001\u0000\u0000"+ + "\u0000\u032a\u032b\u0001\u0000\u0000\u0000\u032b\u032c\u0003b1\u0000\u032c"+ + "U\u0001\u0000\u0000\u0000\u032d\u0336\u0003\u00e6s\u0000\u032e\u0336\u0005"+ + "#\u0000\u0000\u032f\u0336\u0005\"\u0000\u0000\u0330\u0336\u0005!\u0000"+ + "\u0000\u0331\u0336\u0005\u0001\u0000\u0000\u0332\u0336\u0005&\u0000\u0000"+ + "\u0333\u0336\u0005\u0012\u0000\u0000\u0334\u0336\u0005\'\u0000\u0000\u0335"+ + "\u032d\u0001\u0000\u0000\u0000\u0335\u032e\u0001\u0000\u0000\u0000\u0335"+ + "\u032f\u0001\u0000\u0000\u0000\u0335\u0330\u0001\u0000\u0000\u0000\u0335"+ + "\u0331\u0001\u0000\u0000\u0000\u0335\u0332\u0001\u0000\u0000\u0000\u0335"+ + "\u0333\u0001\u0000\u0000\u0000\u0335\u0334\u0001\u0000\u0000\u0000\u0336"+ + "W\u0001\u0000\u0000\u0000\u0337\u0338\u0005D\u0000\u0000\u0338\u0339\u0003"+ + "Z-\u0000\u0339\u033a\u0005C\u0000\u0000\u033aY\u0001\u0000\u0000\u0000"+ + "\u033b\u0340\u0003\"\u0011\u0000\u033c\u033d\u0005@\u0000\u0000\u033d"+ + "\u033f\u0003\"\u0011\u0000\u033e\u033c\u0001\u0000\u0000\u0000\u033f\u0342"+ + "\u0001\u0000\u0000\u0000\u0340\u033e\u0001\u0000\u0000\u0000\u0340\u0341"+ + "\u0001\u0000\u0000\u0000\u0341[\u0001\u0000\u0000\u0000\u0342\u0340\u0001"+ + "\u0000\u0000\u0000\u0343\u0344\u0005\u0011\u0000\u0000\u0344\u0345\u0003"+ + "\u0010\b\u0000\u0345]\u0001\u0000\u0000\u0000\u0346\u0347\u0005\u0018"+ + "\u0000\u0000\u0347\u0348\u0003`0\u0000\u0348_\u0001\u0000\u0000\u0000"+ + "\u0349\u034e\u0003\u0016\u000b\u0000\u034a\u034b\u0005@\u0000\u0000\u034b"+ + "\u034d\u0003\u0016\u000b\u0000\u034c\u034a\u0001\u0000\u0000\u0000\u034d"+ + "\u0350\u0001\u0000\u0000\u0000\u034e\u034c\u0001\u0000\u0000\u0000\u034e"+ + "\u034f\u0001\u0000\u0000\u0000\u034fa\u0001\u0000\u0000\u0000\u0350\u034e"+ + "\u0001\u0000\u0000\u0000\u0351\u0355\u0005;\u0000\u0000\u0352\u0354\u0003"+ + "d2\u0000\u0353\u0352\u0001\u0000\u0000\u0000\u0354\u0357\u0001\u0000\u0000"+ + "\u0000\u0355\u0353\u0001\u0000\u0000\u0000\u0355\u0356\u0001\u0000\u0000"+ + "\u0000\u0356\u0358\u0001\u0000\u0000\u0000\u0357\u0355\u0001\u0000\u0000"+ + "\u0000\u0358\u0359\u0005<\u0000\u0000\u0359c\u0001\u0000\u0000\u0000\u035a"+ + "\u035f\u0003f3\u0000\u035b\u035f\u0003\u00aaU\u0000\u035c\u035f\u0003"+ + "\u00acV\u0000\u035d\u035f\u0003\u00aeW\u0000\u035e\u035a\u0001\u0000\u0000"+ + "\u0000\u035e\u035b\u0001\u0000\u0000\u0000\u035e\u035c\u0001\u0000\u0000"+ + "\u0000\u035e\u035d\u0001\u0000\u0000\u0000\u035fe\u0001\u0000\u0000\u0000"+ + "\u0360\u0366\u0003h4\u0000\u0361\u0366\u0003\u008cF\u0000\u0362\u0366"+ + "\u0003R)\u0000\u0363\u0366\u0003\u00c6c\u0000\u0364\u0366\u0005?\u0000"+ + "\u0000\u0365\u0360\u0001\u0000\u0000\u0000\u0365\u0361\u0001\u0000\u0000"+ + "\u0000\u0365\u0362\u0001\u0000\u0000\u0000\u0365\u0363\u0001\u0000\u0000"+ + "\u0000\u0365\u0364\u0001\u0000\u0000\u0000\u0366g\u0001\u0000\u0000\u0000"+ + "\u0367\u0369\u0003j5\u0000\u0368\u0367\u0001\u0000\u0000\u0000\u0369\u036c"+ + "\u0001\u0000\u0000\u0000\u036a\u0368\u0001\u0000\u0000\u0000\u036a\u036b"+ + "\u0001\u0000\u0000\u0000\u036b\u036d\u0001\u0000\u0000\u0000\u036c\u036a"+ + "\u0001\u0000\u0000\u0000\u036d\u036e\u0003t:\u0000\u036e\u036f\u0003l"+ + "6\u0000\u036f\u0370\u0005?\u0000\u0000\u0370i\u0001\u0000\u0000\u0000"+ + "\u0371\u037a\u0003\u00e6s\u0000\u0372\u037a\u0005#\u0000\u0000\u0373\u037a"+ + "\u0005\"\u0000\u0000\u0374\u037a\u0005!\u0000\u0000\u0375\u037a\u0005"+ + "&\u0000\u0000\u0376\u037a\u0005\u0012\u0000\u0000\u0377\u037a\u0005.\u0000"+ + "\u0000\u0378\u037a\u00051\u0000\u0000\u0379\u0371\u0001\u0000\u0000\u0000"+ + "\u0379\u0372\u0001\u0000\u0000\u0000\u0379\u0373\u0001\u0000\u0000\u0000"+ + "\u0379\u0374\u0001\u0000\u0000\u0000\u0379\u0375\u0001\u0000\u0000\u0000"+ + "\u0379\u0376\u0001\u0000\u0000\u0000\u0379\u0377\u0001\u0000\u0000\u0000"+ + "\u0379\u0378\u0001\u0000\u0000\u0000\u037ak\u0001\u0000\u0000\u0000\u037b"+ + "\u0380\u0003n7\u0000\u037c\u037d\u0005@\u0000\u0000\u037d\u037f\u0003"+ + "n7\u0000\u037e\u037c\u0001\u0000\u0000\u0000\u037f\u0382\u0001\u0000\u0000"+ + "\u0000\u0380\u037e\u0001\u0000\u0000\u0000\u0380\u0381\u0001\u0000\u0000"+ + "\u0000\u0381m\u0001\u0000\u0000\u0000\u0382\u0380\u0001\u0000\u0000\u0000"+ + "\u0383\u0386\u0003p8\u0000\u0384\u0385\u0005B\u0000\u0000\u0385\u0387"+ + "\u0003r9\u0000\u0386\u0384\u0001\u0000\u0000\u0000\u0386\u0387\u0001\u0000"+ + "\u0000\u0000\u0387o\u0001\u0000\u0000\u0000\u0388\u038a\u0005f\u0000\u0000"+ + "\u0389\u038b\u0003 \u0010\u0000\u038a\u0389\u0001\u0000\u0000\u0000\u038a"+ + "\u038b\u0001\u0000\u0000\u0000\u038bq\u0001\u0000\u0000\u0000\u038c\u038f"+ + "\u0003\u019e\u00cf\u0000\u038d\u038f\u0003\u00f8|\u0000\u038e\u038c\u0001"+ + "\u0000\u0000\u0000\u038e\u038d\u0001\u0000\u0000\u0000\u038fs\u0001\u0000"+ + "\u0000\u0000\u0390\u0393\u0003v;\u0000\u0391\u0393\u0003x<\u0000\u0392"+ + "\u0390\u0001\u0000\u0000\u0000\u0392\u0391\u0001\u0000\u0000\u0000\u0393"+ + "u\u0001\u0000\u0000\u0000\u0394\u0397\u0003\u0006\u0003\u0000\u0395\u0397"+ + "\u0005\u0003\u0000\u0000\u0396\u0394\u0001\u0000\u0000\u0000\u0396\u0395"+ + "\u0001\u0000\u0000\u0000\u0397w\u0001\u0000\u0000\u0000\u0398\u039c\u0003"+ + "z=\u0000\u0399\u039c\u0003\u0088D\u0000\u039a\u039c\u0003\u008aE\u0000"+ + "\u039b\u0398\u0001\u0000\u0000\u0000\u039b\u0399\u0001\u0000\u0000\u0000"+ + "\u039b\u039a\u0001\u0000\u0000\u0000\u039cy\u0001\u0000\u0000\u0000\u039d"+ + "\u03a0\u0003\u0080@\u0000\u039e\u03a0\u0003\u0086C\u0000\u039f\u039d\u0001"+ + "\u0000\u0000\u0000\u039f\u039e\u0001\u0000\u0000\u0000\u03a0\u03a5\u0001"+ + "\u0000\u0000\u0000\u03a1\u03a4\u0003~?\u0000\u03a2\u03a4\u0003\u0084B"+ + "\u0000\u03a3\u03a1\u0001\u0000\u0000\u0000\u03a3\u03a2\u0001\u0000\u0000"+ + "\u0000\u03a4\u03a7\u0001\u0000\u0000\u0000\u03a5\u03a3\u0001\u0000\u0000"+ + "\u0000\u03a5\u03a6\u0001\u0000\u0000\u0000\u03a6{\u0001\u0000\u0000\u0000"+ + "\u03a7\u03a5\u0001\u0000\u0000\u0000\u03a8\u03aa\u0005f\u0000\u0000\u03a9"+ + "\u03ab\u0003*\u0015\u0000\u03aa\u03a9\u0001\u0000\u0000\u0000\u03aa\u03ab"+ + "\u0001\u0000\u0000\u0000\u03ab\u03b9\u0001\u0000\u0000\u0000\u03ac\u03ad"+ + "\u0003z=\u0000\u03ad\u03b1\u0005A\u0000\u0000\u03ae\u03b0\u0003\u00e6"+ + "s\u0000\u03af\u03ae\u0001\u0000\u0000\u0000\u03b0\u03b3\u0001\u0000\u0000"+ + "\u0000\u03b1\u03af\u0001\u0000\u0000\u0000\u03b1\u03b2\u0001\u0000\u0000"+ + "\u0000\u03b2\u03b4\u0001\u0000\u0000\u0000\u03b3\u03b1\u0001\u0000\u0000"+ + "\u0000\u03b4\u03b6\u0005f\u0000\u0000\u03b5\u03b7\u0003*\u0015\u0000\u03b6"+ + "\u03b5\u0001\u0000\u0000\u0000\u03b6\u03b7\u0001\u0000\u0000\u0000\u03b7"+ + "\u03b9\u0001\u0000\u0000\u0000\u03b8\u03a8\u0001\u0000\u0000\u0000\u03b8"+ + "\u03ac\u0001\u0000\u0000\u0000\u03b9}\u0001\u0000\u0000\u0000\u03ba\u03be"+ + "\u0005A\u0000\u0000\u03bb\u03bd\u0003\u00e6s\u0000\u03bc\u03bb\u0001\u0000"+ + "\u0000\u0000\u03bd\u03c0\u0001\u0000\u0000\u0000\u03be\u03bc\u0001\u0000"+ + "\u0000\u0000\u03be\u03bf\u0001\u0000\u0000\u0000\u03bf\u03c1\u0001\u0000"+ + "\u0000\u0000\u03c0\u03be\u0001\u0000\u0000\u0000\u03c1\u03c3\u0005f\u0000"+ + "\u0000\u03c2\u03c4\u0003*\u0015\u0000\u03c3\u03c2\u0001\u0000\u0000\u0000"+ + "\u03c3\u03c4\u0001\u0000\u0000\u0000\u03c4\u007f\u0001\u0000\u0000\u0000"+ + "\u03c5\u03c7\u0005f\u0000\u0000\u03c6\u03c8\u0003*\u0015\u0000\u03c7\u03c6"+ + "\u0001\u0000\u0000\u0000\u03c7\u03c8\u0001\u0000\u0000\u0000\u03c8\u0081"+ + "\u0001\u0000\u0000\u0000\u03c9\u03ca\u0003|>\u0000\u03ca\u0083\u0001\u0000"+ + "\u0000\u0000\u03cb\u03cc\u0003~?\u0000\u03cc\u0085\u0001\u0000\u0000\u0000"+ + "\u03cd\u03ce\u0003\u0080@\u0000\u03ce\u0087\u0001\u0000\u0000\u0000\u03cf"+ + "\u03d0\u0005f\u0000\u0000\u03d0\u0089\u0001\u0000\u0000\u0000\u03d1\u03d2"+ + "\u0003v;\u0000\u03d2\u03d3\u0003 \u0010\u0000\u03d3\u03db\u0001\u0000"+ + "\u0000\u0000\u03d4\u03d5\u0003z=\u0000\u03d5\u03d6\u0003 \u0010\u0000"+ + "\u03d6\u03db\u0001\u0000\u0000\u0000\u03d7\u03d8\u0003\u0088D\u0000\u03d8"+ + "\u03d9\u0003 \u0010\u0000\u03d9\u03db\u0001\u0000\u0000\u0000\u03da\u03d1"+ + "\u0001\u0000\u0000\u0000\u03da\u03d4\u0001\u0000\u0000\u0000\u03da\u03d7"+ + "\u0001\u0000\u0000\u0000\u03db\u008b\u0001\u0000\u0000\u0000\u03dc\u03de"+ + "\u0003\u008eG\u0000\u03dd\u03dc\u0001\u0000\u0000\u0000\u03de\u03e1\u0001"+ + "\u0000\u0000\u0000\u03df\u03dd\u0001\u0000\u0000\u0000\u03df\u03e0\u0001"+ + "\u0000\u0000\u0000\u03e0\u03e2\u0001\u0000\u0000\u0000\u03e1\u03df\u0001"+ + "\u0000\u0000\u0000\u03e2\u03e3\u0003\u0090H\u0000\u03e3\u03e4\u0003\u00a8"+ + "T\u0000\u03e4\u008d\u0001\u0000\u0000\u0000\u03e5\u03f0\u0003\u00e6s\u0000"+ + "\u03e6\u03f0\u0005#\u0000\u0000\u03e7\u03f0\u0005\"\u0000\u0000\u03e8"+ + "\u03f0\u0005!\u0000\u0000\u03e9\u03f0\u0005\u0001\u0000\u0000\u03ea\u03f0"+ + "\u0005&\u0000\u0000\u03eb\u03f0\u0005\u0012\u0000\u0000\u03ec\u03f0\u0005"+ + "*\u0000\u0000\u03ed\u03f0\u0005\u001e\u0000\u0000\u03ee\u03f0\u0005\'"+ + "\u0000\u0000\u03ef\u03e5\u0001\u0000\u0000\u0000\u03ef\u03e6\u0001\u0000"+ + "\u0000\u0000\u03ef\u03e7\u0001\u0000\u0000\u0000\u03ef\u03e8\u0001\u0000"+ + "\u0000\u0000\u03ef\u03e9\u0001\u0000\u0000\u0000\u03ef\u03ea\u0001\u0000"+ + "\u0000\u0000\u03ef\u03eb\u0001\u0000\u0000\u0000\u03ef\u03ec\u0001\u0000"+ + "\u0000\u0000\u03ef\u03ed\u0001\u0000\u0000\u0000\u03ef\u03ee\u0001\u0000"+ + "\u0000\u0000\u03f0\u008f\u0001\u0000\u0000\u0000\u03f1\u03f2\u0003\u0092"+ + "I\u0000\u03f2\u03f4\u0003\u0094J\u0000\u03f3\u03f5\u0003\u00a2Q\u0000"+ + "\u03f4\u03f3\u0001\u0000\u0000\u0000\u03f4\u03f5\u0001\u0000\u0000\u0000"+ + "\u03f5\u0403\u0001\u0000\u0000\u0000\u03f6\u03fa\u0003X,\u0000\u03f7\u03f9"+ + "\u0003\u00e6s\u0000\u03f8\u03f7\u0001\u0000\u0000\u0000\u03f9\u03fc\u0001"+ + "\u0000\u0000\u0000\u03fa\u03f8\u0001\u0000\u0000\u0000\u03fa\u03fb\u0001"+ + "\u0000\u0000\u0000\u03fb\u03fd\u0001\u0000\u0000\u0000\u03fc\u03fa\u0001"+ + "\u0000\u0000\u0000\u03fd\u03fe\u0003\u0092I\u0000\u03fe\u0400\u0003\u0094"+ + "J\u0000\u03ff\u0401\u0003\u00a2Q\u0000\u0400\u03ff\u0001\u0000\u0000\u0000"+ + "\u0400\u0401\u0001\u0000\u0000\u0000\u0401\u0403\u0001\u0000\u0000\u0000"+ + "\u0402\u03f1\u0001\u0000\u0000\u0000\u0402\u03f6\u0001\u0000\u0000\u0000"+ + "\u0403\u0091\u0001\u0000\u0000\u0000\u0404\u0407\u0003t:\u0000\u0405\u0407"+ + "\u00050\u0000\u0000\u0406\u0404\u0001\u0000\u0000\u0000\u0406\u0405\u0001"+ + "\u0000\u0000\u0000\u0407\u0093\u0001\u0000\u0000\u0000\u0408\u0409\u0005"+ + "f\u0000\u0000\u0409\u040b\u00059\u0000\u0000\u040a\u040c\u0003\u0096K"+ + "\u0000\u040b\u040a\u0001\u0000\u0000\u0000\u040b\u040c\u0001\u0000\u0000"+ + "\u0000\u040c\u040d\u0001\u0000\u0000\u0000\u040d\u040f\u0005:\u0000\u0000"+ + "\u040e\u0410\u0003 \u0010\u0000\u040f\u040e\u0001\u0000\u0000\u0000\u040f"+ + "\u0410\u0001\u0000\u0000\u0000\u0410\u0095\u0001\u0000\u0000\u0000\u0411"+ + "\u0412\u0003\u0098L\u0000\u0412\u0413\u0005@\u0000\u0000\u0413\u0414\u0003"+ + "\u009eO\u0000\u0414\u0417\u0001\u0000\u0000\u0000\u0415\u0417\u0003\u009e"+ + "O\u0000\u0416\u0411\u0001\u0000\u0000\u0000\u0416\u0415\u0001\u0000\u0000"+ + "\u0000\u0417\u0097\u0001\u0000\u0000\u0000\u0418\u041d\u0003\u009aM\u0000"+ + "\u0419\u041a\u0005@\u0000\u0000\u041a\u041c\u0003\u009aM\u0000\u041b\u0419"+ + "\u0001\u0000\u0000\u0000\u041c\u041f\u0001\u0000\u0000\u0000\u041d\u041b"+ + "\u0001\u0000\u0000\u0000\u041d\u041e\u0001\u0000\u0000\u0000\u041e\u0429"+ + "\u0001\u0000\u0000\u0000\u041f\u041d\u0001\u0000\u0000\u0000\u0420\u0425"+ + "\u0003\u00a0P\u0000\u0421\u0422\u0005@\u0000\u0000\u0422\u0424\u0003\u009a"+ + "M\u0000\u0423\u0421\u0001\u0000\u0000\u0000\u0424\u0427\u0001\u0000\u0000"+ + "\u0000\u0425\u0423\u0001\u0000\u0000\u0000\u0425\u0426\u0001\u0000\u0000"+ + "\u0000\u0426\u0429\u0001\u0000\u0000\u0000\u0427\u0425\u0001\u0000\u0000"+ + "\u0000\u0428\u0418\u0001\u0000\u0000\u0000\u0428\u0420\u0001\u0000\u0000"+ + "\u0000\u0429\u0099\u0001\u0000\u0000\u0000\u042a\u042c\u0003\u009cN\u0000"+ + "\u042b\u042a\u0001\u0000\u0000\u0000\u042c\u042f\u0001\u0000\u0000\u0000"+ + "\u042d\u042b\u0001\u0000\u0000\u0000\u042d\u042e\u0001\u0000\u0000\u0000"+ + "\u042e\u0430\u0001\u0000\u0000\u0000\u042f\u042d\u0001\u0000\u0000\u0000"+ + "\u0430\u0431\u0003t:\u0000\u0431\u0432\u0003p8\u0000\u0432\u009b\u0001"+ + "\u0000\u0000\u0000\u0433\u0436\u0003\u00e6s\u0000\u0434\u0436\u0005\u0012"+ + "\u0000\u0000\u0435\u0433\u0001\u0000\u0000\u0000\u0435\u0434\u0001\u0000"+ + "\u0000\u0000\u0436\u009d\u0001\u0000\u0000\u0000\u0437\u0439\u0003\u009c"+ + "N\u0000\u0438\u0437\u0001\u0000\u0000\u0000\u0439\u043c\u0001\u0000\u0000"+ + "\u0000\u043a\u0438\u0001\u0000\u0000\u0000\u043a\u043b\u0001\u0000\u0000"+ + "\u0000\u043b\u043d\u0001\u0000\u0000\u0000\u043c\u043a\u0001\u0000\u0000"+ + "\u0000\u043d\u0441\u0003t:\u0000\u043e\u0440\u0003\u00e6s\u0000\u043f"+ + "\u043e\u0001\u0000\u0000\u0000\u0440\u0443\u0001\u0000\u0000\u0000\u0441"+ + "\u043f\u0001\u0000\u0000\u0000\u0441\u0442\u0001\u0000\u0000\u0000\u0442"+ + "\u0444\u0001\u0000\u0000\u0000\u0443\u0441\u0001\u0000\u0000\u0000\u0444"+ + "\u0445\u0005h\u0000\u0000\u0445\u0446\u0003p8\u0000\u0446\u0449\u0001"+ + "\u0000\u0000\u0000\u0447\u0449\u0003\u009aM\u0000\u0448\u043a\u0001\u0000"+ + "\u0000\u0000\u0448\u0447\u0001\u0000\u0000\u0000\u0449\u009f\u0001\u0000"+ + "\u0000\u0000\u044a\u044c\u0003\u00e6s\u0000\u044b\u044a\u0001\u0000\u0000"+ + "\u0000\u044c\u044f\u0001\u0000\u0000\u0000\u044d\u044b\u0001\u0000\u0000"+ + "\u0000\u044d\u044e\u0001\u0000\u0000\u0000\u044e\u0450\u0001\u0000\u0000"+ + "\u0000\u044f\u044d\u0001\u0000\u0000\u0000\u0450\u0453\u0003t:\u0000\u0451"+ + "\u0452\u0005f\u0000\u0000\u0452\u0454\u0005A\u0000\u0000\u0453\u0451\u0001"+ + "\u0000\u0000\u0000\u0453\u0454\u0001\u0000\u0000\u0000\u0454\u0455\u0001"+ + "\u0000\u0000\u0000\u0455\u0456\u0005+\u0000\u0000\u0456\u00a1\u0001\u0000"+ + "\u0000\u0000\u0457\u0458\u0005-\u0000\u0000\u0458\u0459\u0003\u00a4R\u0000"+ + "\u0459\u00a3\u0001\u0000\u0000\u0000\u045a\u045f\u0003\u00a6S\u0000\u045b"+ + "\u045c\u0005@\u0000\u0000\u045c\u045e\u0003\u00a6S\u0000\u045d\u045b\u0001"+ + "\u0000\u0000\u0000\u045e\u0461\u0001\u0000\u0000\u0000\u045f\u045d\u0001"+ + "\u0000\u0000\u0000\u045f\u0460\u0001\u0000\u0000\u0000\u0460\u00a5\u0001"+ + "\u0000\u0000\u0000\u0461\u045f\u0001\u0000\u0000\u0000\u0462\u0465\u0003"+ + "\u0010\b\u0000\u0463\u0465\u0003\u001c\u000e\u0000\u0464\u0462\u0001\u0000"+ + "\u0000\u0000\u0464\u0463\u0001\u0000\u0000\u0000\u0465\u00a7\u0001\u0000"+ + "\u0000\u0000\u0466\u0469\u0003\u00fc~\u0000\u0467\u0469\u0005?\u0000\u0000"+ + "\u0468\u0466\u0001\u0000\u0000\u0000\u0468\u0467\u0001\u0000\u0000\u0000"+ + "\u0469\u00a9\u0001\u0000\u0000\u0000\u046a\u046b\u0003\u00fc~\u0000\u046b"+ + "\u00ab\u0001\u0000\u0000\u0000\u046c\u046d\u0005&\u0000\u0000\u046d\u046e"+ + "\u0003\u00fc~\u0000\u046e\u00ad\u0001\u0000\u0000\u0000\u046f\u0471\u0003"+ + "\u00b0X\u0000\u0470\u046f\u0001\u0000\u0000\u0000\u0471\u0474\u0001\u0000"+ + "\u0000\u0000\u0472\u0470\u0001\u0000\u0000\u0000\u0472\u0473\u0001\u0000"+ + "\u0000\u0000\u0473\u0475\u0001\u0000\u0000\u0000\u0474\u0472\u0001\u0000"+ + "\u0000\u0000\u0475\u0477\u0003\u00b2Y\u0000\u0476\u0478\u0003\u00a2Q\u0000"+ + "\u0477\u0476\u0001\u0000\u0000\u0000\u0477\u0478\u0001\u0000\u0000\u0000"+ + "\u0478\u0479\u0001\u0000\u0000\u0000\u0479\u047a\u0003\u00b6[\u0000\u047a"+ + "\u00af\u0001\u0000\u0000\u0000\u047b\u0480\u0003\u00e6s\u0000\u047c\u0480"+ + "\u0005#\u0000\u0000\u047d\u0480\u0005\"\u0000\u0000\u047e\u0480\u0005"+ + "!\u0000\u0000\u047f\u047b\u0001\u0000\u0000\u0000\u047f\u047c\u0001\u0000"+ + "\u0000\u0000\u047f\u047d\u0001\u0000\u0000\u0000\u047f\u047e\u0001\u0000"+ + "\u0000\u0000\u0480\u00b1\u0001\u0000\u0000\u0000\u0481\u0483\u0003X,\u0000"+ + "\u0482\u0481\u0001\u0000\u0000\u0000\u0482\u0483\u0001\u0000\u0000\u0000"+ + "\u0483\u0484\u0001\u0000\u0000\u0000\u0484\u0485\u0003\u00b4Z\u0000\u0485"+ + "\u0487\u00059\u0000\u0000\u0486\u0488\u0003\u0096K\u0000\u0487\u0486\u0001"+ + "\u0000\u0000\u0000\u0487\u0488\u0001\u0000\u0000\u0000\u0488\u0489\u0001"+ + "\u0000\u0000\u0000\u0489\u048a\u0005:\u0000\u0000\u048a\u00b3\u0001\u0000"+ + "\u0000\u0000\u048b\u048c\u0005f\u0000\u0000\u048c\u00b5\u0001\u0000\u0000"+ + "\u0000\u048d\u048f\u0005;\u0000\u0000\u048e\u0490\u0003\u00b8\\\u0000"+ + "\u048f\u048e\u0001\u0000\u0000\u0000\u048f\u0490\u0001\u0000\u0000\u0000"+ + "\u0490\u0492\u0001\u0000\u0000\u0000\u0491\u0493\u0003\u00fe\u007f\u0000"+ + "\u0492\u0491\u0001\u0000\u0000\u0000\u0492\u0493\u0001\u0000\u0000\u0000"+ + "\u0493\u0494\u0001\u0000\u0000\u0000\u0494\u0495\u0005<\u0000\u0000\u0495"+ + "\u00b7\u0001\u0000\u0000\u0000\u0496\u0498\u0003*\u0015\u0000\u0497\u0496"+ + "\u0001\u0000\u0000\u0000\u0497\u0498\u0001\u0000\u0000\u0000\u0498\u0499"+ + "\u0001\u0000\u0000\u0000\u0499\u049a\u0005+\u0000\u0000\u049a\u049c\u0005"+ + "9\u0000\u0000\u049b\u049d\u0003\u018e\u00c7\u0000\u049c\u049b\u0001\u0000"+ + "\u0000\u0000\u049c\u049d\u0001\u0000\u0000\u0000\u049d\u049e\u0001\u0000"+ + "\u0000\u0000\u049e\u049f\u0005:\u0000\u0000\u049f\u04c5\u0005?\u0000\u0000"+ + "\u04a0\u04a2\u0003*\u0015\u0000\u04a1\u04a0\u0001\u0000\u0000\u0000\u04a1"+ + "\u04a2\u0001\u0000\u0000\u0000\u04a2\u04a3\u0001\u0000\u0000\u0000\u04a3"+ + "\u04a4\u0005(\u0000\u0000\u04a4\u04a6\u00059\u0000\u0000\u04a5\u04a7\u0003"+ + "\u018e\u00c7\u0000\u04a6\u04a5\u0001\u0000\u0000\u0000\u04a6\u04a7\u0001"+ + "\u0000\u0000\u0000\u04a7\u04a8\u0001\u0000\u0000\u0000\u04a8\u04a9\u0005"+ + ":\u0000\u0000\u04a9\u04c5\u0005?\u0000\u0000\u04aa\u04ab\u0003:\u001d"+ + "\u0000\u04ab\u04ad\u0005A\u0000\u0000\u04ac\u04ae\u0003*\u0015\u0000\u04ad"+ + "\u04ac\u0001\u0000\u0000\u0000\u04ad\u04ae\u0001\u0000\u0000\u0000\u04ae"+ + "\u04af\u0001\u0000\u0000\u0000\u04af\u04b0\u0005(\u0000\u0000\u04b0\u04b2"+ + "\u00059\u0000\u0000\u04b1\u04b3\u0003\u018e\u00c7\u0000\u04b2\u04b1\u0001"+ + "\u0000\u0000\u0000\u04b2\u04b3\u0001\u0000\u0000\u0000\u04b3\u04b4\u0001"+ + "\u0000\u0000\u0000\u04b4\u04b5\u0005:\u0000\u0000\u04b5\u04b6\u0005?\u0000"+ + "\u0000\u04b6\u04c5\u0001\u0000\u0000\u0000\u04b7\u04b8\u0003\u0160\u00b0"+ + "\u0000\u04b8\u04ba\u0005A\u0000\u0000\u04b9\u04bb\u0003*\u0015\u0000\u04ba"+ + "\u04b9\u0001\u0000\u0000\u0000\u04ba\u04bb\u0001\u0000\u0000\u0000\u04bb"+ + "\u04bc\u0001\u0000\u0000\u0000\u04bc\u04bd\u0005(\u0000\u0000\u04bd\u04bf"+ + "\u00059\u0000\u0000\u04be\u04c0\u0003\u018e\u00c7\u0000\u04bf\u04be\u0001"+ + "\u0000\u0000\u0000\u04bf\u04c0\u0001\u0000\u0000\u0000\u04c0\u04c1\u0001"+ + "\u0000\u0000\u0000\u04c1\u04c2\u0005:\u0000\u0000\u04c2\u04c3\u0005?\u0000"+ + "\u0000\u04c3\u04c5\u0001\u0000\u0000\u0000\u04c4\u0497\u0001\u0000\u0000"+ + "\u0000\u04c4\u04a1\u0001\u0000\u0000\u0000\u04c4\u04aa\u0001\u0000\u0000"+ + "\u0000\u04c4\u04b7\u0001\u0000\u0000\u0000\u04c5\u00b9\u0001\u0000\u0000"+ + "\u0000\u04c6\u04c8\u0003V+\u0000\u04c7\u04c6\u0001\u0000\u0000\u0000\u04c8"+ + "\u04cb\u0001\u0000\u0000\u0000\u04c9\u04c7\u0001\u0000\u0000\u0000\u04c9"+ + "\u04ca\u0001\u0000\u0000\u0000\u04ca\u04cc\u0001\u0000\u0000\u0000\u04cb"+ + "\u04c9\u0001\u0000\u0000\u0000\u04cc\u04cd\u0005\u0010\u0000\u0000\u04cd"+ + "\u04cf\u0005f\u0000\u0000\u04ce\u04d0\u0003^/\u0000\u04cf\u04ce\u0001"+ + "\u0000\u0000\u0000\u04cf\u04d0\u0001\u0000\u0000\u0000\u04d0\u04d1\u0001"+ + "\u0000\u0000\u0000\u04d1\u04d2\u0003\u00bc^\u0000\u04d2\u00bb\u0001\u0000"+ + "\u0000\u0000\u04d3\u04d5\u0005;\u0000\u0000\u04d4\u04d6\u0003\u00be_\u0000"+ + "\u04d5\u04d4\u0001\u0000\u0000\u0000\u04d5\u04d6\u0001\u0000\u0000\u0000"+ + "\u04d6\u04d8\u0001\u0000\u0000\u0000\u04d7\u04d9\u0005@\u0000\u0000\u04d8"+ + "\u04d7\u0001\u0000\u0000\u0000\u04d8\u04d9\u0001\u0000\u0000\u0000\u04d9"+ + "\u04db\u0001\u0000\u0000\u0000\u04da\u04dc\u0003\u00c4b\u0000\u04db\u04da"+ + "\u0001\u0000\u0000\u0000\u04db\u04dc\u0001\u0000\u0000\u0000\u04dc\u04dd"+ + "\u0001\u0000\u0000\u0000\u04dd\u04de\u0005<\u0000\u0000\u04de\u00bd\u0001"+ + "\u0000\u0000\u0000\u04df\u04e4\u0003\u00c0`\u0000\u04e0\u04e1\u0005@\u0000"+ + "\u0000\u04e1\u04e3\u0003\u00c0`\u0000\u04e2\u04e0\u0001\u0000\u0000\u0000"+ + "\u04e3\u04e6\u0001\u0000\u0000\u0000\u04e4\u04e2\u0001\u0000\u0000\u0000"+ + "\u04e4\u04e5\u0001\u0000\u0000\u0000\u04e5\u00bf\u0001\u0000\u0000\u0000"+ + "\u04e6\u04e4\u0001\u0000\u0000\u0000\u04e7\u04e9\u0003\u00c2a\u0000\u04e8"+ + "\u04e7\u0001\u0000\u0000\u0000\u04e9\u04ec\u0001\u0000\u0000\u0000\u04ea"+ + "\u04e8\u0001\u0000\u0000\u0000\u04ea\u04eb\u0001\u0000\u0000\u0000\u04eb"+ + "\u04ed\u0001\u0000\u0000\u0000\u04ec\u04ea\u0001\u0000\u0000\u0000\u04ed"+ + "\u04f3\u0005f\u0000\u0000\u04ee\u04f0\u00059\u0000\u0000\u04ef\u04f1\u0003"+ + "\u018e\u00c7\u0000\u04f0\u04ef\u0001\u0000\u0000\u0000\u04f0\u04f1\u0001"+ + "\u0000\u0000\u0000\u04f1\u04f2\u0001\u0000\u0000\u0000\u04f2\u04f4\u0005"+ + ":\u0000\u0000\u04f3\u04ee\u0001\u0000\u0000\u0000\u04f3\u04f4\u0001\u0000"+ + "\u0000\u0000\u04f4\u04f6\u0001\u0000\u0000\u0000\u04f5\u04f7\u0003b1\u0000"+ + "\u04f6\u04f5\u0001\u0000\u0000\u0000\u04f6\u04f7\u0001\u0000\u0000\u0000"+ + "\u04f7\u00c1\u0001\u0000\u0000\u0000\u04f8\u04f9\u0003\u00e6s\u0000\u04f9"+ + "\u00c3\u0001\u0000\u0000\u0000\u04fa\u04fe\u0005?\u0000\u0000\u04fb\u04fd"+ + "\u0003d2\u0000\u04fc\u04fb\u0001\u0000\u0000\u0000\u04fd\u0500\u0001\u0000"+ + "\u0000\u0000\u04fe\u04fc\u0001\u0000\u0000\u0000\u04fe\u04ff\u0001\u0000"+ + "\u0000\u0000\u04ff\u00c5\u0001\u0000\u0000\u0000\u0500\u04fe\u0001\u0000"+ + "\u0000\u0000\u0501\u0504\u0003\u00c8d\u0000\u0502\u0504\u0003\u00dam\u0000"+ + "\u0503\u0501\u0001\u0000\u0000\u0000\u0503\u0502\u0001\u0000\u0000\u0000"+ + "\u0504\u00c7\u0001\u0000\u0000\u0000\u0505\u0507\u0003\u00cae\u0000\u0506"+ + "\u0505\u0001\u0000\u0000\u0000\u0507\u050a\u0001\u0000\u0000\u0000\u0508"+ + "\u0506\u0001\u0000\u0000\u0000\u0508\u0509\u0001\u0000\u0000\u0000\u0509"+ + "\u050b\u0001\u0000\u0000\u0000\u050a\u0508\u0001\u0000\u0000\u0000\u050b"+ + "\u050c\u0005\u001c\u0000\u0000\u050c\u050e\u0005f\u0000\u0000\u050d\u050f"+ + "\u0003X,\u0000\u050e\u050d\u0001\u0000\u0000\u0000\u050e\u050f\u0001\u0000"+ + "\u0000\u0000\u050f\u0511\u0001\u0000\u0000\u0000\u0510\u0512\u0003\u00cc"+ + "f\u0000\u0511\u0510\u0001\u0000\u0000\u0000\u0511\u0512\u0001\u0000\u0000"+ + "\u0000\u0512\u0513\u0001\u0000\u0000\u0000\u0513\u0514\u0003\u00ceg\u0000"+ + "\u0514\u00c9\u0001\u0000\u0000\u0000\u0515\u051d\u0003\u00e6s\u0000\u0516"+ + "\u051d\u0005#\u0000\u0000\u0517\u051d\u0005\"\u0000\u0000\u0518\u051d"+ + "\u0005!\u0000\u0000\u0519\u051d\u0005\u0001\u0000\u0000\u051a\u051d\u0005"+ + "&\u0000\u0000\u051b\u051d\u0005\'\u0000\u0000\u051c\u0515\u0001\u0000"+ + "\u0000\u0000\u051c\u0516\u0001\u0000\u0000\u0000\u051c\u0517\u0001\u0000"+ + "\u0000\u0000\u051c\u0518\u0001\u0000\u0000\u0000\u051c\u0519\u0001\u0000"+ + "\u0000\u0000\u051c\u051a\u0001\u0000\u0000\u0000\u051c\u051b\u0001\u0000"+ + "\u0000\u0000\u051d\u00cb\u0001\u0000\u0000\u0000\u051e\u051f\u0005\u0011"+ + "\u0000\u0000\u051f\u0520\u0003`0\u0000\u0520\u00cd\u0001\u0000\u0000\u0000"+ + "\u0521\u0525\u0005;\u0000\u0000\u0522\u0524\u0003\u00d0h\u0000\u0523\u0522"+ + "\u0001\u0000\u0000\u0000\u0524\u0527\u0001\u0000\u0000\u0000\u0525\u0523"+ + "\u0001\u0000\u0000\u0000\u0525\u0526\u0001\u0000\u0000\u0000\u0526\u0528"+ + "\u0001\u0000\u0000\u0000\u0527\u0525\u0001\u0000\u0000\u0000\u0528\u0529"+ + "\u0005<\u0000\u0000\u0529\u00cf\u0001\u0000\u0000\u0000\u052a\u0530\u0003"+ + "\u00d2i\u0000\u052b\u0530\u0003\u00d6k\u0000\u052c\u0530\u0003R)\u0000"+ + "\u052d\u0530\u0003\u00c6c\u0000\u052e\u0530\u0005?\u0000\u0000\u052f\u052a"+ + "\u0001\u0000\u0000\u0000\u052f\u052b\u0001\u0000\u0000\u0000\u052f\u052c"+ + "\u0001\u0000\u0000\u0000\u052f\u052d\u0001\u0000\u0000\u0000\u052f\u052e"+ + "\u0001\u0000\u0000\u0000\u0530\u00d1\u0001\u0000\u0000\u0000\u0531\u0533"+ + "\u0003\u00d4j\u0000\u0532\u0531\u0001\u0000\u0000\u0000\u0533\u0536\u0001"+ + "\u0000\u0000\u0000\u0534\u0532\u0001\u0000\u0000\u0000\u0534\u0535\u0001"+ + "\u0000\u0000\u0000\u0535\u0537\u0001\u0000\u0000\u0000\u0536\u0534\u0001"+ + "\u0000\u0000\u0000\u0537\u0538\u0003t:\u0000\u0538\u0539\u0003l6\u0000"+ + "\u0539\u053a\u0005?\u0000\u0000\u053a\u00d3\u0001\u0000\u0000\u0000\u053b"+ + "\u0540\u0003\u00e6s\u0000\u053c\u0540\u0005#\u0000\u0000\u053d\u0540\u0005"+ + "&\u0000\u0000\u053e\u0540\u0005\u0012\u0000\u0000\u053f\u053b\u0001\u0000"+ + "\u0000\u0000\u053f\u053c\u0001\u0000\u0000\u0000\u053f\u053d\u0001\u0000"+ + "\u0000\u0000\u053f\u053e\u0001\u0000\u0000\u0000\u0540\u00d5\u0001\u0000"+ + "\u0000\u0000\u0541\u0543\u0003\u00d8l\u0000\u0542\u0541\u0001\u0000\u0000"+ + "\u0000\u0543\u0546\u0001\u0000\u0000\u0000\u0544\u0542\u0001\u0000\u0000"+ + "\u0000\u0544\u0545\u0001\u0000\u0000\u0000\u0545\u0547\u0001\u0000\u0000"+ + "\u0000\u0546\u0544\u0001\u0000\u0000\u0000\u0547\u0548\u0003\u0090H\u0000"+ + "\u0548\u0549\u0003\u00a8T\u0000\u0549\u00d7\u0001\u0000\u0000\u0000\u054a"+ + "\u0551\u0003\u00e6s\u0000\u054b\u0551\u0005#\u0000\u0000\u054c\u0551\u0005"+ + "\u0001\u0000\u0000\u054d\u0551\u0005\f\u0000\u0000\u054e\u0551\u0005&"+ + "\u0000\u0000\u054f\u0551\u0005\'\u0000\u0000\u0550\u054a\u0001\u0000\u0000"+ + "\u0000\u0550\u054b\u0001\u0000\u0000\u0000\u0550\u054c\u0001\u0000\u0000"+ + "\u0000\u0550\u054d\u0001\u0000\u0000\u0000\u0550\u054e\u0001\u0000\u0000"+ + "\u0000\u0550\u054f\u0001\u0000\u0000\u0000\u0551\u00d9\u0001\u0000\u0000"+ + "\u0000\u0552\u0554\u0003\u00cae\u0000\u0553\u0552\u0001\u0000\u0000\u0000"+ + "\u0554\u0557\u0001\u0000\u0000\u0000\u0555\u0553\u0001\u0000\u0000\u0000"+ + "\u0555\u0556\u0001\u0000\u0000\u0000\u0556\u0558\u0001\u0000\u0000\u0000"+ + "\u0557\u0555\u0001\u0000\u0000\u0000\u0558\u0559\u0005g\u0000\u0000\u0559"+ + "\u055a\u0005\u001c\u0000\u0000\u055a\u055b\u0005f\u0000\u0000\u055b\u055c"+ + "\u0003\u00dcn\u0000\u055c\u00db\u0001\u0000\u0000\u0000\u055d\u0561\u0005"+ + ";\u0000\u0000\u055e\u0560\u0003\u00deo\u0000\u055f\u055e\u0001\u0000\u0000"+ + "\u0000\u0560\u0563\u0001\u0000\u0000\u0000\u0561\u055f\u0001\u0000\u0000"+ + "\u0000\u0561\u0562\u0001\u0000\u0000\u0000\u0562\u0564\u0001\u0000\u0000"+ + "\u0000\u0563\u0561\u0001\u0000\u0000\u0000\u0564\u0565\u0005<\u0000\u0000"+ + "\u0565\u00dd\u0001\u0000\u0000\u0000\u0566\u056c\u0003\u00e0p\u0000\u0567"+ + "\u056c\u0003\u00d2i\u0000\u0568\u056c\u0003R)\u0000\u0569\u056c\u0003"+ + "\u00c6c\u0000\u056a\u056c\u0005?\u0000\u0000\u056b\u0566\u0001\u0000\u0000"+ + "\u0000\u056b\u0567\u0001\u0000\u0000\u0000\u056b\u0568\u0001\u0000\u0000"+ + "\u0000\u056b\u0569\u0001\u0000\u0000\u0000\u056b\u056a\u0001\u0000\u0000"+ + "\u0000\u056c\u00df\u0001\u0000\u0000\u0000\u056d\u056f\u0003\u00e2q\u0000"+ + "\u056e\u056d\u0001\u0000\u0000\u0000\u056f\u0572\u0001\u0000\u0000\u0000"+ + "\u0570\u056e\u0001\u0000\u0000\u0000\u0570\u0571\u0001\u0000\u0000\u0000"+ + "\u0571\u0573\u0001\u0000\u0000\u0000\u0572\u0570\u0001\u0000\u0000\u0000"+ + "\u0573\u0574\u0003t:\u0000\u0574\u0575\u0005f\u0000\u0000\u0575\u0576"+ + "\u00059\u0000\u0000\u0576\u0578\u0005:\u0000\u0000\u0577\u0579\u0003 "+ + "\u0010\u0000\u0578\u0577\u0001\u0000\u0000\u0000\u0578\u0579\u0001\u0000"+ + "\u0000\u0000\u0579\u057b\u0001\u0000\u0000\u0000\u057a\u057c\u0003\u00e4"+ + "r\u0000\u057b\u057a\u0001\u0000\u0000\u0000\u057b\u057c\u0001\u0000\u0000"+ + "\u0000\u057c\u057d\u0001\u0000\u0000\u0000\u057d\u057e\u0005?\u0000\u0000"+ + "\u057e\u00e1\u0001\u0000\u0000\u0000\u057f\u0583\u0003\u00e6s\u0000\u0580"+ + "\u0583\u0005#\u0000\u0000\u0581\u0583\u0005\u0001\u0000\u0000\u0582\u057f"+ + "\u0001\u0000\u0000\u0000\u0582\u0580\u0001\u0000\u0000\u0000\u0582\u0581"+ + "\u0001\u0000\u0000\u0000\u0583\u00e3\u0001\u0000\u0000\u0000\u0584\u0585"+ + "\u0005\f\u0000\u0000\u0585\u0586\u0003\u00eew\u0000\u0586\u00e5\u0001"+ + "\u0000\u0000\u0000\u0587\u058b\u0003\u00e8t\u0000\u0588\u058b\u0003\u00f4"+ + "z\u0000\u0589\u058b\u0003\u00f6{\u0000\u058a\u0587\u0001\u0000\u0000\u0000"+ + "\u058a\u0588\u0001\u0000\u0000\u0000\u058a\u0589\u0001\u0000\u0000\u0000"+ + "\u058b\u00e7\u0001\u0000\u0000\u0000\u058c\u058d\u0005g\u0000\u0000\u058d"+ + "\u058e\u00036\u001b\u0000\u058e\u0590\u00059\u0000\u0000\u058f\u0591\u0003"+ + "\u00eau\u0000\u0590\u058f\u0001\u0000\u0000\u0000\u0590\u0591\u0001\u0000"+ + "\u0000\u0000\u0591\u0592\u0001\u0000\u0000\u0000\u0592\u0593\u0005:\u0000"+ + "\u0000\u0593\u00e9\u0001\u0000\u0000\u0000\u0594\u0599\u0003\u00ecv\u0000"+ + "\u0595\u0596\u0005@\u0000\u0000\u0596\u0598\u0003\u00ecv\u0000\u0597\u0595"+ + "\u0001\u0000\u0000\u0000\u0598\u059b\u0001\u0000\u0000\u0000\u0599\u0597"+ + "\u0001\u0000\u0000\u0000\u0599\u059a\u0001\u0000\u0000\u0000\u059a\u00eb"+ + "\u0001\u0000\u0000\u0000\u059b\u0599\u0001\u0000\u0000\u0000\u059c\u059d"+ + "\u0005f\u0000\u0000\u059d\u059e\u0005B\u0000\u0000\u059e\u059f\u0003\u00ee"+ + "w\u0000\u059f\u00ed\u0001\u0000\u0000\u0000\u05a0\u05a4\u0003\u01b0\u00d8"+ + "\u0000\u05a1\u05a4\u0003\u00f0x\u0000\u05a2\u05a4\u0003\u00e6s\u0000\u05a3"+ + "\u05a0\u0001\u0000\u0000\u0000\u05a3\u05a1\u0001\u0000\u0000\u0000\u05a3"+ + "\u05a2\u0001\u0000\u0000\u0000\u05a4\u00ef\u0001\u0000\u0000\u0000\u05a5"+ + "\u05a7\u0005;\u0000\u0000\u05a6\u05a8\u0003\u00f2y\u0000\u05a7\u05a6\u0001"+ + "\u0000\u0000\u0000\u05a7\u05a8\u0001\u0000\u0000\u0000\u05a8\u05aa\u0001"+ + "\u0000\u0000\u0000\u05a9\u05ab\u0005@\u0000\u0000\u05aa\u05a9\u0001\u0000"+ + "\u0000\u0000\u05aa\u05ab\u0001\u0000\u0000\u0000\u05ab\u05ac\u0001\u0000"+ + "\u0000\u0000\u05ac\u05ad\u0005<\u0000\u0000\u05ad\u00f1\u0001\u0000\u0000"+ + "\u0000\u05ae\u05b3\u0003\u00eew\u0000\u05af\u05b0\u0005@\u0000\u0000\u05b0"+ + "\u05b2\u0003\u00eew\u0000\u05b1\u05af\u0001\u0000\u0000\u0000\u05b2\u05b5"+ + "\u0001\u0000\u0000\u0000\u05b3\u05b1\u0001\u0000\u0000\u0000\u05b3\u05b4"+ + "\u0001\u0000\u0000\u0000\u05b4\u00f3\u0001\u0000\u0000\u0000\u05b5\u05b3"+ + "\u0001\u0000\u0000\u0000\u05b6\u05b7\u0005g\u0000\u0000\u05b7\u05b8\u0003"+ + "6\u001b\u0000\u05b8\u00f5\u0001\u0000\u0000\u0000\u05b9\u05ba\u0005g\u0000"+ + "\u0000\u05ba\u05bb\u00036\u001b\u0000\u05bb\u05bc\u00059\u0000\u0000\u05bc"+ + "\u05bd\u0003\u00eew\u0000\u05bd\u05be\u0005:\u0000\u0000\u05be\u00f7\u0001"+ + "\u0000\u0000\u0000\u05bf\u05c1\u0005;\u0000\u0000\u05c0\u05c2\u0003\u00fa"+ + "}\u0000\u05c1\u05c0\u0001\u0000\u0000\u0000\u05c1\u05c2\u0001\u0000\u0000"+ + "\u0000\u05c2\u05c4\u0001\u0000\u0000\u0000\u05c3\u05c5\u0005@\u0000\u0000"+ + "\u05c4\u05c3\u0001\u0000\u0000\u0000\u05c4\u05c5\u0001\u0000\u0000\u0000"+ + "\u05c5\u05c6\u0001\u0000\u0000\u0000\u05c6\u05c7\u0005<\u0000\u0000\u05c7"+ + "\u00f9\u0001\u0000\u0000\u0000\u05c8\u05cd\u0003r9\u0000\u05c9\u05ca\u0005"+ + "@\u0000\u0000\u05ca\u05cc\u0003r9\u0000\u05cb\u05c9\u0001\u0000\u0000"+ + "\u0000\u05cc\u05cf\u0001\u0000\u0000\u0000\u05cd\u05cb\u0001\u0000\u0000"+ + "\u0000\u05cd\u05ce\u0001\u0000\u0000\u0000\u05ce\u00fb\u0001\u0000\u0000"+ + "\u0000\u05cf\u05cd\u0001\u0000\u0000\u0000\u05d0\u05d2\u0005;\u0000\u0000"+ + "\u05d1\u05d3\u0003\u00fe\u007f\u0000\u05d2\u05d1\u0001\u0000\u0000\u0000"+ + "\u05d2\u05d3\u0001\u0000\u0000\u0000\u05d3\u05d4\u0001\u0000\u0000\u0000"+ + "\u05d4\u05d5\u0005<\u0000\u0000\u05d5\u00fd\u0001\u0000\u0000\u0000\u05d6"+ + "\u05da\u0003\u0100\u0080\u0000\u05d7\u05d9\u0003\u0100\u0080\u0000\u05d8"+ + "\u05d7\u0001\u0000\u0000\u0000\u05d9\u05dc\u0001\u0000\u0000\u0000\u05da"+ + "\u05d8\u0001\u0000\u0000\u0000\u05da\u05db\u0001\u0000\u0000\u0000\u05db"+ + "\u00ff\u0001\u0000\u0000\u0000\u05dc\u05da\u0001\u0000\u0000\u0000\u05dd"+ + "\u05e1\u0003\u0102\u0081\u0000\u05de\u05e1\u0003R)\u0000\u05df\u05e1\u0003"+ + "\u0106\u0083\u0000\u05e0\u05dd\u0001\u0000\u0000\u0000\u05e0\u05de\u0001"+ + "\u0000\u0000\u0000\u05e0\u05df\u0001\u0000\u0000\u0000\u05e1\u0101\u0001"+ + "\u0000\u0000\u0000\u05e2\u05e3\u0003\u0104\u0082\u0000\u05e3\u05e4\u0005"+ + "?\u0000\u0000\u05e4\u0103\u0001\u0000\u0000\u0000\u05e5\u05e7\u0003\u009c"+ + "N\u0000\u05e6\u05e5\u0001\u0000\u0000\u0000\u05e7\u05ea\u0001\u0000\u0000"+ + "\u0000\u05e8\u05e6\u0001\u0000\u0000\u0000\u05e8\u05e9\u0001\u0000\u0000"+ + "\u0000\u05e9\u05eb\u0001\u0000\u0000\u0000\u05ea\u05e8\u0001\u0000\u0000"+ + "\u0000\u05eb\u05ec\u0003t:\u0000\u05ec\u05ed\u0003l6\u0000\u05ed\u0105"+ + "\u0001\u0000\u0000\u0000\u05ee\u05f5\u0003\u010a\u0085\u0000\u05ef\u05f5"+ + "\u0003\u010e\u0087\u0000\u05f0\u05f5\u0003\u0116\u008b\u0000\u05f1\u05f5"+ + "\u0003\u0118\u008c\u0000\u05f2\u05f5\u0003\u012a\u0095\u0000\u05f3\u05f5"+ + "\u0003\u0130\u0098\u0000\u05f4\u05ee\u0001\u0000\u0000\u0000\u05f4\u05ef"+ + "\u0001\u0000\u0000\u0000\u05f4\u05f0\u0001\u0000\u0000\u0000\u05f4\u05f1"+ + "\u0001\u0000\u0000\u0000\u05f4\u05f2\u0001\u0000\u0000\u0000\u05f4\u05f3"+ + "\u0001\u0000\u0000\u0000\u05f5\u0107\u0001\u0000\u0000\u0000\u05f6\u05fc"+ + "\u0003\u010a\u0085\u0000\u05f7\u05fc\u0003\u0110\u0088\u0000\u05f8\u05fc"+ + "\u0003\u011a\u008d\u0000\u05f9\u05fc\u0003\u012c\u0096\u0000\u05fa\u05fc"+ + "\u0003\u0132\u0099\u0000\u05fb\u05f6\u0001\u0000\u0000\u0000\u05fb\u05f7"+ + "\u0001\u0000\u0000\u0000\u05fb\u05f8\u0001\u0000\u0000\u0000\u05fb\u05f9"+ + "\u0001\u0000\u0000\u0000\u05fb\u05fa\u0001\u0000\u0000\u0000\u05fc\u0109"+ + "\u0001\u0000\u0000\u0000\u05fd\u060a\u0003\u00fc~\u0000\u05fe\u060a\u0003"+ + "\u010c\u0086\u0000\u05ff\u060a\u0003\u0112\u0089\u0000\u0600\u060a\u0003"+ + "\u011c\u008e\u0000\u0601\u060a\u0003\u011e\u008f\u0000\u0602\u060a\u0003"+ + "\u012e\u0097\u0000\u0603\u060a\u0003\u0142\u00a1\u0000\u0604\u060a\u0003"+ + "\u0144\u00a2\u0000\u0605\u060a\u0003\u0146\u00a3\u0000\u0606\u060a\u0003"+ + "\u014a\u00a5\u0000\u0607\u060a\u0003\u0148\u00a4\u0000\u0608\u060a\u0003"+ + "\u014c\u00a6\u0000\u0609\u05fd\u0001\u0000\u0000\u0000\u0609\u05fe\u0001"+ + "\u0000\u0000\u0000\u0609\u05ff\u0001\u0000\u0000\u0000\u0609\u0600\u0001"+ + "\u0000\u0000\u0000\u0609\u0601\u0001\u0000\u0000\u0000\u0609\u0602\u0001"+ + "\u0000\u0000\u0000\u0609\u0603\u0001\u0000\u0000\u0000\u0609\u0604\u0001"+ + "\u0000\u0000\u0000\u0609\u0605\u0001\u0000\u0000\u0000\u0609\u0606\u0001"+ + "\u0000\u0000\u0000\u0609\u0607\u0001\u0000\u0000\u0000\u0609\u0608\u0001"+ + "\u0000\u0000\u0000\u060a\u010b\u0001\u0000\u0000\u0000\u060b\u060c\u0005"+ + "?\u0000\u0000\u060c\u010d\u0001\u0000\u0000\u0000\u060d\u060e\u0005f\u0000"+ + "\u0000\u060e\u060f\u0005H\u0000\u0000\u060f\u0610\u0003\u0106\u0083\u0000"+ + "\u0610\u010f\u0001\u0000\u0000\u0000\u0611\u0612\u0005f\u0000\u0000\u0612"+ + "\u0613\u0005H\u0000\u0000\u0613\u0614\u0003\u0108\u0084\u0000\u0614\u0111"+ + "\u0001\u0000\u0000\u0000\u0615\u0616\u0003\u0114\u008a\u0000\u0616\u0617"+ + "\u0005?\u0000\u0000\u0617\u0113\u0001\u0000\u0000\u0000\u0618\u0620\u0003"+ + "\u01aa\u00d5\u0000\u0619\u0620\u0003\u01c8\u00e4\u0000\u061a\u0620\u0003"+ + "\u01ca\u00e5\u0000\u061b\u0620\u0003\u01d0\u00e8\u0000\u061c\u0620\u0003"+ + "\u01d4\u00ea\u0000\u061d\u0620\u0003\u0188\u00c4\u0000\u061e\u0620\u0003"+ + "\u0174\u00ba\u0000\u061f\u0618\u0001\u0000\u0000\u0000\u061f\u0619\u0001"+ + "\u0000\u0000\u0000\u061f\u061a\u0001\u0000\u0000\u0000\u061f\u061b\u0001"+ + "\u0000\u0000\u0000\u061f\u061c\u0001\u0000\u0000\u0000\u061f\u061d\u0001"+ + "\u0000\u0000\u0000\u061f\u061e\u0001\u0000\u0000\u0000\u0620\u0115\u0001"+ + "\u0000\u0000\u0000\u0621\u0622\u0005\u0016\u0000\u0000\u0622\u0623\u0005"+ + "9\u0000\u0000\u0623\u0624\u0003\u019e\u00cf\u0000\u0624\u0625\u0005:\u0000"+ + "\u0000\u0625\u0626\u0003\u0106\u0083\u0000\u0626\u0117\u0001\u0000\u0000"+ + "\u0000\u0627\u0628\u0005\u0016\u0000\u0000\u0628\u0629\u00059\u0000\u0000"+ + "\u0629\u062a\u0003\u019e\u00cf\u0000\u062a\u062b\u0005:\u0000\u0000\u062b"+ + "\u062c\u0003\u0108\u0084\u0000\u062c\u062d\u0005\u000f\u0000\u0000\u062d"+ + "\u062e\u0003\u0106\u0083\u0000\u062e\u0119\u0001\u0000\u0000\u0000\u062f"+ + "\u0630\u0005\u0016\u0000\u0000\u0630\u0631\u00059\u0000\u0000\u0631\u0632"+ + "\u0003\u019e\u00cf\u0000\u0632\u0633\u0005:\u0000\u0000\u0633\u0634\u0003"+ + "\u0108\u0084\u0000\u0634\u0635\u0005\u000f\u0000\u0000\u0635\u0636\u0003"+ + "\u0108\u0084\u0000\u0636\u011b\u0001\u0000\u0000\u0000\u0637\u0638\u0005"+ + "\u0002\u0000\u0000\u0638\u0639\u0003\u019e\u00cf\u0000\u0639\u063a\u0005"+ + "?\u0000\u0000\u063a\u0642\u0001\u0000\u0000\u0000\u063b\u063c\u0005\u0002"+ + "\u0000\u0000\u063c\u063d\u0003\u019e\u00cf\u0000\u063d\u063e\u0005H\u0000"+ + "\u0000\u063e\u063f\u0003\u019e\u00cf\u0000\u063f\u0640\u0005?\u0000\u0000"+ + "\u0640\u0642\u0001\u0000\u0000\u0000\u0641\u0637\u0001\u0000\u0000\u0000"+ + "\u0641\u063b\u0001\u0000\u0000\u0000\u0642\u011d\u0001\u0000\u0000\u0000"+ + "\u0643\u0644\u0005)\u0000\u0000\u0644\u0645\u00059\u0000\u0000\u0645\u0646"+ + "\u0003\u019e\u00cf\u0000\u0646\u0647\u0005:\u0000\u0000\u0647\u0648\u0003"+ + "\u0120\u0090\u0000\u0648\u011f\u0001\u0000\u0000\u0000\u0649\u064d\u0005"+ + ";\u0000\u0000\u064a\u064c\u0003\u0122\u0091\u0000\u064b\u064a\u0001\u0000"+ + "\u0000\u0000\u064c\u064f\u0001\u0000\u0000\u0000\u064d\u064b\u0001\u0000"+ + "\u0000\u0000\u064d\u064e\u0001\u0000\u0000\u0000\u064e\u0653\u0001\u0000"+ + "\u0000\u0000\u064f\u064d\u0001\u0000\u0000\u0000\u0650\u0652\u0003\u0126"+ + "\u0093\u0000\u0651\u0650\u0001\u0000\u0000\u0000\u0652\u0655\u0001\u0000"+ + "\u0000\u0000\u0653\u0651\u0001\u0000\u0000\u0000\u0653\u0654\u0001\u0000"+ + "\u0000\u0000\u0654\u0656\u0001\u0000\u0000\u0000\u0655\u0653\u0001\u0000"+ + "\u0000\u0000\u0656\u0657\u0005<\u0000\u0000\u0657\u0121\u0001\u0000\u0000"+ + "\u0000\u0658\u0659\u0003\u0124\u0092\u0000\u0659\u065a\u0003\u00fe\u007f"+ + "\u0000\u065a\u0123\u0001\u0000\u0000\u0000\u065b\u065f\u0003\u0126\u0093"+ + "\u0000\u065c\u065e\u0003\u0126\u0093\u0000\u065d\u065c\u0001\u0000\u0000"+ + "\u0000\u065e\u0661\u0001\u0000\u0000\u0000\u065f\u065d\u0001\u0000\u0000"+ + "\u0000\u065f\u0660\u0001\u0000\u0000\u0000\u0660\u0125\u0001\u0000\u0000"+ + "\u0000\u0661\u065f\u0001\u0000\u0000\u0000\u0662\u0663\u0005\u0006\u0000"+ + "\u0000\u0663\u0664\u0003\u019c\u00ce\u0000\u0664\u0665\u0005H\u0000\u0000"+ + "\u0665\u066d\u0001\u0000\u0000\u0000\u0666\u0667\u0005\u0006\u0000\u0000"+ + "\u0667\u0668\u0003\u0128\u0094\u0000\u0668\u0669\u0005H\u0000\u0000\u0669"+ + "\u066d\u0001\u0000\u0000\u0000\u066a\u066b\u0005\f\u0000\u0000\u066b\u066d"+ + "\u0005H\u0000\u0000\u066c\u0662\u0001\u0000\u0000\u0000\u066c\u0666\u0001"+ + "\u0000\u0000\u0000\u066c\u066a\u0001\u0000\u0000\u0000\u066d\u0127\u0001"+ + "\u0000\u0000\u0000\u066e\u066f\u0005f\u0000\u0000\u066f\u0129\u0001\u0000"+ + "\u0000\u0000\u0670\u0671\u00052\u0000\u0000\u0671\u0672\u00059\u0000\u0000"+ + "\u0672\u0673\u0003\u019e\u00cf\u0000\u0673\u0674\u0005:\u0000\u0000\u0674"+ + "\u0675\u0003\u0106\u0083\u0000\u0675\u012b\u0001\u0000\u0000\u0000\u0676"+ + "\u0677\u00052\u0000\u0000\u0677\u0678\u00059\u0000\u0000\u0678\u0679\u0003"+ + "\u019e\u00cf\u0000\u0679\u067a\u0005:\u0000\u0000\u067a\u067b\u0003\u0108"+ + "\u0084\u0000\u067b\u012d\u0001\u0000\u0000\u0000\u067c\u067d\u0005\r\u0000"+ + "\u0000\u067d\u067e\u0003\u0106\u0083\u0000\u067e\u067f\u00052\u0000\u0000"+ + "\u067f\u0680\u00059\u0000\u0000\u0680\u0681\u0003\u019e\u00cf\u0000\u0681"+ + "\u0682\u0005:\u0000\u0000\u0682\u0683\u0005?\u0000\u0000\u0683\u012f\u0001"+ + "\u0000\u0000\u0000\u0684\u0687\u0003\u0134\u009a\u0000\u0685\u0687\u0003"+ + "\u013e\u009f\u0000\u0686\u0684\u0001\u0000\u0000\u0000\u0686\u0685\u0001"+ + "\u0000\u0000\u0000\u0687\u0131\u0001\u0000\u0000\u0000\u0688\u068b\u0003"+ + "\u0136\u009b\u0000\u0689\u068b\u0003\u0140\u00a0\u0000\u068a\u0688\u0001"+ + "\u0000\u0000\u0000\u068a\u0689\u0001\u0000\u0000\u0000\u068b\u0133\u0001"+ + "\u0000\u0000\u0000\u068c\u068d\u0005\u0015\u0000\u0000\u068d\u068f\u0005"+ + "9\u0000\u0000\u068e\u0690\u0003\u0138\u009c\u0000\u068f\u068e\u0001\u0000"+ + "\u0000\u0000\u068f\u0690\u0001\u0000\u0000\u0000\u0690\u0691\u0001\u0000"+ + "\u0000\u0000\u0691\u0693\u0005?\u0000\u0000\u0692\u0694\u0003\u019e\u00cf"+ + "\u0000\u0693\u0692\u0001\u0000\u0000\u0000\u0693\u0694\u0001\u0000\u0000"+ + "\u0000\u0694\u0695\u0001\u0000\u0000\u0000\u0695\u0697\u0005?\u0000\u0000"+ + "\u0696\u0698\u0003\u013a\u009d\u0000\u0697\u0696\u0001\u0000\u0000\u0000"+ + "\u0697\u0698\u0001\u0000\u0000\u0000\u0698\u0699\u0001\u0000\u0000\u0000"+ + "\u0699\u069a\u0005:\u0000\u0000\u069a\u069b\u0003\u0106\u0083\u0000\u069b"+ + "\u0135\u0001\u0000\u0000\u0000\u069c\u069d\u0005\u0015\u0000\u0000\u069d"+ + "\u069f\u00059\u0000\u0000\u069e\u06a0\u0003\u0138\u009c\u0000\u069f\u069e"+ + "\u0001\u0000\u0000\u0000\u069f\u06a0\u0001\u0000\u0000\u0000\u06a0\u06a1"+ + "\u0001\u0000\u0000\u0000\u06a1\u06a3\u0005?\u0000\u0000\u06a2\u06a4\u0003"+ + "\u019e\u00cf\u0000\u06a3\u06a2\u0001\u0000\u0000\u0000\u06a3\u06a4\u0001"+ + "\u0000\u0000\u0000\u06a4\u06a5\u0001\u0000\u0000\u0000\u06a5\u06a7\u0005"+ + "?\u0000\u0000\u06a6\u06a8\u0003\u013a\u009d\u0000\u06a7\u06a6\u0001\u0000"+ + "\u0000\u0000\u06a7\u06a8\u0001\u0000\u0000\u0000\u06a8\u06a9\u0001\u0000"+ + "\u0000\u0000\u06a9\u06aa\u0005:\u0000\u0000\u06aa\u06ab\u0003\u0108\u0084"+ + "\u0000\u06ab\u0137\u0001\u0000\u0000\u0000\u06ac\u06af\u0003\u013c\u009e"+ + "\u0000\u06ad\u06af\u0003\u0104\u0082\u0000\u06ae\u06ac\u0001\u0000\u0000"+ + "\u0000\u06ae\u06ad\u0001\u0000\u0000\u0000\u06af\u0139\u0001\u0000\u0000"+ + "\u0000\u06b0\u06b1\u0003\u013c\u009e\u0000\u06b1\u013b\u0001\u0000\u0000"+ + "\u0000\u06b2\u06b7\u0003\u0114\u008a\u0000\u06b3\u06b4\u0005@\u0000\u0000"+ + "\u06b4\u06b6\u0003\u0114\u008a\u0000\u06b5\u06b3\u0001\u0000\u0000\u0000"+ + "\u06b6\u06b9\u0001\u0000\u0000\u0000\u06b7\u06b5\u0001\u0000\u0000\u0000"+ + "\u06b7\u06b8\u0001\u0000\u0000\u0000\u06b8\u013d\u0001\u0000\u0000\u0000"+ + "\u06b9\u06b7\u0001\u0000\u0000\u0000\u06ba\u06bb\u0005\u0015\u0000\u0000"+ + "\u06bb\u06bf\u00059\u0000\u0000\u06bc\u06be\u0003\u009cN\u0000\u06bd\u06bc"+ + "\u0001\u0000\u0000\u0000\u06be\u06c1\u0001\u0000\u0000\u0000\u06bf\u06bd"+ + "\u0001\u0000\u0000\u0000\u06bf\u06c0\u0001\u0000\u0000\u0000\u06c0\u06c2"+ + "\u0001\u0000\u0000\u0000\u06c1\u06bf\u0001\u0000\u0000\u0000\u06c2\u06c3"+ + "\u0003t:\u0000\u06c3\u06c4\u0003p8\u0000\u06c4\u06c5\u0005H\u0000\u0000"+ + "\u06c5\u06c6\u0003\u019e\u00cf\u0000\u06c6\u06c7\u0005:\u0000\u0000\u06c7"+ + "\u06c8\u0003\u0106\u0083\u0000\u06c8\u013f\u0001\u0000\u0000\u0000\u06c9"+ + "\u06ca\u0005\u0015\u0000\u0000\u06ca\u06ce\u00059\u0000\u0000\u06cb\u06cd"+ + "\u0003\u009cN\u0000\u06cc\u06cb\u0001\u0000\u0000\u0000\u06cd\u06d0\u0001"+ + "\u0000\u0000\u0000\u06ce\u06cc\u0001\u0000\u0000\u0000\u06ce\u06cf\u0001"+ + "\u0000\u0000\u0000\u06cf\u06d1\u0001\u0000\u0000\u0000\u06d0\u06ce\u0001"+ + "\u0000\u0000\u0000\u06d1\u06d2\u0003t:\u0000\u06d2\u06d3\u0003p8\u0000"+ + "\u06d3\u06d4\u0005H\u0000\u0000\u06d4\u06d5\u0003\u019e\u00cf\u0000\u06d5"+ + "\u06d6\u0005:\u0000\u0000\u06d6\u06d7\u0003\u0108\u0084\u0000\u06d7\u0141"+ + "\u0001\u0000\u0000\u0000\u06d8\u06da\u0005\u0004\u0000\u0000\u06d9\u06db"+ + "\u0005f\u0000\u0000\u06da\u06d9\u0001\u0000\u0000\u0000\u06da\u06db\u0001"+ + "\u0000\u0000\u0000\u06db\u06dc\u0001\u0000\u0000\u0000\u06dc\u06dd\u0005"+ + "?\u0000\u0000\u06dd\u0143\u0001\u0000\u0000\u0000\u06de\u06e0\u0005\u000b"+ + "\u0000\u0000\u06df\u06e1\u0005f\u0000\u0000\u06e0\u06df\u0001\u0000\u0000"+ + "\u0000\u06e0\u06e1\u0001\u0000\u0000\u0000\u06e1\u06e2\u0001\u0000\u0000"+ + "\u0000\u06e2\u06e3\u0005?\u0000\u0000\u06e3\u0145\u0001\u0000\u0000\u0000"+ + "\u06e4\u06e6\u0005$\u0000\u0000\u06e5\u06e7\u0003\u019e\u00cf\u0000\u06e6"+ + "\u06e5\u0001\u0000\u0000\u0000\u06e6\u06e7\u0001\u0000\u0000\u0000\u06e7"+ + "\u06e8\u0001\u0000\u0000\u0000\u06e8\u06e9\u0005?\u0000\u0000\u06e9\u0147"+ + "\u0001\u0000\u0000\u0000\u06ea\u06eb\u0005,\u0000\u0000\u06eb\u06ec\u0003"+ + "\u019e\u00cf\u0000\u06ec\u06ed\u0005?\u0000\u0000\u06ed\u0149\u0001\u0000"+ + "\u0000\u0000\u06ee\u06ef\u0005*\u0000\u0000\u06ef\u06f0\u00059\u0000\u0000"+ + "\u06f0\u06f1\u0003\u019e\u00cf\u0000\u06f1\u06f2\u0005:\u0000\u0000\u06f2"+ + "\u06f3\u0003\u00fc~\u0000\u06f3\u014b\u0001\u0000\u0000\u0000\u06f4\u06f5"+ + "\u0005/\u0000\u0000\u06f5\u06f6\u0003\u00fc~\u0000\u06f6\u06f7\u0003\u014e"+ + "\u00a7\u0000\u06f7\u0701\u0001\u0000\u0000\u0000\u06f8\u06f9\u0005/\u0000"+ + "\u0000\u06f9\u06fb\u0003\u00fc~\u0000\u06fa\u06fc\u0003\u014e\u00a7\u0000"+ + "\u06fb\u06fa\u0001\u0000\u0000\u0000\u06fb\u06fc\u0001\u0000\u0000\u0000"+ + "\u06fc\u06fd\u0001\u0000\u0000\u0000\u06fd\u06fe\u0003\u0156\u00ab\u0000"+ + "\u06fe\u0701\u0001\u0000\u0000\u0000\u06ff\u0701\u0003\u0158\u00ac\u0000"+ + "\u0700\u06f4\u0001\u0000\u0000\u0000\u0700\u06f8\u0001\u0000\u0000\u0000"+ + "\u0700\u06ff\u0001\u0000\u0000\u0000\u0701\u014d\u0001\u0000\u0000\u0000"+ + "\u0702\u0706\u0003\u0150\u00a8\u0000\u0703\u0705\u0003\u0150\u00a8\u0000"+ + "\u0704\u0703\u0001\u0000\u0000\u0000\u0705\u0708\u0001\u0000\u0000\u0000"+ + "\u0706\u0704\u0001\u0000\u0000\u0000\u0706\u0707\u0001\u0000\u0000\u0000"+ + "\u0707\u014f\u0001\u0000\u0000\u0000\u0708\u0706\u0001\u0000\u0000\u0000"+ + "\u0709\u070a\u0005\u0007\u0000\u0000\u070a\u070b\u00059\u0000\u0000\u070b"+ + "\u070c\u0003\u0152\u00a9\u0000\u070c\u070d\u0005:\u0000\u0000\u070d\u070e"+ + "\u0003\u00fc~\u0000\u070e\u0151\u0001\u0000\u0000\u0000\u070f\u0711\u0003"+ + "\u009cN\u0000\u0710\u070f\u0001\u0000\u0000\u0000\u0711\u0714\u0001\u0000"+ + "\u0000\u0000\u0712\u0710\u0001\u0000\u0000\u0000\u0712\u0713\u0001\u0000"+ + "\u0000\u0000\u0713\u0715\u0001\u0000\u0000\u0000\u0714\u0712\u0001\u0000"+ + "\u0000\u0000\u0715\u0716\u0003\u0154\u00aa\u0000\u0716\u0717\u0003p8\u0000"+ + "\u0717\u0153\u0001\u0000\u0000\u0000\u0718\u071d\u0003|>\u0000\u0719\u071a"+ + "\u0005V\u0000\u0000\u071a\u071c\u0003\u0010\b\u0000\u071b\u0719\u0001"+ + "\u0000\u0000\u0000\u071c\u071f\u0001\u0000\u0000\u0000\u071d\u071b\u0001"+ + "\u0000\u0000\u0000\u071d\u071e\u0001\u0000\u0000\u0000\u071e\u0155\u0001"+ + "\u0000\u0000\u0000\u071f\u071d\u0001\u0000\u0000\u0000\u0720\u0721\u0005"+ + "\u0013\u0000\u0000\u0721\u0722\u0003\u00fc~\u0000\u0722\u0157\u0001\u0000"+ + "\u0000\u0000\u0723\u0724\u0005/\u0000\u0000\u0724\u0725\u0003\u015a\u00ad"+ + "\u0000\u0725\u0727\u0003\u00fc~\u0000\u0726\u0728\u0003\u014e\u00a7\u0000"+ + "\u0727\u0726\u0001\u0000\u0000\u0000\u0727\u0728\u0001\u0000\u0000\u0000"+ + "\u0728\u072a\u0001\u0000\u0000\u0000\u0729\u072b\u0003\u0156\u00ab\u0000"+ + "\u072a\u0729\u0001\u0000\u0000\u0000\u072a\u072b\u0001\u0000\u0000\u0000"+ + "\u072b\u0159\u0001\u0000\u0000\u0000\u072c\u072d\u00059\u0000\u0000\u072d"+ + "\u072f\u0003\u015c\u00ae\u0000\u072e\u0730\u0005?\u0000\u0000\u072f\u072e"+ + "\u0001\u0000\u0000\u0000\u072f\u0730\u0001\u0000\u0000\u0000\u0730\u0731"+ + "\u0001\u0000\u0000\u0000\u0731\u0732\u0005:\u0000\u0000\u0732\u015b\u0001"+ + "\u0000\u0000\u0000\u0733\u0738\u0003\u015e\u00af\u0000\u0734\u0735\u0005"+ + "?\u0000\u0000\u0735\u0737\u0003\u015e\u00af\u0000\u0736\u0734\u0001\u0000"+ + "\u0000\u0000\u0737\u073a\u0001\u0000\u0000\u0000\u0738\u0736\u0001\u0000"+ + "\u0000\u0000\u0738\u0739\u0001\u0000\u0000\u0000\u0739\u015d\u0001\u0000"+ + "\u0000\u0000\u073a\u0738\u0001\u0000\u0000\u0000\u073b\u073d\u0003\u009c"+ + "N\u0000\u073c\u073b\u0001\u0000\u0000\u0000\u073d\u0740\u0001\u0000\u0000"+ + "\u0000\u073e\u073c\u0001\u0000\u0000\u0000\u073e\u073f\u0001\u0000\u0000"+ + "\u0000\u073f\u0741\u0001\u0000\u0000\u0000\u0740\u073e\u0001\u0000\u0000"+ + "\u0000\u0741\u0742\u0003t:\u0000\u0742\u0743\u0003p8\u0000\u0743\u0744"+ + "\u0005B\u0000\u0000\u0744\u0745\u0003\u019e\u00cf\u0000\u0745\u015f\u0001"+ + "\u0000\u0000\u0000\u0746\u0749\u0003\u016e\u00b7\u0000\u0747\u0749\u0003"+ + "\u0196\u00cb\u0000\u0748\u0746\u0001\u0000\u0000\u0000\u0748\u0747\u0001"+ + "\u0000\u0000\u0000\u0749\u074d\u0001\u0000\u0000\u0000\u074a\u074c\u0003"+ + "\u0168\u00b4\u0000\u074b\u074a\u0001\u0000\u0000\u0000\u074c\u074f\u0001"+ + "\u0000\u0000\u0000\u074d\u074b\u0001\u0000\u0000\u0000\u074d\u074e\u0001"+ + "\u0000\u0000\u0000\u074e\u0161\u0001\u0000\u0000\u0000\u074f\u074d\u0001"+ + "\u0000\u0000\u0000\u0750\u076e\u0003\u0000\u0000\u0000\u0751\u0756\u0003"+ + "6\u001b\u0000\u0752\u0753\u0005=\u0000\u0000\u0753\u0755\u0005>\u0000"+ + "\u0000\u0754\u0752\u0001\u0000\u0000\u0000\u0755\u0758\u0001\u0000\u0000"+ + "\u0000\u0756\u0754\u0001\u0000\u0000\u0000\u0756\u0757\u0001\u0000\u0000"+ + "\u0000\u0757\u0759\u0001\u0000\u0000\u0000\u0758\u0756\u0001\u0000\u0000"+ + "\u0000\u0759\u075a\u0005A\u0000\u0000\u075a\u075b\u0005\t\u0000\u0000"+ + "\u075b\u076e\u0001\u0000\u0000\u0000\u075c\u075d\u00050\u0000\u0000\u075d"+ + "\u075e\u0005A\u0000\u0000\u075e\u076e\u0005\t\u0000\u0000\u075f\u076e"+ + "\u0005+\u0000\u0000\u0760\u0761\u00036\u001b\u0000\u0761\u0762\u0005A"+ + "\u0000\u0000\u0762\u0763\u0005+\u0000\u0000\u0763\u076e\u0001\u0000\u0000"+ + "\u0000\u0764\u0765\u00059\u0000\u0000\u0765\u0766\u0003\u019e\u00cf\u0000"+ + "\u0766\u0767\u0005:\u0000\u0000\u0767\u076e\u0001\u0000\u0000\u0000\u0768"+ + "\u076e\u0003\u0174\u00ba\u0000\u0769\u076e\u0003\u017c\u00be\u0000\u076a"+ + "\u076e\u0003\u0182\u00c1\u0000\u076b\u076e\u0003\u0188\u00c4\u0000\u076c"+ + "\u076e\u0003\u0190\u00c8\u0000\u076d\u0750\u0001\u0000\u0000\u0000\u076d"+ + "\u0751\u0001\u0000\u0000\u0000\u076d\u075c\u0001\u0000\u0000\u0000\u076d"+ + "\u075f\u0001\u0000\u0000\u0000\u076d\u0760\u0001\u0000\u0000\u0000\u076d"+ + "\u0764\u0001\u0000\u0000\u0000\u076d\u0768\u0001\u0000\u0000\u0000\u076d"+ + "\u0769\u0001\u0000\u0000\u0000\u076d\u076a\u0001\u0000\u0000\u0000\u076d"+ + "\u076b\u0001\u0000\u0000\u0000\u076d\u076c\u0001\u0000\u0000\u0000\u076e"+ + "\u0163\u0001\u0000\u0000\u0000\u076f\u0770\u0001\u0000\u0000\u0000\u0770"+ + "\u0165\u0001\u0000\u0000\u0000\u0771\u078e\u0003\u0000\u0000\u0000\u0772"+ + "\u0777\u00036\u001b\u0000\u0773\u0774\u0005=\u0000\u0000\u0774\u0776\u0005"+ + ">\u0000\u0000\u0775\u0773\u0001\u0000\u0000\u0000\u0776\u0779\u0001\u0000"+ + "\u0000\u0000\u0777\u0775\u0001\u0000\u0000\u0000\u0777\u0778\u0001\u0000"+ + "\u0000\u0000\u0778\u077a\u0001\u0000\u0000\u0000\u0779\u0777\u0001\u0000"+ + "\u0000\u0000\u077a\u077b\u0005A\u0000\u0000\u077b\u077c\u0005\t\u0000"+ + "\u0000\u077c\u078e\u0001\u0000\u0000\u0000\u077d\u077e\u00050\u0000\u0000"+ + "\u077e\u077f\u0005A\u0000\u0000\u077f\u078e\u0005\t\u0000\u0000\u0780"+ + "\u078e\u0005+\u0000\u0000\u0781\u0782\u00036\u001b\u0000\u0782\u0783\u0005"+ + "A\u0000\u0000\u0783\u0784\u0005+\u0000\u0000\u0784\u078e\u0001\u0000\u0000"+ + "\u0000\u0785\u0786\u00059\u0000\u0000\u0786\u0787\u0003\u019e\u00cf\u0000"+ + "\u0787\u0788\u0005:\u0000\u0000\u0788\u078e\u0001\u0000\u0000\u0000\u0789"+ + "\u078e\u0003\u0174\u00ba\u0000\u078a\u078e\u0003\u017c\u00be\u0000\u078b"+ + "\u078e\u0003\u0188\u00c4\u0000\u078c\u078e\u0003\u0190\u00c8\u0000\u078d"+ + "\u0771\u0001\u0000\u0000\u0000\u078d\u0772\u0001\u0000\u0000\u0000\u078d"+ + "\u077d\u0001\u0000\u0000\u0000\u078d\u0780\u0001\u0000\u0000\u0000\u078d"+ + "\u0781\u0001\u0000\u0000\u0000\u078d\u0785\u0001\u0000\u0000\u0000\u078d"+ + "\u0789\u0001\u0000\u0000\u0000\u078d\u078a\u0001\u0000\u0000\u0000\u078d"+ + "\u078b\u0001\u0000\u0000\u0000\u078d\u078c\u0001\u0000\u0000\u0000\u078e"+ + "\u0167\u0001\u0000\u0000\u0000\u078f\u0795\u0003\u0176\u00bb\u0000\u0790"+ + "\u0795\u0003\u017e\u00bf\u0000\u0791\u0795\u0003\u0184\u00c2\u0000\u0792"+ + "\u0795\u0003\u018a\u00c5\u0000\u0793\u0795\u0003\u0192\u00c9\u0000\u0794"+ + "\u078f\u0001\u0000\u0000\u0000\u0794\u0790\u0001\u0000\u0000\u0000\u0794"+ + "\u0791\u0001\u0000\u0000\u0000\u0794\u0792\u0001\u0000\u0000\u0000\u0794"+ + "\u0793\u0001\u0000\u0000\u0000\u0795\u0169\u0001\u0000\u0000\u0000\u0796"+ + "\u0797\u0001\u0000\u0000\u0000\u0797\u016b\u0001\u0000\u0000\u0000\u0798"+ + "\u079d\u0003\u0176\u00bb\u0000\u0799\u079d\u0003\u017e\u00bf\u0000\u079a"+ + "\u079d\u0003\u018a\u00c5\u0000\u079b\u079d\u0003\u0192\u00c9\u0000\u079c"+ + "\u0798\u0001\u0000\u0000\u0000\u079c\u0799\u0001\u0000\u0000\u0000\u079c"+ + "\u079a\u0001\u0000\u0000\u0000\u079c\u079b\u0001\u0000\u0000\u0000\u079d"+ + "\u016d\u0001\u0000\u0000\u0000\u079e\u07c7\u0003\u0000\u0000\u0000\u079f"+ + "\u07a4\u00036\u001b\u0000\u07a0\u07a1\u0005=\u0000\u0000\u07a1\u07a3\u0005"+ + ">\u0000\u0000\u07a2\u07a0\u0001\u0000\u0000\u0000\u07a3\u07a6\u0001\u0000"+ + "\u0000\u0000\u07a4\u07a2\u0001\u0000\u0000\u0000\u07a4\u07a5\u0001\u0000"+ + "\u0000\u0000\u07a5\u07a7\u0001\u0000\u0000\u0000\u07a6\u07a4\u0001\u0000"+ + "\u0000\u0000\u07a7\u07a8\u0005A\u0000\u0000\u07a8\u07a9\u0005\t\u0000"+ + "\u0000\u07a9\u07c7\u0001\u0000\u0000\u0000\u07aa\u07af\u0003v;\u0000\u07ab"+ + "\u07ac\u0005=\u0000\u0000\u07ac\u07ae\u0005>\u0000\u0000\u07ad\u07ab\u0001"+ + "\u0000\u0000\u0000\u07ae\u07b1\u0001\u0000\u0000\u0000\u07af\u07ad\u0001"+ + "\u0000\u0000\u0000\u07af\u07b0\u0001\u0000\u0000\u0000\u07b0\u07b2\u0001"+ + "\u0000\u0000\u0000\u07b1\u07af\u0001\u0000\u0000\u0000\u07b2\u07b3\u0005"+ + "A\u0000\u0000\u07b3\u07b4\u0005\t\u0000\u0000\u07b4\u07c7\u0001\u0000"+ + "\u0000\u0000\u07b5\u07b6\u00050\u0000\u0000\u07b6\u07b7\u0005A\u0000\u0000"+ + "\u07b7\u07c7\u0005\t\u0000\u0000\u07b8\u07c7\u0005+\u0000\u0000\u07b9"+ + "\u07ba\u00036\u001b\u0000\u07ba\u07bb\u0005A\u0000\u0000\u07bb\u07bc\u0005"+ + "+\u0000\u0000\u07bc\u07c7\u0001\u0000\u0000\u0000\u07bd\u07be\u00059\u0000"+ + "\u0000\u07be\u07bf\u0003\u019e\u00cf\u0000\u07bf\u07c0\u0005:\u0000\u0000"+ + "\u07c0\u07c7\u0001\u0000\u0000\u0000\u07c1\u07c7\u0003\u0178\u00bc\u0000"+ + "\u07c2\u07c7\u0003\u0180\u00c0\u0000\u07c3\u07c7\u0003\u0186\u00c3\u0000"+ + "\u07c4\u07c7\u0003\u018c\u00c6\u0000\u07c5\u07c7\u0003\u0194\u00ca\u0000"+ + "\u07c6\u079e\u0001\u0000\u0000\u0000\u07c6\u079f\u0001\u0000\u0000\u0000"+ + "\u07c6\u07aa\u0001\u0000\u0000\u0000\u07c6\u07b5\u0001\u0000\u0000\u0000"+ + "\u07c6\u07b8\u0001\u0000\u0000\u0000\u07c6\u07b9\u0001\u0000\u0000\u0000"+ + "\u07c6\u07bd\u0001\u0000\u0000\u0000\u07c6\u07c1\u0001\u0000\u0000\u0000"+ + "\u07c6\u07c2\u0001\u0000\u0000\u0000\u07c6\u07c3\u0001\u0000\u0000\u0000"+ + "\u07c6\u07c4\u0001\u0000\u0000\u0000\u07c6\u07c5\u0001\u0000\u0000\u0000"+ + "\u07c7\u016f\u0001\u0000\u0000\u0000\u07c8\u07c9\u0001\u0000\u0000\u0000"+ + "\u07c9\u0171\u0001\u0000\u0000\u0000\u07ca\u07f2\u0003\u0000\u0000\u0000"+ + "\u07cb\u07d0\u00036\u001b\u0000\u07cc\u07cd\u0005=\u0000\u0000\u07cd\u07cf"+ + "\u0005>\u0000\u0000\u07ce\u07cc\u0001\u0000\u0000\u0000\u07cf\u07d2\u0001"+ + "\u0000\u0000\u0000\u07d0\u07ce\u0001\u0000\u0000\u0000\u07d0\u07d1\u0001"+ + "\u0000\u0000\u0000\u07d1\u07d3\u0001\u0000\u0000\u0000\u07d2\u07d0\u0001"+ + "\u0000\u0000\u0000\u07d3\u07d4\u0005A\u0000\u0000\u07d4\u07d5\u0005\t"+ + "\u0000\u0000\u07d5\u07f2\u0001\u0000\u0000\u0000\u07d6\u07db\u0003v;\u0000"+ + "\u07d7\u07d8\u0005=\u0000\u0000\u07d8\u07da\u0005>\u0000\u0000\u07d9\u07d7"+ + "\u0001\u0000\u0000\u0000\u07da\u07dd\u0001\u0000\u0000\u0000\u07db\u07d9"+ + "\u0001\u0000\u0000\u0000\u07db\u07dc\u0001\u0000\u0000\u0000\u07dc\u07de"+ + "\u0001\u0000\u0000\u0000\u07dd\u07db\u0001\u0000\u0000\u0000\u07de\u07df"+ + "\u0005A\u0000\u0000\u07df\u07e0\u0005\t\u0000\u0000\u07e0\u07f2\u0001"+ + "\u0000\u0000\u0000\u07e1\u07e2\u00050\u0000\u0000\u07e2\u07e3\u0005A\u0000"+ + "\u0000\u07e3\u07f2\u0005\t\u0000\u0000\u07e4\u07f2\u0005+\u0000\u0000"+ + "\u07e5\u07e6\u00036\u001b\u0000\u07e6\u07e7\u0005A\u0000\u0000\u07e7\u07e8"+ + "\u0005+\u0000\u0000\u07e8\u07f2\u0001\u0000\u0000\u0000\u07e9\u07ea\u0005"+ + "9\u0000\u0000\u07ea\u07eb\u0003\u019e\u00cf\u0000\u07eb\u07ec\u0005:\u0000"+ + "\u0000\u07ec\u07f2\u0001\u0000\u0000\u0000\u07ed\u07f2\u0003\u0178\u00bc"+ + "\u0000\u07ee\u07f2\u0003\u0180\u00c0\u0000\u07ef\u07f2\u0003\u018c\u00c6"+ + "\u0000\u07f0\u07f2\u0003\u0194\u00ca\u0000\u07f1\u07ca\u0001\u0000\u0000"+ + "\u0000\u07f1\u07cb\u0001\u0000\u0000\u0000\u07f1\u07d6\u0001\u0000\u0000"+ + "\u0000\u07f1\u07e1\u0001\u0000\u0000\u0000\u07f1\u07e4\u0001\u0000\u0000"+ + "\u0000\u07f1\u07e5\u0001\u0000\u0000\u0000\u07f1\u07e9\u0001\u0000\u0000"+ + "\u0000\u07f1\u07ed\u0001\u0000\u0000\u0000\u07f1\u07ee\u0001\u0000\u0000"+ + "\u0000\u07f1\u07ef\u0001\u0000\u0000\u0000\u07f1\u07f0\u0001\u0000\u0000"+ + "\u0000\u07f2\u0173\u0001\u0000\u0000\u0000\u07f3\u07f5\u0005\u001f\u0000"+ + "\u0000\u07f4\u07f6\u0003*\u0015\u0000\u07f5\u07f4\u0001\u0000\u0000\u0000"+ + "\u07f5\u07f6\u0001\u0000\u0000\u0000\u07f6\u07fa\u0001\u0000\u0000\u0000"+ + "\u07f7\u07f9\u0003\u00e6s\u0000\u07f8\u07f7\u0001\u0000\u0000\u0000\u07f9"+ + "\u07fc\u0001\u0000\u0000\u0000\u07fa\u07f8\u0001\u0000\u0000\u0000\u07fa"+ + "\u07fb\u0001\u0000\u0000\u0000\u07fb\u07fd\u0001\u0000\u0000\u0000\u07fc"+ + "\u07fa\u0001\u0000\u0000\u0000\u07fd\u0808\u0005f\u0000\u0000\u07fe\u0802"+ + "\u0005A\u0000\u0000\u07ff\u0801\u0003\u00e6s\u0000\u0800\u07ff\u0001\u0000"+ + "\u0000\u0000\u0801\u0804\u0001\u0000\u0000\u0000\u0802\u0800\u0001\u0000"+ + "\u0000\u0000\u0802\u0803\u0001\u0000\u0000\u0000\u0803\u0805\u0001\u0000"+ + "\u0000\u0000\u0804\u0802\u0001\u0000\u0000\u0000\u0805\u0807\u0005f\u0000"+ + "\u0000\u0806\u07fe\u0001\u0000\u0000\u0000\u0807\u080a\u0001\u0000\u0000"+ + "\u0000\u0808\u0806\u0001\u0000\u0000\u0000\u0808\u0809\u0001\u0000\u0000"+ + "\u0000\u0809\u080c\u0001\u0000\u0000\u0000\u080a\u0808\u0001\u0000\u0000"+ + "\u0000\u080b\u080d\u0003\u017a\u00bd\u0000\u080c\u080b\u0001\u0000\u0000"+ + "\u0000\u080c\u080d\u0001\u0000\u0000\u0000\u080d\u080e\u0001\u0000\u0000"+ + "\u0000\u080e\u0810\u00059\u0000\u0000\u080f\u0811\u0003\u018e\u00c7\u0000"+ + "\u0810\u080f\u0001\u0000\u0000\u0000\u0810\u0811\u0001\u0000\u0000\u0000"+ + "\u0811\u0812\u0001\u0000\u0000\u0000\u0812\u0814\u0005:\u0000\u0000\u0813"+ + "\u0815\u0003b1\u0000\u0814\u0813\u0001\u0000\u0000\u0000\u0814\u0815\u0001"+ + "\u0000\u0000\u0000\u0815\u0847\u0001\u0000\u0000\u0000\u0816\u0817\u0003"+ + ":\u001d\u0000\u0817\u0818\u0005A\u0000\u0000\u0818\u081a\u0005\u001f\u0000"+ + "\u0000\u0819\u081b\u0003*\u0015\u0000\u081a\u0819\u0001\u0000\u0000\u0000"+ + "\u081a\u081b\u0001\u0000\u0000\u0000\u081b\u081f\u0001\u0000\u0000\u0000"+ + "\u081c\u081e\u0003\u00e6s\u0000\u081d\u081c\u0001\u0000\u0000\u0000\u081e"+ + "\u0821\u0001\u0000\u0000\u0000\u081f\u081d\u0001\u0000\u0000\u0000\u081f"+ + "\u0820\u0001\u0000\u0000\u0000\u0820\u0822\u0001\u0000\u0000\u0000\u0821"+ + "\u081f\u0001\u0000\u0000\u0000\u0822\u0824\u0005f\u0000\u0000\u0823\u0825"+ + "\u0003\u017a\u00bd\u0000\u0824\u0823\u0001\u0000\u0000\u0000\u0824\u0825"+ + "\u0001\u0000\u0000\u0000\u0825\u0826\u0001\u0000\u0000\u0000\u0826\u0828"+ + "\u00059\u0000\u0000\u0827\u0829\u0003\u018e\u00c7\u0000\u0828\u0827\u0001"+ + "\u0000\u0000\u0000\u0828\u0829\u0001\u0000\u0000\u0000\u0829\u082a\u0001"+ + "\u0000\u0000\u0000\u082a\u082c\u0005:\u0000\u0000\u082b\u082d\u0003b1"+ + "\u0000\u082c\u082b\u0001\u0000\u0000\u0000\u082c\u082d\u0001\u0000\u0000"+ + "\u0000\u082d\u0847\u0001\u0000\u0000\u0000\u082e\u082f\u0003\u0160\u00b0"+ + "\u0000\u082f\u0830\u0005A\u0000\u0000\u0830\u0832\u0005\u001f\u0000\u0000"+ + "\u0831\u0833\u0003*\u0015\u0000\u0832\u0831\u0001\u0000\u0000\u0000\u0832"+ + "\u0833\u0001\u0000\u0000\u0000\u0833\u0837\u0001\u0000\u0000\u0000\u0834"+ + "\u0836\u0003\u00e6s\u0000\u0835\u0834\u0001\u0000\u0000\u0000\u0836\u0839"+ + "\u0001\u0000\u0000\u0000\u0837\u0835\u0001\u0000\u0000\u0000\u0837\u0838"+ + "\u0001\u0000\u0000\u0000\u0838\u083a\u0001\u0000\u0000\u0000\u0839\u0837"+ + "\u0001\u0000\u0000\u0000\u083a\u083c\u0005f\u0000\u0000\u083b\u083d\u0003"+ + "\u017a\u00bd\u0000\u083c\u083b\u0001\u0000\u0000\u0000\u083c\u083d\u0001"+ + "\u0000\u0000\u0000\u083d\u083e\u0001\u0000\u0000\u0000\u083e\u0840\u0005"+ + "9\u0000\u0000\u083f\u0841\u0003\u018e\u00c7\u0000\u0840\u083f\u0001\u0000"+ + "\u0000\u0000\u0840\u0841\u0001\u0000\u0000\u0000\u0841\u0842\u0001\u0000"+ + "\u0000\u0000\u0842\u0844\u0005:\u0000\u0000\u0843\u0845\u0003b1\u0000"+ + "\u0844\u0843\u0001\u0000\u0000\u0000\u0844\u0845\u0001\u0000\u0000\u0000"+ + "\u0845\u0847\u0001\u0000\u0000\u0000\u0846\u07f3\u0001\u0000\u0000\u0000"+ + "\u0846\u0816\u0001\u0000\u0000\u0000\u0846\u082e\u0001\u0000\u0000\u0000"+ + "\u0847\u0175\u0001\u0000\u0000\u0000\u0848\u0849\u0005A\u0000\u0000\u0849"+ + "\u084b\u0005\u001f\u0000\u0000\u084a\u084c\u0003*\u0015\u0000\u084b\u084a"+ + "\u0001\u0000\u0000\u0000\u084b\u084c\u0001\u0000\u0000\u0000\u084c\u0850"+ + "\u0001\u0000\u0000\u0000\u084d\u084f\u0003\u00e6s\u0000\u084e\u084d\u0001"+ + "\u0000\u0000\u0000\u084f\u0852\u0001\u0000\u0000\u0000\u0850\u084e\u0001"+ + "\u0000\u0000\u0000\u0850\u0851\u0001\u0000\u0000\u0000\u0851\u0853\u0001"+ + "\u0000\u0000\u0000\u0852\u0850\u0001\u0000\u0000\u0000\u0853\u0855\u0005"+ + "f\u0000\u0000\u0854\u0856\u0003\u017a\u00bd\u0000\u0855\u0854\u0001\u0000"+ + "\u0000\u0000\u0855\u0856\u0001\u0000\u0000\u0000\u0856\u0857\u0001\u0000"+ + "\u0000\u0000\u0857\u0859\u00059\u0000\u0000\u0858\u085a\u0003\u018e\u00c7"+ + "\u0000\u0859\u0858\u0001\u0000\u0000\u0000\u0859\u085a\u0001\u0000\u0000"+ + "\u0000\u085a\u085b\u0001\u0000\u0000\u0000\u085b\u085d\u0005:\u0000\u0000"+ + "\u085c\u085e\u0003b1\u0000\u085d\u085c\u0001\u0000\u0000\u0000\u085d\u085e"+ + "\u0001\u0000\u0000\u0000\u085e\u0177\u0001\u0000\u0000\u0000\u085f\u0861"+ + "\u0005\u001f\u0000\u0000\u0860\u0862\u0003*\u0015\u0000\u0861\u0860\u0001"+ + "\u0000\u0000\u0000\u0861\u0862\u0001\u0000\u0000\u0000\u0862\u0866\u0001"+ + "\u0000\u0000\u0000\u0863\u0865\u0003\u00e6s\u0000\u0864\u0863\u0001\u0000"+ + "\u0000\u0000\u0865\u0868\u0001\u0000\u0000\u0000\u0866\u0864\u0001\u0000"+ + "\u0000\u0000\u0866\u0867\u0001\u0000\u0000\u0000\u0867\u0869\u0001\u0000"+ + "\u0000\u0000\u0868\u0866\u0001\u0000\u0000\u0000\u0869\u0874\u0005f\u0000"+ + "\u0000\u086a\u086e\u0005A\u0000\u0000\u086b\u086d\u0003\u00e6s\u0000\u086c"+ + "\u086b\u0001\u0000\u0000\u0000\u086d\u0870\u0001\u0000\u0000\u0000\u086e"+ + "\u086c\u0001\u0000\u0000\u0000\u086e\u086f\u0001\u0000\u0000\u0000\u086f"+ + "\u0871\u0001\u0000\u0000\u0000\u0870\u086e\u0001\u0000\u0000\u0000\u0871"+ + "\u0873\u0005f\u0000\u0000\u0872\u086a\u0001\u0000\u0000\u0000\u0873\u0876"+ + "\u0001\u0000\u0000\u0000\u0874\u0872\u0001\u0000\u0000\u0000\u0874\u0875"+ + "\u0001\u0000\u0000\u0000\u0875\u0878\u0001\u0000\u0000\u0000\u0876\u0874"+ + "\u0001\u0000\u0000\u0000\u0877\u0879\u0003\u017a\u00bd\u0000\u0878\u0877"+ + "\u0001\u0000\u0000\u0000\u0878\u0879\u0001\u0000\u0000\u0000\u0879\u087a"+ + "\u0001\u0000\u0000\u0000\u087a\u087c\u00059\u0000\u0000\u087b\u087d\u0003"+ + "\u018e\u00c7\u0000\u087c\u087b\u0001\u0000\u0000\u0000\u087c\u087d\u0001"+ + "\u0000\u0000\u0000\u087d\u087e\u0001\u0000\u0000\u0000\u087e\u0880\u0005"+ + ":\u0000\u0000\u087f\u0881\u0003b1\u0000\u0880\u087f\u0001\u0000\u0000"+ + "\u0000\u0880\u0881\u0001\u0000\u0000\u0000\u0881\u089b\u0001\u0000\u0000"+ + "\u0000\u0882\u0883\u0003:\u001d\u0000\u0883\u0884\u0005A\u0000\u0000\u0884"+ + "\u0886\u0005\u001f\u0000\u0000\u0885\u0887\u0003*\u0015\u0000\u0886\u0885"+ + "\u0001\u0000\u0000\u0000\u0886\u0887\u0001\u0000\u0000\u0000\u0887\u088b"+ + "\u0001\u0000\u0000\u0000\u0888\u088a\u0003\u00e6s\u0000\u0889\u0888\u0001"+ + "\u0000\u0000\u0000\u088a\u088d\u0001\u0000\u0000\u0000\u088b\u0889\u0001"+ + "\u0000\u0000\u0000\u088b\u088c\u0001\u0000\u0000\u0000\u088c\u088e\u0001"+ + "\u0000\u0000\u0000\u088d\u088b\u0001\u0000\u0000\u0000\u088e\u0890\u0005"+ + "f\u0000\u0000\u088f\u0891\u0003\u017a\u00bd\u0000\u0890\u088f\u0001\u0000"+ + "\u0000\u0000\u0890\u0891\u0001\u0000\u0000\u0000\u0891\u0892\u0001\u0000"+ + "\u0000\u0000\u0892\u0894\u00059\u0000\u0000\u0893\u0895\u0003\u018e\u00c7"+ + "\u0000\u0894\u0893\u0001\u0000\u0000\u0000\u0894\u0895\u0001\u0000\u0000"+ + "\u0000\u0895\u0896\u0001\u0000\u0000\u0000\u0896\u0898\u0005:\u0000\u0000"+ + "\u0897\u0899\u0003b1\u0000\u0898\u0897\u0001\u0000\u0000\u0000\u0898\u0899"+ + "\u0001\u0000\u0000\u0000\u0899\u089b\u0001\u0000\u0000\u0000\u089a\u085f"+ + "\u0001\u0000\u0000\u0000\u089a\u0882\u0001\u0000\u0000\u0000\u089b\u0179"+ + "\u0001\u0000\u0000\u0000\u089c\u08a0\u0003*\u0015\u0000\u089d\u089e\u0005"+ + "D\u0000\u0000\u089e\u08a0\u0005C\u0000\u0000\u089f\u089c\u0001\u0000\u0000"+ + "\u0000\u089f\u089d\u0001\u0000\u0000\u0000\u08a0\u017b\u0001\u0000\u0000"+ + "\u0000\u08a1\u08a2\u0003\u0160\u00b0\u0000\u08a2\u08a3\u0005A\u0000\u0000"+ + "\u08a3\u08a4\u0005f\u0000\u0000\u08a4\u08af\u0001\u0000\u0000\u0000\u08a5"+ + "\u08a6\u0005(\u0000\u0000\u08a6\u08a7\u0005A\u0000\u0000\u08a7\u08af\u0005"+ + "f\u0000\u0000\u08a8\u08a9\u00036\u001b\u0000\u08a9\u08aa\u0005A\u0000"+ + "\u0000\u08aa\u08ab\u0005(\u0000\u0000\u08ab\u08ac\u0005A\u0000\u0000\u08ac"+ + "\u08ad\u0005f\u0000\u0000\u08ad\u08af\u0001\u0000\u0000\u0000\u08ae\u08a1"+ + "\u0001\u0000\u0000\u0000\u08ae\u08a5\u0001\u0000\u0000\u0000\u08ae\u08a8"+ + "\u0001\u0000\u0000\u0000\u08af\u017d\u0001\u0000\u0000\u0000\u08b0\u08b1"+ + "\u0005A\u0000\u0000\u08b1\u08b2\u0005f\u0000\u0000\u08b2\u017f\u0001\u0000"+ + "\u0000\u0000\u08b3\u08b4\u0005(\u0000\u0000\u08b4\u08b5\u0005A\u0000\u0000"+ + "\u08b5\u08bd\u0005f\u0000\u0000\u08b6\u08b7\u00036\u001b\u0000\u08b7\u08b8"+ + "\u0005A\u0000\u0000\u08b8\u08b9\u0005(\u0000\u0000\u08b9\u08ba\u0005A"+ + "\u0000\u0000\u08ba\u08bb\u0005f\u0000\u0000\u08bb\u08bd\u0001\u0000\u0000"+ + "\u0000\u08bc\u08b3\u0001\u0000\u0000\u0000\u08bc\u08b6\u0001\u0000\u0000"+ + "\u0000\u08bd\u0181\u0001\u0000\u0000\u0000\u08be\u08bf\u0003:\u001d\u0000"+ + "\u08bf\u08c0\u0005=\u0000\u0000\u08c0\u08c1\u0003\u019e\u00cf\u0000\u08c1"+ + "\u08c2\u0005>\u0000\u0000\u08c2\u08c9\u0001\u0000\u0000\u0000\u08c3\u08c4"+ + "\u0003\u0166\u00b3\u0000\u08c4\u08c5\u0005=\u0000\u0000\u08c5\u08c6\u0003"+ + "\u019e\u00cf\u0000\u08c6\u08c7\u0005>\u0000\u0000\u08c7\u08c9\u0001\u0000"+ + "\u0000\u0000\u08c8\u08be\u0001\u0000\u0000\u0000\u08c8\u08c3\u0001\u0000"+ + "\u0000\u0000\u08c9\u08d1\u0001\u0000\u0000\u0000\u08ca\u08cb\u0003\u0164"+ + "\u00b2\u0000\u08cb\u08cc\u0005=\u0000\u0000\u08cc\u08cd\u0003\u019e\u00cf"+ + "\u0000\u08cd\u08ce\u0005>\u0000\u0000\u08ce\u08d0\u0001\u0000\u0000\u0000"+ + "\u08cf\u08ca\u0001\u0000\u0000\u0000\u08d0\u08d3\u0001\u0000\u0000\u0000"+ + "\u08d1\u08cf\u0001\u0000\u0000\u0000\u08d1\u08d2\u0001\u0000\u0000\u0000"+ + "\u08d2\u0183\u0001\u0000\u0000\u0000\u08d3\u08d1\u0001\u0000\u0000\u0000"+ + "\u08d4\u08d5\u0003\u016c\u00b6\u0000\u08d5\u08d6\u0005=\u0000\u0000\u08d6"+ + "\u08d7\u0003\u019e\u00cf\u0000\u08d7\u08d8\u0005>\u0000\u0000\u08d8\u08e0"+ + "\u0001\u0000\u0000\u0000\u08d9\u08da\u0003\u016a\u00b5\u0000\u08da\u08db"+ + "\u0005=\u0000\u0000\u08db\u08dc\u0003\u019e\u00cf\u0000\u08dc\u08dd\u0005"+ + ">\u0000\u0000\u08dd\u08df\u0001\u0000\u0000\u0000\u08de\u08d9\u0001\u0000"+ + "\u0000\u0000\u08df\u08e2\u0001\u0000\u0000\u0000\u08e0\u08de\u0001\u0000"+ + "\u0000\u0000\u08e0\u08e1\u0001\u0000\u0000\u0000\u08e1\u0185\u0001\u0000"+ + "\u0000\u0000\u08e2\u08e0\u0001\u0000\u0000\u0000\u08e3\u08e4\u0003:\u001d"+ + "\u0000\u08e4\u08e5\u0005=\u0000\u0000\u08e5\u08e6\u0003\u019e\u00cf\u0000"+ + "\u08e6\u08e7\u0005>\u0000\u0000\u08e7\u08ee\u0001\u0000\u0000\u0000\u08e8"+ + "\u08e9\u0003\u0172\u00b9\u0000\u08e9\u08ea\u0005=\u0000\u0000\u08ea\u08eb"+ + "\u0003\u019e\u00cf\u0000\u08eb\u08ec\u0005>\u0000\u0000\u08ec\u08ee\u0001"+ + "\u0000\u0000\u0000\u08ed\u08e3\u0001\u0000\u0000\u0000\u08ed\u08e8\u0001"+ + "\u0000\u0000\u0000\u08ee\u08f6\u0001\u0000\u0000\u0000\u08ef\u08f0\u0003"+ + "\u0170\u00b8\u0000\u08f0\u08f1\u0005=\u0000\u0000\u08f1\u08f2\u0003\u019e"+ + "\u00cf\u0000\u08f2\u08f3\u0005>\u0000\u0000\u08f3\u08f5\u0001\u0000\u0000"+ + "\u0000\u08f4\u08ef\u0001\u0000\u0000\u0000\u08f5\u08f8\u0001\u0000\u0000"+ + "\u0000\u08f6\u08f4\u0001\u0000\u0000\u0000\u08f6\u08f7\u0001\u0000\u0000"+ + "\u0000\u08f7\u0187\u0001\u0000\u0000\u0000\u08f8\u08f6\u0001\u0000\u0000"+ + "\u0000\u08f9\u08fa\u0003<\u001e\u0000\u08fa\u08fc\u00059\u0000\u0000\u08fb"+ + "\u08fd\u0003\u018e\u00c7\u0000\u08fc\u08fb\u0001\u0000\u0000\u0000\u08fc"+ + "\u08fd\u0001\u0000\u0000\u0000\u08fd\u08fe\u0001\u0000\u0000\u0000\u08fe"+ + "\u08ff\u0005:\u0000\u0000\u08ff\u093e\u0001\u0000\u0000\u0000\u0900\u0901"+ + "\u00036\u001b\u0000\u0901\u0903\u0005A\u0000\u0000\u0902\u0904\u0003*"+ + "\u0015\u0000\u0903\u0902\u0001\u0000\u0000\u0000\u0903\u0904\u0001\u0000"+ + "\u0000\u0000\u0904\u0905\u0001\u0000\u0000\u0000\u0905\u0906\u0005f\u0000"+ + "\u0000\u0906\u0908\u00059\u0000\u0000\u0907\u0909\u0003\u018e\u00c7\u0000"+ + "\u0908\u0907\u0001\u0000\u0000\u0000\u0908\u0909\u0001\u0000\u0000\u0000"+ + "\u0909\u090a\u0001\u0000\u0000\u0000\u090a\u090b\u0005:\u0000\u0000\u090b"+ + "\u093e\u0001\u0000\u0000\u0000\u090c\u090d\u0003:\u001d\u0000\u090d\u090f"+ + "\u0005A\u0000\u0000\u090e\u0910\u0003*\u0015\u0000\u090f\u090e\u0001\u0000"+ + "\u0000\u0000\u090f\u0910\u0001\u0000\u0000\u0000\u0910\u0911\u0001\u0000"+ + "\u0000\u0000\u0911\u0912\u0005f\u0000\u0000\u0912\u0914\u00059\u0000\u0000"+ + "\u0913\u0915\u0003\u018e\u00c7\u0000\u0914\u0913\u0001\u0000\u0000\u0000"+ + "\u0914\u0915\u0001\u0000\u0000\u0000\u0915\u0916\u0001\u0000\u0000\u0000"+ + "\u0916\u0917\u0005:\u0000\u0000\u0917\u093e\u0001\u0000\u0000\u0000\u0918"+ + "\u0919\u0003\u0160\u00b0\u0000\u0919\u091b\u0005A\u0000\u0000\u091a\u091c"+ + "\u0003*\u0015\u0000\u091b\u091a\u0001\u0000\u0000\u0000\u091b\u091c\u0001"+ + "\u0000\u0000\u0000\u091c\u091d\u0001\u0000\u0000\u0000\u091d\u091e\u0005"+ + "f\u0000\u0000\u091e\u0920\u00059\u0000\u0000\u091f\u0921\u0003\u018e\u00c7"+ + "\u0000\u0920\u091f\u0001\u0000\u0000\u0000\u0920\u0921\u0001\u0000\u0000"+ + "\u0000\u0921\u0922\u0001\u0000\u0000\u0000\u0922\u0923\u0005:\u0000\u0000"+ + "\u0923\u093e\u0001\u0000\u0000\u0000\u0924\u0925\u0005(\u0000\u0000\u0925"+ + "\u0927\u0005A\u0000\u0000\u0926\u0928\u0003*\u0015\u0000\u0927\u0926\u0001"+ + "\u0000\u0000\u0000\u0927\u0928\u0001\u0000\u0000\u0000\u0928\u0929\u0001"+ + "\u0000\u0000\u0000\u0929\u092a\u0005f\u0000\u0000\u092a\u092c\u00059\u0000"+ + "\u0000\u092b\u092d\u0003\u018e\u00c7\u0000\u092c\u092b\u0001\u0000\u0000"+ + "\u0000\u092c\u092d\u0001\u0000\u0000\u0000\u092d\u092e\u0001\u0000\u0000"+ + "\u0000\u092e\u093e\u0005:\u0000\u0000\u092f\u0930\u00036\u001b\u0000\u0930"+ + "\u0931\u0005A\u0000\u0000\u0931\u0932\u0005(\u0000\u0000\u0932\u0934\u0005"+ + "A\u0000\u0000\u0933\u0935\u0003*\u0015\u0000\u0934\u0933\u0001\u0000\u0000"+ + "\u0000\u0934\u0935\u0001\u0000\u0000\u0000\u0935\u0936\u0001\u0000\u0000"+ + "\u0000\u0936\u0937\u0005f\u0000\u0000\u0937\u0939\u00059\u0000\u0000\u0938"+ + "\u093a\u0003\u018e\u00c7\u0000\u0939\u0938\u0001\u0000\u0000\u0000\u0939"+ + "\u093a\u0001\u0000\u0000\u0000\u093a\u093b\u0001\u0000\u0000\u0000\u093b"+ + "\u093c\u0005:\u0000\u0000\u093c\u093e\u0001\u0000\u0000\u0000\u093d\u08f9"+ + "\u0001\u0000\u0000\u0000\u093d\u0900\u0001\u0000\u0000\u0000\u093d\u090c"+ + "\u0001\u0000\u0000\u0000\u093d\u0918\u0001\u0000\u0000\u0000\u093d\u0924"+ + "\u0001\u0000\u0000\u0000\u093d\u092f\u0001\u0000\u0000\u0000\u093e\u0189"+ + "\u0001\u0000\u0000\u0000\u093f\u0941\u0005A\u0000\u0000\u0940\u0942\u0003"+ + "*\u0015\u0000\u0941\u0940\u0001\u0000\u0000\u0000\u0941\u0942\u0001\u0000"+ + "\u0000\u0000\u0942\u0943\u0001\u0000\u0000\u0000\u0943\u0944\u0005f\u0000"+ + "\u0000\u0944\u0946\u00059\u0000\u0000\u0945\u0947\u0003\u018e\u00c7\u0000"+ + "\u0946\u0945\u0001\u0000\u0000\u0000\u0946\u0947\u0001\u0000\u0000\u0000"+ + "\u0947\u0948\u0001\u0000\u0000\u0000\u0948\u0949\u0005:\u0000\u0000\u0949"+ + "\u018b\u0001\u0000\u0000\u0000\u094a\u094b\u0003<\u001e\u0000\u094b\u094d"+ + "\u00059\u0000\u0000\u094c\u094e\u0003\u018e\u00c7\u0000\u094d\u094c\u0001"+ + "\u0000\u0000\u0000\u094d\u094e\u0001\u0000\u0000\u0000\u094e\u094f\u0001"+ + "\u0000\u0000\u0000\u094f\u0950\u0005:\u0000\u0000\u0950\u0983\u0001\u0000"+ + "\u0000\u0000\u0951\u0952\u00036\u001b\u0000\u0952\u0954\u0005A\u0000\u0000"+ + "\u0953\u0955\u0003*\u0015\u0000\u0954\u0953\u0001\u0000\u0000\u0000\u0954"+ + "\u0955\u0001\u0000\u0000\u0000\u0955\u0956\u0001\u0000\u0000\u0000\u0956"+ + "\u0957\u0005f\u0000\u0000\u0957\u0959\u00059\u0000\u0000\u0958\u095a\u0003"+ + "\u018e\u00c7\u0000\u0959\u0958\u0001\u0000\u0000\u0000\u0959\u095a\u0001"+ + "\u0000\u0000\u0000\u095a\u095b\u0001\u0000\u0000\u0000\u095b\u095c\u0005"+ + ":\u0000\u0000\u095c\u0983\u0001\u0000\u0000\u0000\u095d\u095e\u0003:\u001d"+ + "\u0000\u095e\u0960\u0005A\u0000\u0000\u095f\u0961\u0003*\u0015\u0000\u0960"+ + "\u095f\u0001\u0000\u0000\u0000\u0960\u0961\u0001\u0000\u0000\u0000\u0961"+ + "\u0962\u0001\u0000\u0000\u0000\u0962\u0963\u0005f\u0000\u0000\u0963\u0965"+ + "\u00059\u0000\u0000\u0964\u0966\u0003\u018e\u00c7\u0000\u0965\u0964\u0001"+ + "\u0000\u0000\u0000\u0965\u0966\u0001\u0000\u0000\u0000\u0966\u0967\u0001"+ + "\u0000\u0000\u0000\u0967\u0968\u0005:\u0000\u0000\u0968\u0983\u0001\u0000"+ + "\u0000\u0000\u0969\u096a\u0005(\u0000\u0000\u096a\u096c\u0005"; + private static final String _serializedATNSegment1 = + "A\u0000\u0000\u096b\u096d\u0003*\u0015\u0000\u096c\u096b\u0001\u0000\u0000"+ + "\u0000\u096c\u096d\u0001\u0000\u0000\u0000\u096d\u096e\u0001\u0000\u0000"+ + "\u0000\u096e\u096f\u0005f\u0000\u0000\u096f\u0971\u00059\u0000\u0000\u0970"+ + "\u0972\u0003\u018e\u00c7\u0000\u0971\u0970\u0001\u0000\u0000\u0000\u0971"+ + "\u0972\u0001\u0000\u0000\u0000\u0972\u0973\u0001\u0000\u0000\u0000\u0973"+ + "\u0983\u0005:\u0000\u0000\u0974\u0975\u00036\u001b\u0000\u0975\u0976\u0005"+ + "A\u0000\u0000\u0976\u0977\u0005(\u0000\u0000\u0977\u0979\u0005A\u0000"+ + "\u0000\u0978\u097a\u0003*\u0015\u0000\u0979\u0978\u0001\u0000\u0000\u0000"+ + "\u0979\u097a\u0001\u0000\u0000\u0000\u097a\u097b\u0001\u0000\u0000\u0000"+ + "\u097b\u097c\u0005f\u0000\u0000\u097c\u097e\u00059\u0000\u0000\u097d\u097f"+ + "\u0003\u018e\u00c7\u0000\u097e\u097d\u0001\u0000\u0000\u0000\u097e\u097f"+ + "\u0001\u0000\u0000\u0000\u097f\u0980\u0001\u0000\u0000\u0000\u0980\u0981"+ + "\u0005:\u0000\u0000\u0981\u0983\u0001\u0000\u0000\u0000\u0982\u094a\u0001"+ + "\u0000\u0000\u0000\u0982\u0951\u0001\u0000\u0000\u0000\u0982\u095d\u0001"+ + "\u0000\u0000\u0000\u0982\u0969\u0001\u0000\u0000\u0000\u0982\u0974\u0001"+ + "\u0000\u0000\u0000\u0983\u018d\u0001\u0000\u0000\u0000\u0984\u0989\u0003"+ + "\u019e\u00cf\u0000\u0985\u0986\u0005@\u0000\u0000\u0986\u0988\u0003\u019e"+ + "\u00cf\u0000\u0987\u0985\u0001\u0000\u0000\u0000\u0988\u098b\u0001\u0000"+ + "\u0000\u0000\u0989\u0987\u0001\u0000\u0000\u0000\u0989\u098a\u0001\u0000"+ + "\u0000\u0000\u098a\u018f\u0001\u0000\u0000\u0000\u098b\u0989\u0001\u0000"+ + "\u0000\u0000\u098c\u098d\u0003:\u001d\u0000\u098d\u098f\u0005Z\u0000\u0000"+ + "\u098e\u0990\u0003*\u0015\u0000\u098f\u098e\u0001\u0000\u0000\u0000\u098f"+ + "\u0990\u0001\u0000\u0000\u0000\u0990\u0991\u0001\u0000\u0000\u0000\u0991"+ + "\u0992\u0005f\u0000\u0000\u0992\u09bc\u0001\u0000\u0000\u0000\u0993\u0994"+ + "\u0003\f\u0006\u0000\u0994\u0996\u0005Z\u0000\u0000\u0995\u0997\u0003"+ + "*\u0015\u0000\u0996\u0995\u0001\u0000\u0000\u0000\u0996\u0997\u0001\u0000"+ + "\u0000\u0000\u0997\u0998\u0001\u0000\u0000\u0000\u0998\u0999\u0005f\u0000"+ + "\u0000\u0999\u09bc\u0001\u0000\u0000\u0000\u099a\u099b\u0003\u0160\u00b0"+ + "\u0000\u099b\u099d\u0005Z\u0000\u0000\u099c\u099e\u0003*\u0015\u0000\u099d"+ + "\u099c\u0001\u0000\u0000\u0000\u099d\u099e\u0001\u0000\u0000\u0000\u099e"+ + "\u099f\u0001\u0000\u0000\u0000\u099f\u09a0\u0005f\u0000\u0000\u09a0\u09bc"+ + "\u0001\u0000\u0000\u0000\u09a1\u09a2\u0005(\u0000\u0000\u09a2\u09a4\u0005"+ + "Z\u0000\u0000\u09a3\u09a5\u0003*\u0015\u0000\u09a4\u09a3\u0001\u0000\u0000"+ + "\u0000\u09a4\u09a5\u0001\u0000\u0000\u0000\u09a5\u09a6\u0001\u0000\u0000"+ + "\u0000\u09a6\u09bc\u0005f\u0000\u0000\u09a7\u09a8\u00036\u001b\u0000\u09a8"+ + "\u09a9\u0005A\u0000\u0000\u09a9\u09aa\u0005(\u0000\u0000\u09aa\u09ac\u0005"+ + "Z\u0000\u0000\u09ab\u09ad\u0003*\u0015\u0000\u09ac\u09ab\u0001\u0000\u0000"+ + "\u0000\u09ac\u09ad\u0001\u0000\u0000\u0000\u09ad\u09ae\u0001\u0000\u0000"+ + "\u0000\u09ae\u09af\u0005f\u0000\u0000\u09af\u09bc\u0001\u0000\u0000\u0000"+ + "\u09b0\u09b1\u0003\u0010\b\u0000\u09b1\u09b3\u0005Z\u0000\u0000\u09b2"+ + "\u09b4\u0003*\u0015\u0000\u09b3\u09b2\u0001\u0000\u0000\u0000\u09b3\u09b4"+ + "\u0001\u0000\u0000\u0000\u09b4\u09b5\u0001\u0000\u0000\u0000\u09b5\u09b6"+ + "\u0005\u001f\u0000\u0000\u09b6\u09bc\u0001\u0000\u0000\u0000\u09b7\u09b8"+ + "\u0003\u001e\u000f\u0000\u09b8\u09b9\u0005Z\u0000\u0000\u09b9\u09ba\u0005"+ + "\u001f\u0000\u0000\u09ba\u09bc\u0001\u0000\u0000\u0000\u09bb\u098c\u0001"+ + "\u0000\u0000\u0000\u09bb\u0993\u0001\u0000\u0000\u0000\u09bb\u099a\u0001"+ + "\u0000\u0000\u0000\u09bb\u09a1\u0001\u0000\u0000\u0000\u09bb\u09a7\u0001"+ + "\u0000\u0000\u0000\u09bb\u09b0\u0001\u0000\u0000\u0000\u09bb\u09b7\u0001"+ + "\u0000\u0000\u0000\u09bc\u0191\u0001\u0000\u0000\u0000\u09bd\u09bf\u0005"+ + "Z\u0000\u0000\u09be\u09c0\u0003*\u0015\u0000\u09bf\u09be\u0001\u0000\u0000"+ + "\u0000\u09bf\u09c0\u0001\u0000\u0000\u0000\u09c0\u09c1\u0001\u0000\u0000"+ + "\u0000\u09c1\u09c2\u0005f\u0000\u0000\u09c2\u0193\u0001\u0000\u0000\u0000"+ + "\u09c3\u09c4\u0003:\u001d\u0000\u09c4\u09c6\u0005Z\u0000\u0000\u09c5\u09c7"+ + "\u0003*\u0015\u0000\u09c6\u09c5\u0001\u0000\u0000\u0000\u09c6\u09c7\u0001"+ + "\u0000\u0000\u0000\u09c7\u09c8\u0001\u0000\u0000\u0000\u09c8\u09c9\u0005"+ + "f\u0000\u0000\u09c9\u09ec\u0001\u0000\u0000\u0000\u09ca\u09cb\u0003\f"+ + "\u0006\u0000\u09cb\u09cd\u0005Z\u0000\u0000\u09cc\u09ce\u0003*\u0015\u0000"+ + "\u09cd\u09cc\u0001\u0000\u0000\u0000\u09cd\u09ce\u0001\u0000\u0000\u0000"+ + "\u09ce\u09cf\u0001\u0000\u0000\u0000\u09cf\u09d0\u0005f\u0000\u0000\u09d0"+ + "\u09ec\u0001\u0000\u0000\u0000\u09d1\u09d2\u0005(\u0000\u0000\u09d2\u09d4"+ + "\u0005Z\u0000\u0000\u09d3\u09d5\u0003*\u0015\u0000\u09d4\u09d3\u0001\u0000"+ + "\u0000\u0000\u09d4\u09d5\u0001\u0000\u0000\u0000\u09d5\u09d6\u0001\u0000"+ + "\u0000\u0000\u09d6\u09ec\u0005f\u0000\u0000\u09d7\u09d8\u00036\u001b\u0000"+ + "\u09d8\u09d9\u0005A\u0000\u0000\u09d9\u09da\u0005(\u0000\u0000\u09da\u09dc"+ + "\u0005Z\u0000\u0000\u09db\u09dd\u0003*\u0015\u0000\u09dc\u09db\u0001\u0000"+ + "\u0000\u0000\u09dc\u09dd\u0001\u0000\u0000\u0000\u09dd\u09de\u0001\u0000"+ + "\u0000\u0000\u09de\u09df\u0005f\u0000\u0000\u09df\u09ec\u0001\u0000\u0000"+ + "\u0000\u09e0\u09e1\u0003\u0010\b\u0000\u09e1\u09e3\u0005Z\u0000\u0000"+ + "\u09e2\u09e4\u0003*\u0015\u0000\u09e3\u09e2\u0001\u0000\u0000\u0000\u09e3"+ + "\u09e4\u0001\u0000\u0000\u0000\u09e4\u09e5\u0001\u0000\u0000\u0000\u09e5"+ + "\u09e6\u0005\u001f\u0000\u0000\u09e6\u09ec\u0001\u0000\u0000\u0000\u09e7"+ + "\u09e8\u0003\u001e\u000f\u0000\u09e8\u09e9\u0005Z\u0000\u0000\u09e9\u09ea"+ + "\u0005\u001f\u0000\u0000\u09ea\u09ec\u0001\u0000\u0000\u0000\u09eb\u09c3"+ + "\u0001\u0000\u0000\u0000\u09eb\u09ca\u0001\u0000\u0000\u0000\u09eb\u09d1"+ + "\u0001\u0000\u0000\u0000\u09eb\u09d7\u0001\u0000\u0000\u0000\u09eb\u09e0"+ + "\u0001\u0000\u0000\u0000\u09eb\u09e7\u0001\u0000\u0000\u0000\u09ec\u0195"+ + "\u0001\u0000\u0000\u0000\u09ed\u09ee\u0005\u001f\u0000\u0000\u09ee\u09ef"+ + "\u0003\u0004\u0002\u0000\u09ef\u09f1\u0003\u0198\u00cc\u0000\u09f0\u09f2"+ + "\u0003 \u0010\u0000\u09f1\u09f0\u0001\u0000\u0000\u0000\u09f1\u09f2\u0001"+ + "\u0000\u0000\u0000\u09f2\u0a04\u0001\u0000\u0000\u0000\u09f3\u09f4\u0005"+ + "\u001f\u0000\u0000\u09f4\u09f5\u0003\u000e\u0007\u0000\u09f5\u09f7\u0003"+ + "\u0198\u00cc\u0000\u09f6\u09f8\u0003 \u0010\u0000\u09f7\u09f6\u0001\u0000"+ + "\u0000\u0000\u09f7\u09f8\u0001\u0000\u0000\u0000\u09f8\u0a04\u0001\u0000"+ + "\u0000\u0000\u09f9\u09fa\u0005\u001f\u0000\u0000\u09fa\u09fb\u0003\u0004"+ + "\u0002\u0000\u09fb\u09fc\u0003 \u0010\u0000\u09fc\u09fd\u0003\u00f8|\u0000"+ + "\u09fd\u0a04\u0001\u0000\u0000\u0000\u09fe\u09ff\u0005\u001f\u0000\u0000"+ + "\u09ff\u0a00\u0003\u000e\u0007\u0000\u0a00\u0a01\u0003 \u0010\u0000\u0a01"+ + "\u0a02\u0003\u00f8|\u0000\u0a02\u0a04\u0001\u0000\u0000\u0000\u0a03\u09ed"+ + "\u0001\u0000\u0000\u0000\u0a03\u09f3\u0001\u0000\u0000\u0000\u0a03\u09f9"+ + "\u0001\u0000\u0000\u0000\u0a03\u09fe\u0001\u0000\u0000\u0000\u0a04\u0197"+ + "\u0001\u0000\u0000\u0000\u0a05\u0a09\u0003\u019a\u00cd\u0000\u0a06\u0a08"+ + "\u0003\u019a\u00cd\u0000\u0a07\u0a06\u0001\u0000\u0000\u0000\u0a08\u0a0b"+ + "\u0001\u0000\u0000\u0000\u0a09\u0a07\u0001\u0000\u0000\u0000\u0a09\u0a0a"+ + "\u0001\u0000\u0000\u0000\u0a0a\u0199\u0001\u0000\u0000\u0000\u0a0b\u0a09"+ + "\u0001\u0000\u0000\u0000\u0a0c\u0a0e\u0003\u00e6s\u0000\u0a0d\u0a0c\u0001"+ + "\u0000\u0000\u0000\u0a0e\u0a11\u0001\u0000\u0000\u0000\u0a0f\u0a0d\u0001"+ + "\u0000\u0000\u0000\u0a0f\u0a10\u0001\u0000\u0000\u0000\u0a10\u0a12\u0001"+ + "\u0000\u0000\u0000\u0a11\u0a0f\u0001\u0000\u0000\u0000\u0a12\u0a13\u0005"+ + "=\u0000\u0000\u0a13\u0a14\u0003\u019e\u00cf\u0000\u0a14\u0a15\u0005>\u0000"+ + "\u0000\u0a15\u019b\u0001\u0000\u0000\u0000\u0a16\u0a17\u0003\u019e\u00cf"+ + "\u0000\u0a17\u019d\u0001\u0000\u0000\u0000\u0a18\u0a1b\u0003\u01a0\u00d0"+ + "\u0000\u0a19\u0a1b\u0003\u01a8\u00d4\u0000\u0a1a\u0a18\u0001\u0000\u0000"+ + "\u0000\u0a1a\u0a19\u0001\u0000\u0000\u0000\u0a1b\u019f\u0001\u0000\u0000"+ + "\u0000\u0a1c\u0a1d\u0003\u01a2\u00d1\u0000\u0a1d\u0a1e\u0005Y\u0000\u0000"+ + "\u0a1e\u0a1f\u0003\u01a6\u00d3\u0000\u0a1f\u01a1\u0001\u0000\u0000\u0000"+ + "\u0a20\u0a2b\u0005f\u0000\u0000\u0a21\u0a23\u00059\u0000\u0000\u0a22\u0a24"+ + "\u0003\u0096K\u0000\u0a23\u0a22\u0001\u0000\u0000\u0000\u0a23\u0a24\u0001"+ + "\u0000\u0000\u0000\u0a24\u0a25\u0001\u0000\u0000\u0000\u0a25\u0a2b\u0005"+ + ":\u0000\u0000\u0a26\u0a27\u00059\u0000\u0000\u0a27\u0a28\u0003\u01a4\u00d2"+ + "\u0000\u0a28\u0a29\u0005:\u0000\u0000\u0a29\u0a2b\u0001\u0000\u0000\u0000"+ + "\u0a2a\u0a20\u0001\u0000\u0000\u0000\u0a2a\u0a21\u0001\u0000\u0000\u0000"+ + "\u0a2a\u0a26\u0001\u0000\u0000\u0000\u0a2b\u01a3\u0001\u0000\u0000\u0000"+ + "\u0a2c\u0a31\u0005f\u0000\u0000\u0a2d\u0a2e\u0005@\u0000\u0000\u0a2e\u0a30"+ + "\u0005f\u0000\u0000\u0a2f\u0a2d\u0001\u0000\u0000\u0000\u0a30\u0a33\u0001"+ + "\u0000\u0000\u0000\u0a31\u0a2f\u0001\u0000\u0000\u0000\u0a31\u0a32\u0001"+ + "\u0000\u0000\u0000\u0a32\u01a5\u0001\u0000\u0000\u0000\u0a33\u0a31\u0001"+ + "\u0000\u0000\u0000\u0a34\u0a37\u0003\u019e\u00cf\u0000\u0a35\u0a37\u0003"+ + "\u00fc~\u0000\u0a36\u0a34\u0001\u0000\u0000\u0000\u0a36\u0a35\u0001\u0000"+ + "\u0000\u0000\u0a37\u01a7\u0001\u0000\u0000\u0000\u0a38\u0a3b\u0003\u01b0"+ + "\u00d8\u0000\u0a39\u0a3b\u0003\u01aa\u00d5\u0000\u0a3a\u0a38\u0001\u0000"+ + "\u0000\u0000\u0a3a\u0a39\u0001\u0000\u0000\u0000\u0a3b\u01a9\u0001\u0000"+ + "\u0000\u0000\u0a3c\u0a3d\u0003\u01ac\u00d6\u0000\u0a3d\u0a3e\u0003\u01ae"+ + "\u00d7\u0000\u0a3e\u0a3f\u0003\u019e\u00cf\u0000\u0a3f\u01ab\u0001\u0000"+ + "\u0000\u0000\u0a40\u0a44\u0003:\u001d\u0000\u0a41\u0a44\u0003\u017c\u00be"+ + "\u0000\u0a42\u0a44\u0003\u0182\u00c1\u0000\u0a43\u0a40\u0001\u0000\u0000"+ + "\u0000\u0a43\u0a41\u0001\u0000\u0000\u0000\u0a43\u0a42\u0001\u0000\u0000"+ + "\u0000\u0a44\u01ad\u0001\u0000\u0000\u0000\u0a45\u0a46\u0007\u0003\u0000"+ + "\u0000\u0a46\u01af\u0001\u0000\u0000\u0000\u0a47\u0a4f\u0003\u01b2\u00d9"+ + "\u0000\u0a48\u0a49\u0003\u01b2\u00d9\u0000\u0a49\u0a4a\u0005G\u0000\u0000"+ + "\u0a4a\u0a4b\u0003\u019e\u00cf\u0000\u0a4b\u0a4c\u0005H\u0000\u0000\u0a4c"+ + "\u0a4d\u0003\u01b0\u00d8\u0000\u0a4d\u0a4f\u0001\u0000\u0000\u0000\u0a4e"+ + "\u0a47\u0001\u0000\u0000\u0000\u0a4e\u0a48\u0001\u0000\u0000\u0000\u0a4f"+ + "\u01b1\u0001\u0000\u0000\u0000\u0a50\u0a51\u0006\u00d9\uffff\uffff\u0000"+ + "\u0a51\u0a52\u0003\u01b4\u00da\u0000\u0a52\u0a58\u0001\u0000\u0000\u0000"+ + "\u0a53\u0a54\n\u0001\u0000\u0000\u0a54\u0a55\u0005N\u0000\u0000\u0a55"+ + "\u0a57\u0003\u01b4\u00da\u0000\u0a56\u0a53\u0001\u0000\u0000\u0000\u0a57"+ + "\u0a5a\u0001\u0000\u0000\u0000\u0a58\u0a56\u0001\u0000\u0000\u0000\u0a58"+ + "\u0a59\u0001\u0000\u0000\u0000\u0a59\u01b3\u0001\u0000\u0000\u0000\u0a5a"+ + "\u0a58\u0001\u0000\u0000\u0000\u0a5b\u0a5c\u0006\u00da\uffff\uffff\u0000"+ + "\u0a5c\u0a5d\u0003\u01b6\u00db\u0000\u0a5d\u0a63\u0001\u0000\u0000\u0000"+ + "\u0a5e\u0a5f\n\u0001\u0000\u0000\u0a5f\u0a60\u0005M\u0000\u0000\u0a60"+ + "\u0a62\u0003\u01b6\u00db\u0000\u0a61\u0a5e\u0001\u0000\u0000\u0000\u0a62"+ + "\u0a65\u0001\u0000\u0000\u0000\u0a63\u0a61\u0001\u0000\u0000\u0000\u0a63"+ + "\u0a64\u0001\u0000\u0000\u0000\u0a64\u01b5\u0001\u0000\u0000\u0000\u0a65"+ + "\u0a63\u0001\u0000\u0000\u0000\u0a66\u0a67\u0006\u00db\uffff\uffff\u0000"+ + "\u0a67\u0a68\u0003\u01b8\u00dc\u0000\u0a68\u0a6e\u0001\u0000\u0000\u0000"+ + "\u0a69\u0a6a\n\u0001\u0000\u0000\u0a6a\u0a6b\u0005V\u0000\u0000\u0a6b"+ + "\u0a6d\u0003\u01b8\u00dc\u0000\u0a6c\u0a69\u0001\u0000\u0000\u0000\u0a6d"+ + "\u0a70\u0001\u0000\u0000\u0000\u0a6e\u0a6c\u0001\u0000\u0000\u0000\u0a6e"+ + "\u0a6f\u0001\u0000\u0000\u0000\u0a6f\u01b7\u0001\u0000\u0000\u0000\u0a70"+ + "\u0a6e\u0001\u0000\u0000\u0000\u0a71\u0a72\u0006\u00dc\uffff\uffff\u0000"+ + "\u0a72\u0a73\u0003\u01ba\u00dd\u0000\u0a73\u0a79\u0001\u0000\u0000\u0000"+ + "\u0a74\u0a75\n\u0001\u0000\u0000\u0a75\u0a76\u0005W\u0000\u0000\u0a76"+ + "\u0a78\u0003\u01ba\u00dd\u0000\u0a77\u0a74\u0001\u0000\u0000\u0000\u0a78"+ + "\u0a7b\u0001\u0000\u0000\u0000\u0a79\u0a77\u0001\u0000\u0000\u0000\u0a79"+ + "\u0a7a\u0001\u0000\u0000\u0000\u0a7a\u01b9\u0001\u0000\u0000\u0000\u0a7b"+ + "\u0a79\u0001\u0000\u0000\u0000\u0a7c\u0a7d\u0006\u00dd\uffff\uffff\u0000"+ + "\u0a7d\u0a7e\u0003\u01bc\u00de\u0000\u0a7e\u0a84\u0001\u0000\u0000\u0000"+ + "\u0a7f\u0a80\n\u0001\u0000\u0000\u0a80\u0a81\u0005U\u0000\u0000\u0a81"+ + "\u0a83\u0003\u01bc\u00de\u0000\u0a82\u0a7f\u0001\u0000\u0000\u0000\u0a83"+ + "\u0a86\u0001\u0000\u0000\u0000\u0a84\u0a82\u0001\u0000\u0000\u0000\u0a84"+ + "\u0a85\u0001\u0000\u0000\u0000\u0a85\u01bb\u0001\u0000\u0000\u0000\u0a86"+ + "\u0a84\u0001\u0000\u0000\u0000\u0a87\u0a88\u0006\u00de\uffff\uffff\u0000"+ + "\u0a88\u0a89\u0003\u01be\u00df\u0000\u0a89\u0a92\u0001\u0000\u0000\u0000"+ + "\u0a8a\u0a8b\n\u0002\u0000\u0000\u0a8b\u0a8c\u0005I\u0000\u0000\u0a8c"+ + "\u0a91\u0003\u01be\u00df\u0000\u0a8d\u0a8e\n\u0001\u0000\u0000\u0a8e\u0a8f"+ + "\u0005L\u0000\u0000\u0a8f\u0a91\u0003\u01be\u00df\u0000\u0a90\u0a8a\u0001"+ + "\u0000\u0000\u0000\u0a90\u0a8d\u0001\u0000\u0000\u0000\u0a91\u0a94\u0001"+ + "\u0000\u0000\u0000\u0a92\u0a90\u0001\u0000\u0000\u0000\u0a92\u0a93\u0001"+ + "\u0000\u0000\u0000\u0a93\u01bd\u0001\u0000\u0000\u0000\u0a94\u0a92\u0001"+ + "\u0000\u0000\u0000\u0a95\u0a96\u0006\u00df\uffff\uffff\u0000\u0a96\u0a97"+ + "\u0003\u01c0\u00e0\u0000\u0a97\u0aa9\u0001\u0000\u0000\u0000\u0a98\u0a99"+ + "\n\u0005\u0000\u0000\u0a99\u0a9a\u0005D\u0000\u0000\u0a9a\u0aa8\u0003"+ + "\u01c0\u00e0\u0000\u0a9b\u0a9c\n\u0004\u0000\u0000\u0a9c\u0a9d\u0005C"+ + "\u0000\u0000\u0a9d\u0aa8\u0003\u01c0\u00e0\u0000\u0a9e\u0a9f\n\u0003\u0000"+ + "\u0000\u0a9f\u0aa0\u0005J\u0000\u0000\u0aa0\u0aa8\u0003\u01c0\u00e0\u0000"+ + "\u0aa1\u0aa2\n\u0002\u0000\u0000\u0aa2\u0aa3\u0005K\u0000\u0000\u0aa3"+ + "\u0aa8\u0003\u01c0\u00e0\u0000\u0aa4\u0aa5\n\u0001\u0000\u0000\u0aa5\u0aa6"+ + "\u0005\u001a\u0000\u0000\u0aa6\u0aa8\u0003\f\u0006\u0000\u0aa7\u0a98\u0001"+ + "\u0000\u0000\u0000\u0aa7\u0a9b\u0001\u0000\u0000\u0000\u0aa7\u0a9e\u0001"+ + "\u0000\u0000\u0000\u0aa7\u0aa1\u0001\u0000\u0000\u0000\u0aa7\u0aa4\u0001"+ + "\u0000\u0000\u0000\u0aa8\u0aab\u0001\u0000\u0000\u0000\u0aa9\u0aa7\u0001"+ + "\u0000\u0000\u0000\u0aa9\u0aaa\u0001\u0000\u0000\u0000\u0aaa\u01bf\u0001"+ + "\u0000\u0000\u0000\u0aab\u0aa9\u0001\u0000\u0000\u0000\u0aac\u0aad\u0006"+ + "\u00e0\uffff\uffff\u0000\u0aad\u0aae\u0003\u01c2\u00e1\u0000\u0aae\u0abe"+ + "\u0001\u0000\u0000\u0000\u0aaf\u0ab0\n\u0003\u0000\u0000\u0ab0\u0ab1\u0005"+ + "D\u0000\u0000\u0ab1\u0ab2\u0005D\u0000\u0000\u0ab2\u0abd\u0003\u01c2\u00e1"+ + "\u0000\u0ab3\u0ab4\n\u0002\u0000\u0000\u0ab4\u0ab5\u0005C\u0000\u0000"+ + "\u0ab5\u0ab6\u0005C\u0000\u0000\u0ab6\u0abd\u0003\u01c2\u00e1\u0000\u0ab7"+ + "\u0ab8\n\u0001\u0000\u0000\u0ab8\u0ab9\u0005C\u0000\u0000\u0ab9\u0aba"+ + "\u0005C\u0000\u0000\u0aba\u0abb\u0005C\u0000\u0000\u0abb\u0abd\u0003\u01c2"+ + "\u00e1\u0000\u0abc\u0aaf\u0001\u0000\u0000\u0000\u0abc\u0ab3\u0001\u0000"+ + "\u0000\u0000\u0abc\u0ab7\u0001\u0000\u0000\u0000\u0abd\u0ac0\u0001\u0000"+ + "\u0000\u0000\u0abe\u0abc\u0001\u0000\u0000\u0000\u0abe\u0abf\u0001\u0000"+ + "\u0000\u0000\u0abf\u01c1\u0001\u0000\u0000\u0000\u0ac0\u0abe\u0001\u0000"+ + "\u0000\u0000\u0ac1\u0ac2\u0006\u00e1\uffff\uffff\u0000\u0ac2\u0ac3\u0003"+ + "\u01c4\u00e2\u0000\u0ac3\u0acc\u0001\u0000\u0000\u0000\u0ac4\u0ac5\n\u0002"+ + "\u0000\u0000\u0ac5\u0ac6\u0005Q\u0000\u0000\u0ac6\u0acb\u0003\u01c4\u00e2"+ + "\u0000\u0ac7\u0ac8\n\u0001\u0000\u0000\u0ac8\u0ac9\u0005R\u0000\u0000"+ + "\u0ac9\u0acb\u0003\u01c4\u00e2\u0000\u0aca\u0ac4\u0001\u0000\u0000\u0000"+ + "\u0aca\u0ac7\u0001\u0000\u0000\u0000\u0acb\u0ace\u0001\u0000\u0000\u0000"+ + "\u0acc\u0aca\u0001\u0000\u0000\u0000\u0acc\u0acd\u0001\u0000\u0000\u0000"+ + "\u0acd\u01c3\u0001\u0000\u0000\u0000\u0ace\u0acc\u0001\u0000\u0000\u0000"+ + "\u0acf\u0ad0\u0006\u00e2\uffff\uffff\u0000\u0ad0\u0ad1\u0003\u01c6\u00e3"+ + "\u0000\u0ad1\u0add\u0001\u0000\u0000\u0000\u0ad2\u0ad3\n\u0003\u0000\u0000"+ + "\u0ad3\u0ad4\u0005S\u0000\u0000\u0ad4\u0adc\u0003\u01c6\u00e3\u0000\u0ad5"+ + "\u0ad6\n\u0002\u0000\u0000\u0ad6\u0ad7\u0005T\u0000\u0000\u0ad7\u0adc"+ + "\u0003\u01c6\u00e3\u0000\u0ad8\u0ad9\n\u0001\u0000\u0000\u0ad9\u0ada\u0005"+ + "X\u0000\u0000\u0ada\u0adc\u0003\u01c6\u00e3\u0000\u0adb\u0ad2\u0001\u0000"+ + "\u0000\u0000\u0adb\u0ad5\u0001\u0000\u0000\u0000\u0adb\u0ad8\u0001\u0000"+ + "\u0000\u0000\u0adc\u0adf\u0001\u0000\u0000\u0000\u0add\u0adb\u0001\u0000"+ + "\u0000\u0000\u0add\u0ade\u0001\u0000\u0000\u0000\u0ade\u01c5\u0001\u0000"+ + "\u0000\u0000\u0adf\u0add\u0001\u0000\u0000\u0000\u0ae0\u0ae8\u0003\u01c8"+ + "\u00e4\u0000\u0ae1\u0ae8\u0003\u01ca\u00e5\u0000\u0ae2\u0ae3\u0005Q\u0000"+ + "\u0000\u0ae3\u0ae8\u0003\u01c6\u00e3\u0000\u0ae4\u0ae5\u0005R\u0000\u0000"+ + "\u0ae5\u0ae8\u0003\u01c6\u00e3\u0000\u0ae6\u0ae8\u0003\u01cc\u00e6\u0000"+ + "\u0ae7\u0ae0\u0001\u0000\u0000\u0000\u0ae7\u0ae1\u0001\u0000\u0000\u0000"+ + "\u0ae7\u0ae2\u0001\u0000\u0000\u0000\u0ae7\u0ae4\u0001\u0000\u0000\u0000"+ + "\u0ae7\u0ae6\u0001\u0000\u0000\u0000\u0ae8\u01c7\u0001\u0000\u0000\u0000"+ + "\u0ae9\u0aea\u0005O\u0000\u0000\u0aea\u0aeb\u0003\u01c6\u00e3\u0000\u0aeb"+ + "\u01c9\u0001\u0000\u0000\u0000\u0aec\u0aed\u0005P\u0000\u0000\u0aed\u0aee"+ + "\u0003\u01c6\u00e3\u0000\u0aee\u01cb\u0001\u0000\u0000\u0000\u0aef\u0af6"+ + "\u0003\u01ce\u00e7\u0000\u0af0\u0af1\u0005F\u0000\u0000\u0af1\u0af6\u0003"+ + "\u01c6\u00e3\u0000\u0af2\u0af3\u0005E\u0000\u0000\u0af3\u0af6\u0003\u01c6"+ + "\u00e3\u0000\u0af4\u0af6\u0003\u01d8\u00ec\u0000\u0af5\u0aef\u0001\u0000"+ + "\u0000\u0000\u0af5\u0af0\u0001\u0000\u0000\u0000\u0af5\u0af2\u0001\u0000"+ + "\u0000\u0000\u0af5\u0af4\u0001\u0000\u0000\u0000\u0af6\u01cd\u0001\u0000"+ + "\u0000\u0000\u0af7\u0afa\u0003\u0160\u00b0\u0000\u0af8\u0afa\u0003:\u001d"+ + "\u0000\u0af9\u0af7\u0001\u0000\u0000\u0000\u0af9\u0af8\u0001\u0000\u0000"+ + "\u0000\u0afa\u0aff\u0001\u0000\u0000\u0000\u0afb\u0afe\u0003\u01d2\u00e9"+ + "\u0000\u0afc\u0afe\u0003\u01d6\u00eb\u0000\u0afd\u0afb\u0001\u0000\u0000"+ + "\u0000\u0afd\u0afc\u0001\u0000\u0000\u0000\u0afe\u0b01\u0001\u0000\u0000"+ + "\u0000\u0aff\u0afd\u0001\u0000\u0000\u0000\u0aff\u0b00\u0001\u0000\u0000"+ + "\u0000\u0b00\u01cf\u0001\u0000\u0000\u0000\u0b01\u0aff\u0001\u0000\u0000"+ + "\u0000\u0b02\u0b03\u0003\u01ce\u00e7\u0000\u0b03\u0b04\u0005O\u0000\u0000"+ + "\u0b04\u01d1\u0001\u0000\u0000\u0000\u0b05\u0b06\u0005O\u0000\u0000\u0b06"+ + "\u01d3\u0001\u0000\u0000\u0000\u0b07\u0b08\u0003\u01ce\u00e7\u0000\u0b08"+ + "\u0b09\u0005P\u0000\u0000\u0b09\u01d5\u0001\u0000\u0000\u0000\u0b0a\u0b0b"+ + "\u0005P\u0000\u0000\u0b0b\u01d7\u0001\u0000\u0000\u0000\u0b0c\u0b0d\u0005"+ + "9\u0000\u0000\u0b0d\u0b0e\u0003\u0004\u0002\u0000\u0b0e\u0b0f\u0005:\u0000"+ + "\u0000\u0b0f\u0b10\u0003\u01c6\u00e3\u0000\u0b10\u0b28\u0001\u0000\u0000"+ + "\u0000\u0b11\u0b12\u00059\u0000\u0000\u0b12\u0b16\u0003\f\u0006\u0000"+ + "\u0b13\u0b15\u0003(\u0014\u0000\u0b14\u0b13\u0001\u0000\u0000\u0000\u0b15"+ + "\u0b18\u0001\u0000\u0000\u0000\u0b16\u0b14\u0001\u0000\u0000\u0000\u0b16"+ + "\u0b17\u0001\u0000\u0000\u0000\u0b17\u0b19\u0001\u0000\u0000\u0000\u0b18"+ + "\u0b16\u0001\u0000\u0000\u0000\u0b19\u0b1a\u0005:\u0000\u0000\u0b1a\u0b1b"+ + "\u0003\u01cc\u00e6\u0000\u0b1b\u0b28\u0001\u0000\u0000\u0000\u0b1c\u0b1d"+ + "\u00059\u0000\u0000\u0b1d\u0b21\u0003\f\u0006\u0000\u0b1e\u0b20\u0003"+ + "(\u0014\u0000\u0b1f\u0b1e\u0001\u0000\u0000\u0000\u0b20\u0b23\u0001\u0000"+ + "\u0000\u0000\u0b21\u0b1f\u0001\u0000\u0000\u0000\u0b21\u0b22\u0001\u0000"+ + "\u0000\u0000\u0b22\u0b24\u0001\u0000\u0000\u0000\u0b23\u0b21\u0001\u0000"+ + "\u0000\u0000\u0b24\u0b25\u0005:\u0000\u0000\u0b25\u0b26\u0003\u01a0\u00d0"+ + "\u0000\u0b26\u0b28\u0001\u0000\u0000\u0000\u0b27\u0b0c\u0001\u0000\u0000"+ + "\u0000\u0b27\u0b11\u0001\u0000\u0000\u0000\u0b27\u0b1c\u0001\u0000\u0000"+ + "\u0000\u0b28\u01d9\u0001\u0000\u0000\u0000\u0144\u01de\u01e3\u01ea\u01ee"+ + "\u01f2\u01fb\u01ff\u0203\u0205\u020b\u0210\u0217\u021c\u021e\u0224\u0229"+ + "\u022e\u0233\u023e\u024c\u0251\u0259\u0260\u0266\u026b\u0276\u0279\u0287"+ + "\u028c\u0291\u0296\u029c\u02a6\u02ae\u02b8\u02c0\u02cc\u02d0\u02d5\u02db"+ + "\u02e3\u02ec\u02f7\u0314\u0318\u031d\u0323\u0326\u0329\u0335\u0340\u034e"+ + "\u0355\u035e\u0365\u036a\u0379\u0380\u0386\u038a\u038e\u0392\u0396\u039b"+ + "\u039f\u03a3\u03a5\u03aa\u03b1\u03b6\u03b8\u03be\u03c3\u03c7\u03da\u03df"+ + "\u03ef\u03f4\u03fa\u0400\u0402\u0406\u040b\u040f\u0416\u041d\u0425\u0428"+ + "\u042d\u0435\u043a\u0441\u0448\u044d\u0453\u045f\u0464\u0468\u0472\u0477"+ + "\u047f\u0482\u0487\u048f\u0492\u0497\u049c\u04a1\u04a6\u04ad\u04b2\u04ba"+ + "\u04bf\u04c4\u04c9\u04cf\u04d5\u04d8\u04db\u04e4\u04ea\u04f0\u04f3\u04f6"+ + "\u04fe\u0503\u0508\u050e\u0511\u051c\u0525\u052f\u0534\u053f\u0544\u0550"+ + "\u0555\u0561\u056b\u0570\u0578\u057b\u0582\u058a\u0590\u0599\u05a3\u05a7"+ + "\u05aa\u05b3\u05c1\u05c4\u05cd\u05d2\u05da\u05e0\u05e8\u05f4\u05fb\u0609"+ + "\u061f\u0641\u064d\u0653\u065f\u066c\u0686\u068a\u068f\u0693\u0697\u069f"+ + "\u06a3\u06a7\u06ae\u06b7\u06bf\u06ce\u06da\u06e0\u06e6\u06fb\u0700\u0706"+ + "\u0712\u071d\u0727\u072a\u072f\u0738\u073e\u0748\u074d\u0756\u076d\u0777"+ + "\u078d\u0794\u079c\u07a4\u07af\u07c6\u07d0\u07db\u07f1\u07f5\u07fa\u0802"+ + "\u0808\u080c\u0810\u0814\u081a\u081f\u0824\u0828\u082c\u0832\u0837\u083c"+ + "\u0840\u0844\u0846\u084b\u0850\u0855\u0859\u085d\u0861\u0866\u086e\u0874"+ + "\u0878\u087c\u0880\u0886\u088b\u0890\u0894\u0898\u089a\u089f\u08ae\u08bc"+ + "\u08c8\u08d1\u08e0\u08ed\u08f6\u08fc\u0903\u0908\u090f\u0914\u091b\u0920"+ + "\u0927\u092c\u0934\u0939\u093d\u0941\u0946\u094d\u0954\u0959\u0960\u0965"+ + "\u096c\u0971\u0979\u097e\u0982\u0989\u098f\u0996\u099d\u09a4\u09ac\u09b3"+ + "\u09bb\u09bf\u09c6\u09cd\u09d4\u09dc\u09e3\u09eb\u09f1\u09f7\u0a03\u0a09"+ + "\u0a0f\u0a1a\u0a23\u0a2a\u0a31\u0a36\u0a3a\u0a43\u0a4e\u0a58\u0a63\u0a6e"+ + "\u0a79\u0a84\u0a90\u0a92\u0aa7\u0aa9\u0abc\u0abe\u0aca\u0acc\u0adb\u0add"+ + "\u0ae7\u0af5\u0af9\u0afd\u0aff\u0b16\u0b21\u0b27"; + public static final String _serializedATN = Utils.join( + new String[] { + _serializedATNSegment0, + _serializedATNSegment1 + }, + "" + ); + 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/benchmarks/src/main/java/org/ucfs/Java.x b/benchmarks/src/main/java/org/ucfs/Java.x new file mode 100644 index 000000000..5223ffc76 --- /dev/null +++ b/benchmarks/src/main/java/org/ucfs/Java.x @@ -0,0 +1,166 @@ +package org.ucfs; + +import java.io.*; + +%% + +%public +%class JavaLexer +%type JavaToken +%unicode + +Identifier = [:jletter:] [:jletterdigit:]* +IntegerLiteral = {DecimalIntegerLiteral} | {HexIntegerLiteral} | {OctalIntegerLiteral} | {BinaryIntegerLiteral} + +DecimalIntegerLiteral = {DecimalNumeral} [lL]? +HexIntegerLiteral = {HexNumeral} [lL]? +OctalIntegerLiteral = {OctalNumeral} [lL]? +BinaryIntegerLiteral = {BinaryNumeral} [lL]? + +DecimalNumeral = 0 | [1-9] {Digits}? | [1-9] "_"+ {Digits} +Digits = [0-9] | [0-9] (([0-9] | "_")+)? [0-9] + +HexNumeral = "0x" {HexDigits} | "0X" {HexDigits} +HexDigits = [0-9a-fA-F] ((([0-9a-fA-F] | "_")+)? [0-9a-fA-F])? + +OctalNumeral = 0 ("_"+)? {OctalDigits} +OctalDigits = [0-7] ((([0-7] | "_")+)? [0-7])? + +BinaryNumeral = 0 [bB] {BinaryDigits} +BinaryDigits = [0-1] ((([0-1] | "_")+)? [0-1])? + +FloatingPointLiteral = {DecimalFloatingPointLiteral} | {HexadecimalFloatingPointLiteral} +DecimalFloatingPointLiteral = [0-9] "." [0-9]? {ExponentPart}? [fFdD]? | "." [0-9] {ExponentPart}? [fFdD]? | [0-9] {ExponentPart} [fFdD] | [0-9] {ExponentPart}? [fFdD] +ExponentPart = [eE] [\+\-]? {Digits} +HexadecimalFloatingPointLiteral = {HexSignificand} {BinaryExponent} [fFdD]? +HexSignificand = {HexNumeral} "."? | 0 [xX] {HexDigits}? "." {HexDigits} +BinaryExponent = [pP] [\+\-]? {Digits} + +BooleanLiteral = "false" | "true" +NullLiteral = "null" + +InputCharacter = \\ "u"+ [0-9a-fA-F] [0-9a-fA-F] [0-9a-fA-F] [0-9a-fA-F] | [^\r\n\"\\] + +EscapeSequence = \\ [btnfr\"\'\\] | \\ ([0-7] | [0-7] [0-7] | [0-3][0-7][0-7]) +LineTerminator = \r | \n | \r\n + +CharacterLiteral = \' [^\r\n\'\\] \' | \' {EscapeSequence} \' + +StringLiteral = \" {StringCharacter}* \" +StringCharacter = {InputCharacter} | {EscapeSequence} +WhiteSpace = {LineTerminator} | [\ \t\f] + +Comment = {TraditionalComment} | {DocumentationComment} +TraditionalComment = "/*" [^*] ~"*/" | "/*" "*"+ "/" +DocumentationComment = "/**" {CommentContent} "*"+ "/" +CommentContent = ( [^*] | \*+ [^/*] )* +%% + +"//".* { /* DO NOTHING */ } +"boolean" { return JavaToken.BOOLEAN; } +"byte" { return JavaToken.BYTE; } +"short" { return JavaToken.SHORT; } +"int" { return JavaToken.INT; } +"long" { return JavaToken.LONG; } +"char" { return JavaToken.CHAR; } +"float" { return JavaToken.FLOAT; } +"double" { return JavaToken.DOUBLE; } +"." { return JavaToken.DOT; } +"[" { return JavaToken.BRACKETLEFT; } +"]" { return JavaToken.BRACKETRIGHT; } +"(" { return JavaToken.PARENTHLEFT; } +")" { return JavaToken.PARENTHRIGHT; } +"{" { return JavaToken.CURLYLEFT; } +"}" { return JavaToken.CURLYRIGHT; } +"extends" { return JavaToken.EXTENDS; } +"&" { return JavaToken.ANDBIT; } +"<" { return JavaToken.LT; } +">" { return JavaToken.GT; } +";" { return JavaToken.SEMICOLON; } +":" { return JavaToken.COLON; } +"::" { return JavaToken.DOUBLECOLON; } +"..." { return JavaToken.ELLIPSIS; } +"," { return JavaToken.COMMA; } +"?" { return JavaToken.QUESTIONMARK; } +"super" { return JavaToken.SUPER; } +"package" { return JavaToken.PACKAGE; } +"import" { return JavaToken.IMPORT; } +"static" { return JavaToken.STATIC; } +"*" { return JavaToken.STAR; } +"+" { return JavaToken.PLUS; } +"-" { return JavaToken.MINUS; } +"%" { return JavaToken.PERCENT; } +"/" { return JavaToken.SLASH; } +"++" { return JavaToken.PLUSPLUS; } +"--" { return JavaToken.MINUSMINUS; } +"~" { return JavaToken.TILDA; } +"!" { return JavaToken.EXCLAMATIONMARK; } +"class" { return JavaToken.CLASS; } +"public" { return JavaToken.PUBLIC; } +"protected" { return JavaToken.PROTECTED; } +"private" { return JavaToken.PRIVATE; } +"abstract" { return JavaToken.ABSTRACT; } +"final" { return JavaToken.FINAL; } +"strictfp" { return JavaToken.STRICTFP; } +"implements" { return JavaToken.IMPLEMENTS; } +"transient" { return JavaToken.TRANSIENT; } +"volatile" { return JavaToken.VOLATILE; } +"=" { return JavaToken.ASSIGN; } +"*=" { return JavaToken.STARASSIGN; } +"/=" { return JavaToken.SLASHASSIGN; } +"+=" { return JavaToken.PLUSASSIGN; } +"-=" { return JavaToken.MINUSASSIGN; } +"%=" { return JavaToken.PERCENTASSIGN; } +"^=" { return JavaToken.XORASSIGN; } +"<<=" { return JavaToken.SHIFTLEFTASSIGN; } +">>=" { return JavaToken.SHIFTRIGHTASSIGN; } +">>>=" { return JavaToken.USRIGHTSHIFTASSIGN; } +"&=" { return JavaToken.ANDASSIGN; } +"|=" { return JavaToken.ORASSIGN; } +"||" { return JavaToken.OR; } +"&&" { return JavaToken.AND; } +"^" { return JavaToken.XORBIT; } +"==" { return JavaToken.EQ; } +"!=" { return JavaToken.NOTEQ; } +"<=" { return JavaToken.LESSEQ; } +">=" { return JavaToken.GREATEQ; } +"instanceof" { return JavaToken.INSTANCEOF; } +"synchronized" { return JavaToken.SYNCHRONIZED; } +"native" { return JavaToken.NATIVE; } +"void" { return JavaToken.VOID; } +"this" { return JavaToken.THIS; } +"throws" { return JavaToken.THROWS; } +"enum" { return JavaToken.ENUM; } +"interface" { return JavaToken.INTERFACE; } +"@" { return JavaToken.AT; } +"default" { return JavaToken.DEFAULT; } +"assert" { return JavaToken.ASSERT; } +"switch" { return JavaToken.SWITCH; } +"case" { return JavaToken.CASE; } +"while" { return JavaToken.WHILE; } +"for" { return JavaToken.FOR; } +"if" { return JavaToken.IF; } +"else" { return JavaToken.ELSE; } +"do" { return JavaToken.DO; } +"break" { return JavaToken.BREAK; } +"continue" { return JavaToken.CONTINUE; } +"return" { return JavaToken.RETURN; } +"throw" { return JavaToken.THROW; } +"try" { return JavaToken.TRY; } +"catch" { return JavaToken.CATCH; } +"finally" { return JavaToken.FINALLY; } +"|" { return JavaToken.ORBIT; } +"new" { return JavaToken.NEW; } +"->" { return JavaToken.ARROW; } + +{LineTerminator} {} +{Comment} {} +{WhiteSpace} {} +{CharacterLiteral} { return JavaToken.CHARLIT; } +{NullLiteral} { return JavaToken.NULLLIT; } +{StringLiteral} { return JavaToken.STRINGLIT; } +{FloatingPointLiteral} { return JavaToken.FLOATINGLIT; } +{BooleanLiteral} { return JavaToken.BOOLEANLIT; } +{IntegerLiteral} { return JavaToken.INTEGERLIT; } +{Identifier} { return JavaToken.ID; } +<> { return JavaToken.EOF; } \ No newline at end of file diff --git a/benchmarks/src/main/java/org/ucfs/JavaLexer.java b/benchmarks/src/main/java/org/ucfs/JavaLexer.java new file mode 100644 index 000000000..34a130686 --- /dev/null +++ b/benchmarks/src/main/java/org/ucfs/JavaLexer.java @@ -0,0 +1,1808 @@ +// DO NOT EDIT +// Generated by JFlex 1.8.2 http://jflex.de/ +// source: Java.x + +package org.ucfs; + + +import java.io.*; + + +// See https://github.com/jflex-de/jflex/issues/222 +@SuppressWarnings("FallThrough") +public class JavaLexer { + + /** This character denotes the end of file. */ + public static final int YYEOF = -1; + + /** Initial size of the lookahead buffer. */ + private static final int ZZ_BUFFERSIZE = 16384; + + // Lexical states. + public static final int YYINITIAL = 0; + + /** + * ZZ_LEXSTATE[l] is the state in the DFA for the lexical state l + * ZZ_LEXSTATE[l+1] is the state in the DFA for the lexical state l + * at the beginning of a line + * l is of the form l = 2*k, k a non negative integer + */ + private static final int ZZ_LEXSTATE[] = { + 0, 0 + }; + + /** + * Top-level table for translating characters to character classes + */ + private static final int [] ZZ_CMAP_TOP = zzUnpackcmap_top(); + + private static final String ZZ_CMAP_TOP_PACKED_0 = + "\1\0\1\u0100\1\u0200\1\u0300\1\u0400\1\u0500\1\u0600\1\u0700"+ + "\1\u0800\1\u0900\1\u0a00\1\u0b00\1\u0c00\1\u0d00\1\u0e00\1\u0f00"+ + "\1\u1000\1\u0100\1\u1100\1\u1200\1\u1300\1\u0100\1\u1400\1\u1500"+ + "\1\u1600\1\u1700\1\u1800\1\u1900\1\u1a00\1\u1b00\1\u0100\1\u1c00"+ + "\1\u1d00\1\u1e00\12\u1f00\1\u2000\1\u2100\1\u2200\1\u1f00\1\u2300"+ + "\1\u2400\2\u1f00\31\u0100\1\u2500\121\u0100\1\u2600\4\u0100\1\u2700"+ + "\1\u0100\1\u2800\1\u2900\1\u2a00\1\u2b00\1\u2c00\1\u2d00\53\u0100"+ + "\1\u2e00\10\u2f00\31\u1f00\1\u0100\1\u3000\1\u3100\1\u0100\1\u3200"+ + "\1\u3300\1\u3400\1\u3500\1\u3600\1\u3700\1\u3800\1\u3900\1\u3a00"+ + "\1\u0100\1\u3b00\1\u3c00\1\u3d00\1\u3e00\1\u3f00\1\u4000\1\u4100"+ + "\1\u4200\1\u4300\1\u4400\1\u4500\1\u4600\1\u4700\1\u4800\1\u4900"+ + "\1\u4a00\1\u4b00\1\u4c00\1\u4d00\1\u4e00\1\u1f00\1\u4f00\1\u5000"+ + "\1\u5100\1\u5200\3\u0100\1\u5300\1\u5400\1\u5500\12\u1f00\4\u0100"+ + "\1\u5600\17\u1f00\2\u0100\1\u5700\41\u1f00\2\u0100\1\u5800\1\u5900"+ + "\2\u1f00\1\u5a00\1\u5b00\27\u0100\1\u5c00\4\u0100\1\u5d00\1\u5e00"+ + "\42\u1f00\1\u0100\1\u5f00\1\u6000\11\u1f00\1\u6100\24\u1f00\1\u6200"+ + "\1\u6300\1\u1f00\1\u6400\1\u6500\1\u6600\1\u6700\2\u1f00\1\u6800"+ + "\5\u1f00\1\u6900\1\u6a00\1\u6b00\5\u1f00\1\u6c00\1\u6d00\2\u1f00"+ + "\1\u6e00\1\u1f00\1\u6f00\14\u1f00\1\u7000\4\u1f00\246\u0100\1\u7100"+ + "\20\u0100\1\u7200\1\u7300\25\u0100\1\u7400\34\u0100\1\u7500\14\u1f00"+ + "\2\u0100\1\u7600\5\u1f00\23\u0100\1\u7700\u0aec\u1f00\1\u7800\1\u7900"+ + "\u02fe\u1f00"; + + private static int [] zzUnpackcmap_top() { + int [] result = new int[4352]; + int offset = 0; + offset = zzUnpackcmap_top(ZZ_CMAP_TOP_PACKED_0, offset, result); + return result; + } + + private static int zzUnpackcmap_top(String packed, int offset, int [] result) { + int i = 0; /* index in packed string */ + int j = offset; /* index in unpacked array */ + int l = packed.length(); + while (i < l) { + int count = packed.charAt(i++); + int value = packed.charAt(i++); + do result[j++] = value; while (--count > 0); + } + return j; + } + + + /** + * Second-level tables for translating characters to character classes + */ + private static final int [] ZZ_CMAP_BLOCKS = zzUnpackcmap_blocks(); + + private static final String ZZ_CMAP_BLOCKS_PACKED_0 = + "\11\0\1\1\1\2\1\3\1\4\1\5\16\0\4\6"+ + "\1\1\1\7\1\10\1\6\1\11\1\12\1\13\1\14"+ + "\1\15\1\16\1\17\1\20\1\21\1\22\1\23\1\24"+ + "\1\25\1\26\2\27\4\30\2\31\1\32\1\33\1\34"+ + "\1\35\1\36\1\37\1\40\1\41\1\42\1\41\1\43"+ + "\1\44\1\43\5\11\1\45\3\11\1\46\7\11\1\47"+ + "\2\11\1\50\1\51\1\52\1\53\1\54\1\6\1\55"+ + "\1\56\1\57\1\60\1\61\1\62\1\63\1\64\1\65"+ + "\1\11\1\66\1\67\1\70\1\71\1\72\1\73\1\11"+ + "\1\74\1\75\1\76\1\77\1\100\1\101\1\102\1\103"+ + "\1\104\1\105\1\106\1\107\1\110\6\0\1\111\32\0"+ + "\2\6\4\11\4\6\1\11\2\6\1\0\7\6\1\11"+ + "\4\6\1\11\5\6\27\11\1\6\37\11\1\6\u01ca\11"+ + "\4\6\14\11\16\6\5\11\7\6\1\11\1\6\1\11"+ + "\21\6\160\0\5\11\1\6\2\11\2\6\4\11\1\6"+ + "\1\11\6\6\1\11\1\6\3\11\1\6\1\11\1\6"+ + "\24\11\1\6\123\11\1\6\213\11\1\6\5\0\2\6"+ + "\246\11\1\6\46\11\2\6\1\11\6\6\51\11\6\6"+ + "\1\11\1\6\55\0\1\6\1\0\1\6\2\0\1\6"+ + "\2\0\1\6\1\0\10\6\33\11\4\6\4\11\15\6"+ + "\6\0\5\6\1\11\4\6\13\0\1\6\1\0\3\6"+ + "\53\11\37\0\4\6\2\11\1\0\143\11\1\6\1\11"+ + "\10\0\1\6\6\0\2\11\2\0\1\6\4\0\2\11"+ + "\12\0\3\11\2\6\1\11\17\6\1\0\1\11\1\0"+ + "\36\11\33\0\2\6\131\11\13\0\1\11\16\6\12\0"+ + "\41\11\11\0\2\11\4\6\1\11\2\6\1\0\30\11"+ + "\4\0\1\11\11\0\1\11\3\0\1\11\5\0\22\6"+ + "\31\11\3\0\4\6\13\11\65\6\25\11\1\6\22\11"+ + "\13\6\61\0\66\11\3\0\1\11\22\0\1\11\7\0"+ + "\12\11\2\0\2\6\12\0\1\6\20\11\3\0\1\6"+ + "\10\11\2\6\2\11\2\6\26\11\1\6\7\11\1\6"+ + "\1\11\3\6\4\11\2\6\1\0\1\11\7\0\2\6"+ + "\2\0\2\6\3\0\1\11\10\6\1\0\4\6\2\11"+ + "\1\6\3\11\2\0\2\6\12\0\4\11\7\6\2\11"+ + "\1\6\1\0\2\6\3\0\1\6\6\11\4\6\2\11"+ + "\2\6\26\11\1\6\7\11\1\6\2\11\1\6\2\11"+ + "\1\6\2\11\2\6\1\0\1\6\5\0\4\6\2\0"+ + "\2\6\3\0\3\6\1\0\7\6\4\11\1\6\1\11"+ + "\7\6\14\0\3\11\1\0\13\6\3\0\1\6\11\11"+ + "\1\6\3\11\1\6\26\11\1\6\7\11\1\6\2\11"+ + "\1\6\5\11\2\6\1\0\1\11\10\0\1\6\3\0"+ + "\1\6\3\0\2\6\1\11\17\6\2\11\2\0\2\6"+ + "\12\0\1\6\1\11\7\6\1\11\6\0\1\6\3\0"+ + "\1\6\10\11\2\6\2\11\2\6\26\11\1\6\7\11"+ + "\1\6\2\11\1\6\5\11\2\6\1\0\1\11\7\0"+ + "\2\6\2\0\2\6\3\0\7\6\3\0\4\6\2\11"+ + "\1\6\3\11\2\0\2\6\12\0\1\6\1\11\20\6"+ + "\1\0\1\11\1\6\6\11\3\6\3\11\1\6\4\11"+ + "\3\6\2\11\1\6\1\11\1\6\2\11\3\6\2\11"+ + "\3\6\3\11\3\6\14\11\4\6\5\0\3\6\3\0"+ + "\1\6\4\0\2\6\1\11\6\6\1\0\16\6\12\0"+ + "\11\6\1\11\6\6\5\0\10\11\1\6\3\11\1\6"+ + "\27\11\1\6\20\11\3\6\1\11\7\0\1\6\3\0"+ + "\1\6\4\0\7\6\2\0\1\6\3\11\5\6\2\11"+ + "\2\0\2\6\12\0\20\6\1\11\3\0\1\6\10\11"+ + "\1\6\3\11\1\6\27\11\1\6\12\11\1\6\5\11"+ + "\2\6\1\0\1\11\7\0\1\6\3\0\1\6\4\0"+ + "\7\6\2\0\7\6\1\11\1\6\2\11\2\0\2\6"+ + "\12\0\1\6\2\11\15\6\4\0\11\11\1\6\3\11"+ + "\1\6\51\11\2\0\1\11\7\0\1\6\3\0\1\6"+ + "\4\0\1\11\5\6\3\11\1\0\7\6\3\11\2\0"+ + "\2\6\12\0\12\6\6\11\1\6\3\0\1\6\22\11"+ + "\3\6\30\11\1\6\11\11\1\6\1\11\2\6\7\11"+ + "\3\6\1\0\4\6\6\0\1\6\1\0\1\6\10\0"+ + "\6\6\12\0\2\6\2\0\15\6\60\11\1\0\2\11"+ + "\7\0\4\6\10\11\10\0\1\6\12\0\47\6\2\11"+ + "\1\6\1\11\1\6\5\11\1\6\30\11\1\6\1\11"+ + "\1\6\12\11\1\0\2\11\11\0\1\11\2\6\5\11"+ + "\1\6\1\11\1\6\6\0\2\6\12\0\2\6\4\11"+ + "\40\6\1\11\27\6\2\0\6\6\12\0\13\6\1\0"+ + "\1\6\1\0\1\6\1\0\4\6\2\0\10\11\1\6"+ + "\44\11\4\6\24\0\1\6\2\0\5\11\13\0\1\6"+ + "\44\0\11\6\1\0\71\6\53\11\24\0\1\11\12\0"+ + "\6\6\6\11\4\0\4\11\3\0\1\11\3\0\2\11"+ + "\7\0\3\11\4\0\15\11\14\0\1\11\17\0\2\6"+ + "\46\11\1\6\1\11\5\6\1\11\2\6\53\11\1\6"+ + "\115\11\1\6\4\11\2\6\7\11\1\6\1\11\1\6"+ + "\4\11\2\6\51\11\1\6\4\11\2\6\41\11\1\6"+ + "\4\11\2\6\7\11\1\6\1\11\1\6\4\11\2\6"+ + "\17\11\1\6\71\11\1\6\4\11\2\6\103\11\2\6"+ + "\3\0\40\6\20\11\20\6\126\11\2\6\6\11\3\6"+ + "\u016c\11\2\6\21\11\1\6\32\11\5\6\113\11\3\6"+ + "\13\11\7\6\15\11\1\6\4\11\3\0\13\6\22\11"+ + "\3\0\13\6\22\11\2\0\14\6\15\11\1\6\3\11"+ + "\1\6\2\0\14\6\64\11\40\0\3\6\1\11\3\6"+ + "\2\11\1\0\2\6\12\0\41\6\4\0\1\6\12\0"+ + "\6\6\131\11\7\6\5\11\2\0\42\11\1\0\1\11"+ + "\5\6\106\11\12\6\37\11\1\6\14\0\4\6\14\0"+ + "\12\6\12\0\36\11\2\6\5\11\13\6\54\11\4\6"+ + "\32\11\6\6\12\0\46\6\27\11\5\0\4\6\65\11"+ + "\12\0\1\6\35\0\2\6\13\0\6\6\12\0\15\6"+ + "\1\11\10\6\16\0\1\6\2\0\77\6\5\0\57\11"+ + "\21\0\7\11\4\6\12\0\21\6\11\0\14\6\3\0"+ + "\36\11\15\0\2\11\12\0\54\11\16\0\14\6\44\11"+ + "\24\0\10\6\12\0\3\6\3\11\12\0\44\11\2\6"+ + "\11\11\7\6\53\11\2\6\3\11\20\6\3\0\1\6"+ + "\25\0\4\11\1\0\6\11\1\0\2\11\3\0\1\11"+ + "\5\6\300\11\72\0\1\6\5\0\26\11\2\6\6\11"+ + "\2\6\46\11\2\6\6\11\2\6\10\11\1\6\1\11"+ + "\1\6\1\11\1\6\1\11\1\6\37\11\2\6\65\11"+ + "\1\6\7\11\1\6\1\11\3\6\3\11\1\6\7\11"+ + "\3\6\4\11\2\6\6\11\4\6\15\11\5\6\3\11"+ + "\1\6\7\11\16\6\5\0\30\6\2\3\5\0\20\6"+ + "\2\11\23\6\1\11\13\6\5\0\1\6\12\0\1\6"+ + "\1\11\15\6\1\11\20\6\15\11\3\6\40\11\20\6"+ + "\15\0\4\6\1\0\3\6\14\0\21\6\1\11\4\6"+ + "\1\11\2\6\12\11\1\6\1\11\3\6\5\11\6\6"+ + "\1\11\1\6\1\11\1\6\1\11\1\6\4\11\1\6"+ + "\13\11\2\6\4\11\5\6\5\11\4\6\1\11\21\6"+ + "\51\11\u0177\6\57\11\1\6\57\11\1\6\205\11\6\6"+ + "\4\11\3\0\2\11\14\6\46\11\1\6\1\11\5\6"+ + "\1\11\2\6\70\11\7\6\1\11\17\6\1\0\27\11"+ + "\11\6\7\11\1\6\7\11\1\6\7\11\1\6\7\11"+ + "\1\6\7\11\1\6\7\11\1\6\7\11\1\6\7\11"+ + "\1\6\40\0\57\6\1\11\325\6\3\11\31\6\11\11"+ + "\6\0\1\6\5\11\2\6\5\11\4\6\126\11\2\6"+ + "\2\0\2\6\3\11\1\6\132\11\1\6\4\11\5\6"+ + "\53\11\1\6\136\11\21\6\40\11\60\6\320\11\100\6"+ + "\375\11\3\6\215\11\103\6\56\11\2\6\15\11\3\6"+ + "\20\11\12\0\2\11\24\6\57\11\1\0\4\6\12\0"+ + "\1\6\37\11\2\0\120\11\2\0\45\6\11\11\2\6"+ + "\147\11\2\6\65\11\2\6\11\11\52\6\15\11\1\0"+ + "\3\11\1\0\4\11\1\0\27\11\5\0\4\6\1\0"+ + "\13\6\1\11\7\6\64\11\14\6\2\0\62\11\22\0"+ + "\12\6\12\0\6\6\22\0\6\11\3\6\1\11\1\6"+ + "\2\11\13\0\34\11\10\0\2\6\27\11\15\0\14\6"+ + "\35\11\3\6\4\0\57\11\16\0\16\6\1\11\12\0"+ + "\6\6\5\11\1\0\12\11\12\0\5\11\1\6\51\11"+ + "\16\0\11\6\3\11\1\0\10\11\2\0\2\6\12\0"+ + "\6\6\27\11\3\6\1\11\3\0\62\11\1\0\1\11"+ + "\3\0\2\11\2\0\5\11\2\0\1\11\1\0\1\11"+ + "\30\6\3\11\2\6\13\11\5\0\2\6\3\11\2\0"+ + "\12\6\6\11\2\6\6\11\2\6\6\11\11\6\7\11"+ + "\1\6\7\11\1\6\53\11\1\6\16\11\6\6\163\11"+ + "\10\0\1\6\2\0\2\6\12\0\6\6\244\11\14\6"+ + "\27\11\4\6\61\11\4\6\u0100\3\156\11\2\6\152\11"+ + "\46\6\7\11\14\6\5\11\5\6\1\11\1\0\12\11"+ + "\1\6\15\11\1\6\5\11\1\6\1\11\1\6\2\11"+ + "\1\6\2\11\1\6\154\11\41\6\153\11\22\6\100\11"+ + "\2\6\66\11\50\6\15\11\3\6\20\0\20\6\20\0"+ + "\3\6\2\11\30\6\3\11\31\6\1\11\6\6\5\11"+ + "\1\6\207\11\2\6\1\0\4\6\1\11\13\6\12\0"+ + "\7\6\32\11\4\6\1\11\1\6\32\11\13\6\131\11"+ + "\3\6\6\11\2\6\6\11\2\6\6\11\2\6\3\11"+ + "\3\6\2\11\3\6\2\11\22\6\3\0\4\6\14\11"+ + "\1\6\32\11\1\6\23\11\1\6\2\11\1\6\17\11"+ + "\2\6\16\11\42\6\173\11\105\6\65\11\210\6\1\0"+ + "\202\6\35\11\3\6\61\11\17\6\1\0\37\6\40\11"+ + "\15\6\36\11\5\6\46\11\5\0\5\6\36\11\2\6"+ + "\44\11\4\6\10\11\1\6\5\11\52\6\236\11\2\6"+ + "\12\0\6\6\44\11\4\6\44\11\4\6\50\11\10\6"+ + "\64\11\234\6\67\11\11\6\26\11\12\6\10\11\230\6"+ + "\6\11\2\6\1\11\1\6\54\11\1\6\2\11\3\6"+ + "\1\11\2\6\27\11\12\6\27\11\11\6\37\11\101\6"+ + "\23\11\1\6\2\11\12\6\26\11\12\6\32\11\106\6"+ + "\70\11\6\6\2\11\100\6\1\11\3\0\1\6\2\0"+ + "\5\6\4\0\4\11\1\6\3\11\1\6\35\11\2\6"+ + "\3\0\4\6\1\0\40\6\35\11\3\6\35\11\43\6"+ + "\10\11\1\6\34\11\2\0\31\6\66\11\12\6\26\11"+ + "\12\6\23\11\15\6\22\11\156\6\111\11\67\6\63\11"+ + "\15\6\63\11\15\6\44\11\4\0\10\6\12\0\u0146\6"+ + "\52\11\1\6\2\0\3\6\2\11\116\6\35\11\12\6"+ + "\1\11\10\6\26\11\13\0\137\6\25\11\33\6\27\11"+ + "\11\6\3\0\65\11\17\0\37\6\12\0\17\6\4\0"+ + "\55\11\13\0\2\6\1\0\17\6\1\0\2\6\31\11"+ + "\7\6\12\0\6\6\3\0\44\11\16\0\1\6\12\0"+ + "\4\6\1\11\2\0\1\11\10\6\43\11\1\0\2\6"+ + "\1\11\11\6\3\0\60\11\16\0\4\11\4\6\4\0"+ + "\1\6\14\0\1\11\1\6\1\11\43\6\22\11\1\6"+ + "\31\11\14\0\6\6\1\0\101\6\7\11\1\6\1\11"+ + "\1\6\4\11\1\6\17\11\1\6\12\11\7\6\57\11"+ + "\14\0\5\6\12\0\6\6\4\0\1\6\10\11\2\6"+ + "\2\11\2\6\26\11\1\6\7\11\1\6\2\11\1\6"+ + "\5\11\1\6\2\0\1\11\7\0\2\6\2\0\2\6"+ + "\3\0\2\6\1\11\6\6\1\0\5\6\5\11\2\0"+ + "\2\6\7\0\3\6\5\0\213\6\65\11\22\0\4\11"+ + "\5\6\12\0\4\6\1\0\3\11\36\6\60\11\24\0"+ + "\2\11\1\6\1\11\10\6\12\0\246\6\57\11\7\0"+ + "\2\6\11\0\27\6\4\11\2\0\42\6\60\11\21\0"+ + "\3\6\1\11\13\6\12\0\46\6\53\11\15\0\1\11"+ + "\7\6\12\0\66\6\33\11\2\6\17\0\4\6\12\0"+ + "\306\6\54\11\17\0\145\6\100\11\12\0\25\6\10\11"+ + "\2\6\1\11\2\6\10\11\1\6\2\11\1\6\30\11"+ + "\6\0\1\6\2\0\2\6\4\0\1\11\1\0\1\11"+ + "\2\0\14\6\12\0\106\6\10\11\2\6\47\11\7\0"+ + "\2\6\7\0\1\11\1\6\1\11\1\0\33\6\1\11"+ + "\12\0\50\11\7\0\1\11\4\0\10\6\1\0\10\6"+ + "\1\11\13\0\56\11\20\0\3\6\1\11\42\6\71\11"+ + "\7\6\11\11\1\6\45\11\10\0\1\6\10\0\1\11"+ + "\17\6\12\0\30\6\36\11\2\6\26\0\1\6\16\0"+ + "\111\6\7\11\1\6\2\11\1\6\46\11\6\0\3\6"+ + "\1\0\1\6\2\0\1\6\7\0\1\11\1\0\10\6"+ + "\12\0\6\6\6\11\1\6\2\11\1\6\40\11\5\0"+ + "\1\6\2\0\1\6\5\0\1\11\7\6\12\0\u0136\6"+ + "\23\11\4\0\271\6\1\11\54\6\4\11\37\6\232\11"+ + "\146\6\157\11\21\6\304\11\274\6\57\11\1\6\11\0"+ + "\307\6\107\11\271\6\71\11\7\6\37\11\1\6\12\0"+ + "\146\6\36\11\2\6\5\0\13\6\60\11\7\0\11\6"+ + "\4\11\14\6\12\0\11\6\25\11\5\6\23\11\260\6"+ + "\100\11\200\6\113\11\4\6\1\0\1\11\67\0\7\6"+ + "\4\0\15\11\100\6\2\11\1\6\1\11\1\0\13\6"+ + "\2\0\16\6\370\11\10\6\326\11\52\6\11\11\367\6"+ + "\37\11\61\6\3\11\21\6\4\11\10\6\u018c\11\4\6"+ + "\153\11\5\6\15\11\3\6\11\11\7\6\12\11\3\6"+ + "\2\0\1\6\4\0\301\6\5\0\3\6\26\0\2\6"+ + "\7\0\36\6\4\0\224\6\3\0\273\6\125\11\1\6"+ + "\107\11\1\6\2\11\2\6\1\11\2\6\2\11\2\6"+ + "\4\11\1\6\14\11\1\6\1\11\1\6\7\11\1\6"+ + "\101\11\1\6\4\11\2\6\10\11\1\6\7\11\1\6"+ + "\34\11\1\6\4\11\1\6\5\11\1\6\1\11\3\6"+ + "\7\11\1\6\u0154\11\2\6\31\11\1\6\31\11\1\6"+ + "\37\11\1\6\31\11\1\6\37\11\1\6\31\11\1\6"+ + "\37\11\1\6\31\11\1\6\37\11\1\6\31\11\1\6"+ + "\10\11\2\6\151\0\4\6\62\0\10\6\1\0\16\6"+ + "\1\0\26\6\5\0\1\6\17\0\120\6\7\0\1\6"+ + "\21\0\2\6\7\0\1\6\2\0\1\6\5\0\325\6"+ + "\55\11\3\6\7\0\7\11\2\6\12\0\4\6\1\11"+ + "\u0171\6\54\11\16\0\5\6\306\11\13\6\7\0\51\6"+ + "\104\11\7\0\1\11\4\6\12\0\u0156\6\1\11\117\6"+ + "\4\11\1\6\33\11\1\6\2\11\1\6\1\11\2\6"+ + "\1\11\1\6\12\11\1\6\4\11\1\6\1\11\1\6"+ + "\1\11\6\6\1\11\4\6\1\11\1\6\1\11\1\6"+ + "\1\11\1\6\3\11\1\6\2\11\1\6\1\11\2\6"+ + "\1\11\1\6\1\11\1\6\1\11\1\6\1\11\1\6"+ + "\1\11\1\6\2\11\1\6\1\11\2\6\4\11\1\6"+ + "\7\11\1\6\4\11\1\6\4\11\1\6\1\11\1\6"+ + "\12\11\1\6\21\11\5\6\3\11\1\6\5\11\1\6"+ + "\21\11\u0134\6\12\0\6\6\336\11\42\6\65\11\13\6"+ + "\336\11\2\6\u0182\11\16\6\u0131\11\37\6\36\11\342\6"+ + "\113\11\266\6\1\0\36\6\140\0\200\6\360\0\20\6"; + + private static int [] zzUnpackcmap_blocks() { + int [] result = new int[31232]; + int offset = 0; + offset = zzUnpackcmap_blocks(ZZ_CMAP_BLOCKS_PACKED_0, offset, result); + return result; + } + + private static int zzUnpackcmap_blocks(String packed, int offset, int [] result) { + int i = 0; /* index in packed string */ + int j = offset; /* index in unpacked array */ + int l = packed.length(); + while (i < l) { + int count = packed.charAt(i++); + int value = packed.charAt(i++); + do result[j++] = value; while (--count > 0); + } + return j; + } + + /** + * Translates DFA states to action switch labels. + */ + private static final int [] ZZ_ACTION = zzUnpackAction(); + + private static final String ZZ_ACTION_PACKED_0 = + "\1\0\2\1\1\2\1\0\1\3\1\4\1\5\1\0"+ + "\1\6\1\7\1\10\1\11\1\12\1\13\1\14\1\15"+ + "\2\16\1\17\1\20\1\21\1\22\1\23\1\24\1\25"+ + "\1\26\1\27\1\30\17\3\1\31\1\32\1\33\1\34"+ + "\1\35\1\36\1\0\1\37\1\40\1\41\2\0\1\42"+ + "\1\43\1\44\1\45\1\46\1\47\1\0\1\50\1\0"+ + "\1\51\1\52\1\50\1\16\1\0\1\50\1\0\1\16"+ + "\2\0\1\16\1\0\1\53\1\0\1\54\1\55\1\56"+ + "\1\0\1\57\12\3\1\60\7\3\1\61\23\3\1\62"+ + "\1\63\1\0\1\64\2\0\1\65\3\0\1\16\3\0"+ + "\1\16\1\66\1\67\1\0\22\3\1\70\2\3\1\71"+ + "\2\3\1\72\20\3\1\73\3\3\2\0\1\50\1\0"+ + "\1\1\5\0\1\74\4\3\1\75\1\76\1\3\1\77"+ + "\4\3\1\100\1\101\7\3\1\102\1\3\1\103\13\3"+ + "\1\104\2\3\1\105\1\106\2\3\3\0\3\3\1\107"+ + "\1\110\1\111\4\3\1\112\1\113\12\3\1\114\2\3"+ + "\1\115\2\3\1\116\2\3\1\117\1\0\1\3\1\120"+ + "\3\3\1\121\3\3\1\122\2\3\1\123\3\3\1\124"+ + "\1\125\1\126\1\3\1\127\1\3\1\130\3\3\1\131"+ + "\1\3\1\132\1\133\1\134\3\3\1\135\1\136\5\3"+ + "\1\137\1\140\4\3\1\141\2\3\1\142\2\3\1\143"+ + "\1\144\1\3\1\145\1\146\1\147\2\3\1\150"; + + private static int [] zzUnpackAction() { + int [] result = new int[336]; + int offset = 0; + offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); + return result; + } + + private static int zzUnpackAction(String packed, int offset, int [] result) { + int i = 0; /* index in packed string */ + int j = offset; /* index in unpacked array */ + int l = packed.length(); + while (i < l) { + int count = packed.charAt(i++); + int value = packed.charAt(i++); + do result[j++] = value; while (--count > 0); + } + return j; + } + + + /** + * Translates a state to a row index in the transition table + */ + private static final int [] ZZ_ROWMAP = zzUnpackRowMap(); + + private static final String ZZ_ROWMAP_PACKED_0 = + "\0\0\0\112\0\224\0\336\0\u0128\0\u0172\0\u01bc\0\u0206"+ + "\0\u0250\0\112\0\112\0\u029a\0\u02e4\0\112\0\u032e\0\u0378"+ + "\0\u03c2\0\u040c\0\u0456\0\u04a0\0\112\0\u04ea\0\u0534\0\u057e"+ + "\0\112\0\112\0\112\0\112\0\u05c8\0\u0612\0\u065c\0\u06a6"+ + "\0\u06f0\0\u073a\0\u0784\0\u07ce\0\u0818\0\u0862\0\u08ac\0\u08f6"+ + "\0\u0940\0\u098a\0\u09d4\0\u0a1e\0\112\0\u0a68\0\112\0\112"+ + "\0\112\0\112\0\u0ab2\0\112\0\112\0\112\0\u0afc\0\u0b46"+ + "\0\112\0\112\0\112\0\112\0\112\0\112\0\u0b90\0\u0bda"+ + "\0\u0c24\0\u0c6e\0\112\0\u0cb8\0\u0d02\0\u0d4c\0\112\0\u0d96"+ + "\0\112\0\u0de0\0\u0e2a\0\u0e74\0\u0ebe\0\112\0\u0f08\0\112"+ + "\0\112\0\112\0\u0f52\0\112\0\u0f9c\0\u0fe6\0\u1030\0\u107a"+ + "\0\u10c4\0\u110e\0\u1158\0\u11a2\0\u11ec\0\u1236\0\u1280\0\u12ca"+ + "\0\u1314\0\u135e\0\u13a8\0\u13f2\0\u143c\0\u1486\0\u0172\0\u14d0"+ + "\0\u151a\0\u1564\0\u15ae\0\u15f8\0\u1642\0\u168c\0\u16d6\0\u1720"+ + "\0\u176a\0\u17b4\0\u17fe\0\u1848\0\u1892\0\u18dc\0\u1926\0\u1970"+ + "\0\u19ba\0\u1a04\0\112\0\112\0\u1a4e\0\112\0\u1a98\0\u1ae2"+ + "\0\112\0\u1b2c\0\u1b76\0\u1bc0\0\u1c0a\0\u1c54\0\u1c9e\0\u1ce8"+ + "\0\u1d32\0\112\0\112\0\u1d7c\0\u1dc6\0\u1e10\0\u1e5a\0\u1ea4"+ + "\0\u1eee\0\u1f38\0\u1f82\0\u1fcc\0\u2016\0\u2060\0\u20aa\0\u20f4"+ + "\0\u213e\0\u2188\0\u21d2\0\u221c\0\u2266\0\u22b0\0\u0172\0\u22fa"+ + "\0\u2344\0\u238e\0\u23d8\0\u2422\0\u0172\0\u246c\0\u24b6\0\u2500"+ + "\0\u254a\0\u2594\0\u25de\0\u2628\0\u2672\0\u26bc\0\u2706\0\u2750"+ + "\0\u279a\0\u27e4\0\u282e\0\u2878\0\u28c2\0\u0172\0\u290c\0\u2956"+ + "\0\u29a0\0\u29ea\0\u2a34\0\u2a7e\0\u2ac8\0\u1b76\0\u2b12\0\u2b5c"+ + "\0\u2ba6\0\u2bf0\0\u2c3a\0\112\0\u2c84\0\u2cce\0\u2d18\0\u2d62"+ + "\0\u0172\0\u0172\0\u2dac\0\u0172\0\u2df6\0\u2e40\0\u2e8a\0\u2ed4"+ + "\0\u0172\0\u0172\0\u2f1e\0\u2f68\0\u2fb2\0\u2ffc\0\u3046\0\u3090"+ + "\0\u30da\0\u0172\0\u3124\0\u0172\0\u316e\0\u31b8\0\u3202\0\u324c"+ + "\0\u3296\0\u32e0\0\u332a\0\u3374\0\u33be\0\u3408\0\u3452\0\u0172"+ + "\0\u349c\0\u34e6\0\u0172\0\u0172\0\u3530\0\u357a\0\u35c4\0\u360e"+ + "\0\u3658\0\u36a2\0\u36ec\0\u3736\0\u0172\0\u0172\0\u0172\0\u3780"+ + "\0\u37ca\0\u3814\0\u385e\0\u38a8\0\u0172\0\u38f2\0\u393c\0\u3986"+ + "\0\u39d0\0\u3a1a\0\u3a64\0\u3aae\0\u3af8\0\u3b42\0\u3b8c\0\u0172"+ + "\0\u3bd6\0\u3c20\0\u0172\0\u3c6a\0\u3cb4\0\u3cfe\0\u3d48\0\u3d92"+ + "\0\u0172\0\u3ddc\0\u3e26\0\u0172\0\u3e70\0\u3eba\0\u3f04\0\u0172"+ + "\0\u3f4e\0\u3f98\0\u3fe2\0\u0172\0\u402c\0\u4076\0\u0172\0\u40c0"+ + "\0\u410a\0\u4154\0\u0172\0\u0172\0\u0172\0\u419e\0\u0172\0\u41e8"+ + "\0\u0172\0\u4232\0\u427c\0\u42c6\0\u0172\0\u4310\0\u0172\0\u0172"+ + "\0\u0172\0\u435a\0\u43a4\0\u43ee\0\u0172\0\u0172\0\u4438\0\u4482"+ + "\0\u44cc\0\u4516\0\u4560\0\u0172\0\u0172\0\u45aa\0\u45f4\0\u463e"+ + "\0\u4688\0\u0172\0\u46d2\0\u471c\0\u0172\0\u4766\0\u47b0\0\u0172"+ + "\0\u0172\0\u47fa\0\u0172\0\u0172\0\u0172\0\u4844\0\u488e\0\u0172"; + + private static int [] zzUnpackRowMap() { + int [] result = new int[336]; + int offset = 0; + offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); + return result; + } + + private static int zzUnpackRowMap(String packed, int offset, int [] result) { + int i = 0; /* index in packed string */ + int j = offset; /* index in unpacked array */ + int l = packed.length(); + while (i < l) { + int high = packed.charAt(i++) << 16; + result[j++] = high | packed.charAt(i++); + } + return j; + } + + /** + * The transition table of the DFA + */ + private static final int [] ZZ_TRANS = zzUnpackTrans(); + + private static final String ZZ_TRANS_PACKED_0 = + "\1\0\2\2\1\0\1\2\1\3\1\0\1\4\1\5"+ + "\1\6\1\7\1\10\1\11\1\12\1\13\1\14\1\15"+ + "\1\16\1\17\1\20\1\21\1\22\4\23\1\24\1\25"+ + "\1\26\1\27\1\30\1\31\1\32\7\6\1\33\1\0"+ + "\1\34\1\35\1\6\1\36\1\37\1\40\1\41\1\42"+ + "\1\43\2\6\1\44\1\6\1\45\1\6\1\46\1\6"+ + "\1\47\1\50\1\51\1\52\1\6\1\53\1\54\3\6"+ + "\1\55\1\56\1\57\1\60\115\0\1\2\144\0\1\61"+ + "\54\0\2\5\1\0\2\5\1\0\2\5\1\62\40\5"+ + "\1\63\40\5\1\6\10\0\1\6\13\0\5\6\7\0"+ + "\7\6\4\0\31\6\4\0\1\6\35\0\1\64\67\0"+ + "\1\65\21\0\1\66\54\0\2\67\1\0\2\67\1\0"+ + "\6\67\1\0\34\67\1\70\40\67\35\0\1\71\74\0"+ + "\1\72\14\0\1\73\76\0\1\74\12\0\1\75\1\76"+ + "\76\0\1\77\1\0\5\100\77\0\1\101\4\0\1\102"+ + "\10\0\1\103\77\0\1\104\1\0\4\105\11\0\1\106"+ + "\1\107\1\110\1\111\1\0\1\112\4\0\1\113\1\0"+ + "\1\106\1\0\1\107\1\110\1\107\4\0\1\111\12\0"+ + "\1\112\32\0\1\104\1\0\5\114\11\0\1\107\1\110"+ + "\1\111\6\0\1\115\3\0\1\107\1\110\1\107\4\0"+ + "\1\111\54\0\1\116\113\0\1\117\1\120\111\0\1\121"+ + "\111\0\1\122\1\123\110\0\1\124\54\0\1\6\10\0"+ + "\1\6\13\0\5\6\7\0\7\6\4\0\2\6\1\125"+ + "\16\6\1\126\7\6\4\0\2\6\10\0\1\6\13\0"+ + "\5\6\7\0\7\6\4\0\16\6\1\127\1\6\1\130"+ + "\6\6\1\131\1\6\4\0\2\6\10\0\1\6\13\0"+ + "\5\6\7\0\7\6\4\0\1\6\1\132\6\6\1\133"+ + "\2\6\1\134\2\6\1\135\12\6\4\0\2\6\10\0"+ + "\1\6\13\0\5\6\7\0\7\6\4\0\5\6\1\136"+ + "\10\6\1\137\12\6\4\0\2\6\10\0\1\6\13\0"+ + "\5\6\7\0\7\6\4\0\13\6\1\140\1\6\1\141"+ + "\10\6\1\142\2\6\4\0\2\6\10\0\1\6\13\0"+ + "\5\6\7\0\7\6\4\0\1\6\1\143\7\6\1\144"+ + "\1\6\1\145\2\6\1\146\12\6\4\0\2\6\10\0"+ + "\1\6\13\0\5\6\7\0\7\6\4\0\6\6\1\147"+ + "\5\6\1\150\1\151\13\6\4\0\2\6\10\0\1\6"+ + "\13\0\5\6\7\0\7\6\4\0\16\6\1\152\12\6"+ + "\4\0\2\6\10\0\1\6\13\0\5\6\7\0\7\6"+ + "\4\0\1\6\1\153\3\6\1\154\15\6\1\155\5\6"+ + "\4\0\2\6\10\0\1\6\13\0\5\6\7\0\7\6"+ + "\4\0\1\6\1\156\16\6\1\157\2\6\1\160\5\6"+ + "\4\0\2\6\10\0\1\6\13\0\5\6\7\0\7\6"+ + "\4\0\5\6\1\161\23\6\4\0\2\6\10\0\1\6"+ + "\13\0\5\6\7\0\7\6\4\0\10\6\1\162\11\6"+ + "\1\163\1\164\1\6\1\165\1\6\1\166\1\6\4\0"+ + "\2\6\10\0\1\6\13\0\5\6\7\0\7\6\4\0"+ + "\10\6\1\167\7\6\1\170\10\6\4\0\2\6\10\0"+ + "\1\6\13\0\5\6\7\0\7\6\4\0\16\6\1\171"+ + "\12\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+ + "\7\6\4\0\10\6\1\172\20\6\4\0\1\6\35\0"+ + "\1\173\50\0\1\174\13\0\1\5\3\0\1\5\10\0"+ + "\4\5\20\0\1\5\4\0\1\5\3\0\1\5\6\0"+ + "\1\5\2\0\1\5\1\0\1\5\1\175\26\0\1\176"+ + "\105\0\1\67\3\0\1\67\10\0\3\177\1\200\20\0"+ + "\1\67\4\0\1\67\3\0\1\67\6\0\1\67\2\0"+ + "\1\67\1\0\1\67\36\0\1\201\131\0\1\107\1\202"+ + "\13\0\1\107\1\202\1\107\27\0\17\203\1\204\72\203"+ + "\2\102\4\0\103\102\26\0\5\100\11\0\1\107\1\202"+ + "\13\0\1\107\1\202\1\107\54\0\4\105\14\0\1\111"+ + "\6\0\1\113\12\0\1\111\47\0\2\205\103\0\1\206"+ + "\1\0\1\206\2\0\5\207\103\0\1\210\1\0\5\211"+ + "\7\0\4\211\10\0\6\211\54\0\4\105\23\0\1\113"+ + "\62\0\5\114\13\0\1\111\6\0\1\115\12\0\1\111"+ + "\47\0\5\114\22\0\1\115\72\0\1\212\111\0\1\213"+ + "\1\214\53\0\1\6\10\0\1\6\13\0\5\6\7\0"+ + "\7\6\4\0\21\6\1\215\7\6\4\0\2\6\10\0"+ + "\1\6\13\0\5\6\7\0\7\6\4\0\21\6\1\216"+ + "\7\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+ + "\7\6\4\0\16\6\1\217\12\6\4\0\2\6\10\0"+ + "\1\6\13\0\5\6\7\0\7\6\4\0\5\6\1\220"+ + "\23\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+ + "\7\6\4\0\22\6\1\221\6\6\4\0\2\6\10\0"+ + "\1\6\13\0\5\6\7\0\7\6\4\0\21\6\1\222"+ + "\1\223\6\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\1\6\1\224\27\6\4\0\2\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\1\6"+ + "\1\225\27\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\15\6\1\226\13\6\4\0\2\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\6\6"+ + "\1\227\22\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\23\6\1\230\5\6\4\0\2\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\21\6"+ + "\1\231\7\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\23\6\1\232\5\6\4\0\2\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\22\6"+ + "\1\233\6\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\13\6\1\234\15\6\4\0\2\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\15\6"+ + "\1\235\13\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\16\6\1\236\12\6\4\0\2\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\20\6"+ + "\1\237\10\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\17\6\1\240\11\6\4\0\2\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\21\6"+ + "\1\241\1\242\6\6\4\0\2\6\10\0\1\6\13\0"+ + "\5\6\7\0\7\6\4\0\15\6\1\243\13\6\4\0"+ + "\2\6\10\0\1\6\13\0\5\6\7\0\7\6\4\0"+ + "\22\6\1\244\6\6\4\0\2\6\10\0\1\6\13\0"+ + "\5\6\7\0\7\6\4\0\25\6\1\245\3\6\4\0"+ + "\2\6\10\0\1\6\13\0\5\6\7\0\7\6\4\0"+ + "\13\6\1\246\15\6\4\0\2\6\10\0\1\6\13\0"+ + "\5\6\7\0\7\6\4\0\3\6\1\247\25\6\4\0"+ + "\2\6\10\0\1\6\13\0\5\6\7\0\7\6\4\0"+ + "\11\6\1\250\4\6\1\251\12\6\4\0\2\6\10\0"+ + "\1\6\13\0\5\6\7\0\7\6\4\0\2\6\1\252"+ + "\26\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+ + "\7\6\4\0\22\6\1\253\6\6\4\0\2\6\10\0"+ + "\1\6\13\0\5\6\7\0\7\6\4\0\16\6\1\254"+ + "\12\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+ + "\7\6\4\0\1\6\1\255\16\6\1\256\10\6\4\0"+ + "\2\6\10\0\1\6\13\0\5\6\7\0\7\6\4\0"+ + "\17\6\1\257\11\6\4\0\2\6\10\0\1\6\13\0"+ + "\5\6\7\0\7\6\4\0\11\6\1\260\17\6\4\0"+ + "\2\6\10\0\1\6\13\0\5\6\7\0\7\6\4\0"+ + "\15\6\1\261\13\6\4\0\2\6\10\0\1\6\13\0"+ + "\5\6\7\0\7\6\4\0\11\6\1\262\6\6\1\263"+ + "\10\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+ + "\7\6\4\0\1\6\1\264\21\6\1\265\3\6\1\266"+ + "\1\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+ + "\7\6\4\0\11\6\1\267\1\6\1\270\15\6\4\0"+ + "\2\6\10\0\1\6\13\0\5\6\7\0\7\6\4\0"+ + "\11\6\1\271\17\6\4\0\1\6\25\0\5\272\7\0"+ + "\4\272\10\0\6\272\14\0\1\175\26\0\1\176\10\0"+ + "\4\200\75\0\1\176\10\0\4\67\101\0\1\273\1\0"+ + "\1\273\2\0\5\274\60\0\17\203\1\275\111\203\1\275"+ + "\4\203\1\276\65\203\25\0\2\205\16\0\1\111\6\0"+ + "\1\277\12\0\1\111\47\0\5\207\105\0\5\207\11\0"+ + "\1\107\10\0\1\300\3\0\1\107\1\0\1\107\54\0"+ + "\5\301\7\0\4\301\10\0\6\301\52\0\1\302\1\0"+ + "\5\211\7\0\4\211\1\111\1\202\5\0\1\303\6\211"+ + "\4\0\1\111\3\0\1\202\53\0\1\304\54\0\1\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\22\6"+ + "\1\305\6\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\5\6\1\306\23\6\4\0\2\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\13\6"+ + "\1\307\15\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\1\6\1\310\27\6\4\0\2\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\5\6"+ + "\1\311\23\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\5\6\1\312\23\6\4\0\2\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\3\6"+ + "\1\313\25\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\20\6\1\314\10\6\4\0\2\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\21\6"+ + "\1\315\7\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\22\6\1\316\6\6\4\0\2\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\1\6"+ + "\1\317\27\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\2\6\1\320\26\6\4\0\2\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\5\6"+ + "\1\321\23\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\14\6\1\322\14\6\4\0\2\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\5\6"+ + "\1\323\23\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\21\6\1\265\7\6\4\0\2\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\1\6"+ + "\1\324\27\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\1\6\1\325\27\6\4\0\2\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\13\6"+ + "\1\326\2\6\1\327\12\6\4\0\2\6\10\0\1\6"+ + "\13\0\5\6\7\0\7\6\4\0\22\6\1\330\6\6"+ + "\4\0\2\6\10\0\1\6\13\0\5\6\7\0\7\6"+ + "\4\0\5\6\1\331\23\6\4\0\2\6\10\0\1\6"+ + "\13\0\5\6\7\0\7\6\4\0\7\6\1\332\21\6"+ + "\4\0\2\6\10\0\1\6\13\0\5\6\7\0\7\6"+ + "\4\0\11\6\1\333\17\6\4\0\2\6\10\0\1\6"+ + "\13\0\5\6\7\0\7\6\4\0\13\6\1\334\15\6"+ + "\4\0\2\6\10\0\1\6\13\0\5\6\7\0\7\6"+ + "\4\0\12\6\1\335\16\6\4\0\2\6\10\0\1\6"+ + "\13\0\5\6\7\0\7\6\4\0\24\6\1\336\4\6"+ + "\4\0\2\6\10\0\1\6\13\0\5\6\7\0\7\6"+ + "\4\0\22\6\1\337\6\6\4\0\2\6\10\0\1\6"+ + "\13\0\5\6\7\0\7\6\4\0\13\6\1\340\15\6"+ + "\4\0\2\6\10\0\1\6\13\0\5\6\7\0\7\6"+ + "\4\0\23\6\1\341\5\6\4\0\2\6\10\0\1\6"+ + "\13\0\5\6\7\0\7\6\4\0\20\6\1\342\10\6"+ + "\4\0\2\6\10\0\1\6\13\0\5\6\7\0\7\6"+ + "\4\0\22\6\1\343\6\6\4\0\2\6\10\0\1\6"+ + "\13\0\5\6\7\0\7\6\4\0\11\6\1\344\17\6"+ + "\4\0\2\6\10\0\1\6\13\0\5\6\7\0\7\6"+ + "\4\0\5\6\1\345\23\6\4\0\2\6\10\0\1\6"+ + "\13\0\5\6\7\0\7\6\4\0\22\6\1\346\6\6"+ + "\4\0\2\6\10\0\1\6\13\0\5\6\7\0\7\6"+ + "\4\0\3\6\1\347\25\6\4\0\2\6\10\0\1\6"+ + "\13\0\5\6\7\0\7\6\4\0\21\6\1\350\7\6"+ + "\4\0\2\6\10\0\1\6\13\0\5\6\7\0\7\6"+ + "\4\0\16\6\1\351\12\6\4\0\2\6\10\0\1\6"+ + "\13\0\5\6\7\0\7\6\4\0\15\6\1\352\13\6"+ + "\4\0\2\6\10\0\1\6\13\0\5\6\7\0\7\6"+ + "\4\0\5\6\1\353\23\6\4\0\2\6\10\0\1\6"+ + "\13\0\5\6\7\0\7\6\4\0\4\6\1\354\24\6"+ + "\4\0\2\6\10\0\1\6\13\0\5\6\7\0\7\6"+ + "\4\0\1\6\1\355\27\6\4\0\2\6\10\0\1\6"+ + "\13\0\5\6\7\0\7\6\4\0\13\6\1\356\15\6"+ + "\4\0\1\6\25\0\5\357\7\0\4\357\10\0\6\357"+ + "\54\0\5\274\105\0\5\274\11\0\1\107\10\0\1\360"+ + "\3\0\1\107\1\0\1\107\27\0\17\203\1\275\4\203"+ + "\1\2\65\203\25\0\2\205\25\0\1\277\62\0\5\207"+ + "\22\0\1\300\62\0\5\301\7\0\4\301\1\0\1\202"+ + "\5\0\1\361\6\301\10\0\1\202\43\0\5\301\7\0"+ + "\4\301\1\0\1\202\6\0\6\301\10\0\1\202\43\0"+ + "\5\211\7\0\4\211\7\0\1\303\6\211\27\0\1\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\20\6"+ + "\1\362\10\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\20\6\1\363\10\6\4\0\2\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\5\6"+ + "\1\364\23\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\12\6\1\365\16\6\4\0\2\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\10\6"+ + "\1\366\20\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\21\6\1\367\7\6\4\0\2\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\11\6"+ + "\1\370\17\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\23\6\1\371\5\6\4\0\2\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\13\6"+ + "\1\372\15\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\15\6\1\373\13\6\4\0\2\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\13\6"+ + "\1\374\15\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\22\6\1\375\6\6\4\0\2\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\5\6"+ + "\1\376\23\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\20\6\1\377\10\6\4\0\2\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\1\6"+ + "\1\u0100\27\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\20\6\1\u0101\10\6\4\0\2\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\24\6"+ + "\1\u0102\4\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\1\6\1\u0103\27\6\4\0\2\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\1\6"+ + "\1\u0104\27\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\5\6\1\u0105\23\6\4\0\2\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\11\6"+ + "\1\u0106\17\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\20\6\1\u0107\10\6\4\0\2\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\22\6"+ + "\1\u0108\6\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\11\6\1\u0109\17\6\4\0\2\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\3\6"+ + "\1\u010a\25\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\20\6\1\u010b\10\6\4\0\2\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\3\6"+ + "\1\u010c\25\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\10\6\1\u010d\20\6\4\0\2\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\25\6"+ + "\1\u010e\3\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\21\6\1\u010f\7\6\4\0\2\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\22\6"+ + "\1\u0110\6\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\5\6\1\u0111\23\6\4\0\1\6"+ + "\25\0\5\u0112\7\0\4\u0112\10\0\6\u0112\54\0\5\274"+ + "\22\0\1\360\62\0\5\301\7\0\4\301\7\0\1\361"+ + "\6\301\27\0\1\6\10\0\1\6\13\0\5\6\7\0"+ + "\7\6\4\0\1\6\1\u0113\27\6\4\0\2\6\10\0"+ + "\1\6\13\0\5\6\7\0\7\6\4\0\22\6\1\u0114"+ + "\6\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+ + "\7\6\4\0\1\6\1\u0115\27\6\4\0\2\6\10\0"+ + "\1\6\13\0\5\6\7\0\7\6\4\0\15\6\1\u0116"+ + "\13\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+ + "\7\6\4\0\13\6\1\u0117\15\6\4\0\2\6\10\0"+ + "\1\6\13\0\5\6\7\0\7\6\4\0\5\6\1\u0118"+ + "\23\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+ + "\7\6\4\0\4\6\1\u0119\24\6\4\0\2\6\10\0"+ + "\1\6\13\0\5\6\7\0\7\6\4\0\13\6\1\u011a"+ + "\15\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+ + "\7\6\4\0\14\6\1\u011b\14\6\4\0\2\6\10\0"+ + "\1\6\13\0\5\6\7\0\7\6\4\0\22\6\1\u011c"+ + "\6\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+ + "\7\6\4\0\15\6\1\u011d\13\6\4\0\2\6\10\0"+ + "\1\6\13\0\5\6\7\0\7\6\4\0\6\6\1\u011e"+ + "\22\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+ + "\7\6\4\0\5\6\1\u011f\23\6\4\0\2\6\10\0"+ + "\1\6\13\0\5\6\7\0\7\6\4\0\7\6\1\u0120"+ + "\21\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+ + "\7\6\4\0\22\6\1\u0121\6\6\4\0\2\6\10\0"+ + "\1\6\13\0\5\6\7\0\7\6\4\0\3\6\1\u0122"+ + "\25\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+ + "\7\6\4\0\3\6\1\u0123\25\6\4\0\2\6\10\0"+ + "\1\6\13\0\5\6\7\0\7\6\4\0\15\6\1\u0124"+ + "\13\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+ + "\7\6\4\0\3\6\1\u0125\25\6\4\0\2\6\10\0"+ + "\1\6\13\0\5\6\7\0\7\6\4\0\22\6\1\u0126"+ + "\6\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+ + "\7\6\4\0\10\6\1\u0127\20\6\4\0\2\6\10\0"+ + "\1\6\13\0\5\6\7\0\7\6\4\0\20\6\1\u0128"+ + "\10\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+ + "\7\6\4\0\21\6\1\u0129\7\6\4\0\2\6\10\0"+ + "\1\6\13\0\5\6\7\0\7\6\4\0\11\6\1\u012a"+ + "\17\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+ + "\7\6\4\0\11\6\1\u012b\17\6\4\0\1\6\25\0"+ + "\5\5\7\0\4\5\10\0\6\5\27\0\1\6\10\0"+ + "\1\6\13\0\5\6\7\0\7\6\4\0\3\6\1\u012c"+ + "\25\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+ + "\7\6\4\0\15\6\1\u012d\13\6\4\0\2\6\10\0"+ + "\1\6\13\0\5\6\7\0\7\6\4\0\23\6\1\u012e"+ + "\5\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+ + "\7\6\4\0\22\6\1\u012f\6\6\4\0\2\6\10\0"+ + "\1\6\13\0\5\6\7\0\7\6\4\0\21\6\1\u0130"+ + "\7\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+ + "\7\6\4\0\27\6\1\u0131\1\6\4\0\2\6\10\0"+ + "\1\6\13\0\5\6\7\0\7\6\4\0\5\6\1\u0132"+ + "\23\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+ + "\7\6\4\0\3\6\1\u0133\25\6\4\0\2\6\10\0"+ + "\1\6\13\0\5\6\7\0\7\6\4\0\1\6\1\u0134"+ + "\27\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+ + "\7\6\4\0\5\6\1\u0135\23\6\4\0\2\6\10\0"+ + "\1\6\13\0\5\6\7\0\7\6\4\0\5\6\1\u0136"+ + "\23\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+ + "\7\6\4\0\22\6\1\u0137\6\6\4\0\2\6\10\0"+ + "\1\6\13\0\5\6\7\0\7\6\4\0\6\6\1\u0138"+ + "\22\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+ + "\7\6\4\0\16\6\1\u0139\12\6\4\0\2\6\10\0"+ + "\1\6\13\0\5\6\7\0\7\6\4\0\5\6\1\u013a"+ + "\23\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+ + "\7\6\4\0\13\6\1\u013b\15\6\4\0\2\6\10\0"+ + "\1\6\13\0\5\6\7\0\7\6\4\0\22\6\1\u013c"+ + "\6\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+ + "\7\6\4\0\5\6\1\u013d\23\6\4\0\2\6\10\0"+ + "\1\6\13\0\5\6\7\0\7\6\4\0\15\6\1\u013e"+ + "\13\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+ + "\7\6\4\0\5\6\1\u013f\23\6\4\0\2\6\10\0"+ + "\1\6\13\0\5\6\7\0\7\6\4\0\3\6\1\u0140"+ + "\25\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+ + "\7\6\4\0\5\6\1\u0141\23\6\4\0\2\6\10\0"+ + "\1\6\13\0\5\6\7\0\7\6\4\0\17\6\1\u0142"+ + "\11\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+ + "\7\6\4\0\15\6\1\u0143\13\6\4\0\2\6\10\0"+ + "\1\6\13\0\5\6\7\0\7\6\4\0\15\6\1\u0144"+ + "\13\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+ + "\7\6\4\0\5\6\1\u0145\23\6\4\0\2\6\10\0"+ + "\1\6\13\0\5\6\7\0\7\6\4\0\22\6\1\u0146"+ + "\6\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+ + "\7\6\4\0\16\6\1\u0147\12\6\4\0\2\6\10\0"+ + "\1\6\13\0\5\6\7\0\7\6\4\0\5\6\1\u0148"+ + "\23\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+ + "\7\6\4\0\4\6\1\u0149\24\6\4\0\2\6\10\0"+ + "\1\6\13\0\5\6\7\0\7\6\4\0\11\6\1\u014a"+ + "\17\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+ + "\7\6\4\0\22\6\1\u014b\6\6\4\0\2\6\10\0"+ + "\1\6\13\0\5\6\7\0\7\6\4\0\21\6\1\u014c"+ + "\7\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+ + "\7\6\4\0\6\6\1\u014d\22\6\4\0\2\6\10\0"+ + "\1\6\13\0\5\6\7\0\7\6\4\0\30\6\1\u014e"+ + "\4\0\2\6\10\0\1\6\13\0\5\6\7\0\7\6"+ + "\4\0\5\6\1\u014f\23\6\4\0\2\6\10\0\1\6"+ + "\13\0\5\6\7\0\7\6\4\0\4\6\1\u0150\24\6"+ + "\4\0\1\6"; + + private static int [] zzUnpackTrans() { + int [] result = new int[18648]; + int offset = 0; + offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); + return result; + } + + private static int zzUnpackTrans(String packed, int offset, int [] result) { + int i = 0; /* index in packed string */ + int j = offset; /* index in unpacked array */ + int l = packed.length(); + while (i < l) { + int count = packed.charAt(i++); + int value = packed.charAt(i++); + value--; + do result[j++] = value; while (--count > 0); + } + return j; + } + + + /** Error code for "Unknown internal scanner error". */ + private static final int ZZ_UNKNOWN_ERROR = 0; + /** Error code for "could not match input". */ + private static final int ZZ_NO_MATCH = 1; + /** Error code for "pushback value was too large". */ + private static final int ZZ_PUSHBACK_2BIG = 2; + + /** + * Error messages for {@link #ZZ_UNKNOWN_ERROR}, {@link #ZZ_NO_MATCH}, and + * {@link #ZZ_PUSHBACK_2BIG} respectively. + */ + private static final String ZZ_ERROR_MSG[] = { + "Unknown internal scanner error", + "Error: could not match input", + "Error: pushback value was too large" + }; + + /** + * ZZ_ATTRIBUTE[aState] contains the attributes of state {@code aState} + */ + private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute(); + + private static final String ZZ_ATTRIBUTE_PACKED_0 = + "\1\0\1\11\2\1\1\0\3\1\1\0\2\11\2\1"+ + "\1\11\6\1\1\11\3\1\4\11\20\1\1\11\1\1"+ + "\4\11\1\0\3\11\2\0\6\11\1\0\1\1\1\0"+ + "\1\1\1\11\2\1\1\0\1\11\1\0\1\11\2\0"+ + "\1\1\1\0\1\11\1\0\3\11\1\0\1\11\46\1"+ + "\2\11\1\0\1\11\2\0\1\11\3\0\1\1\3\0"+ + "\1\1\2\11\1\0\55\1\2\0\1\1\1\0\1\1"+ + "\5\0\1\11\52\1\3\0\40\1\1\0\76\1"; + + private static int [] zzUnpackAttribute() { + int [] result = new int[336]; + int offset = 0; + offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); + return result; + } + + private static int zzUnpackAttribute(String packed, int offset, int [] result) { + int i = 0; /* index in packed string */ + int j = offset; /* index in unpacked array */ + int l = packed.length(); + while (i < l) { + int count = packed.charAt(i++); + int value = packed.charAt(i++); + do result[j++] = value; while (--count > 0); + } + return j; + } + + /** Input device. */ + private java.io.Reader zzReader; + + /** Current state of the DFA. */ + private int zzState; + + /** Current lexical state. */ + private int zzLexicalState = YYINITIAL; + + /** + * This buffer contains the current text to be matched and is the source of the {@link #yytext()} + * string. + */ + private char zzBuffer[] = new char[ZZ_BUFFERSIZE]; + + /** Text position at the last accepting state. */ + private int zzMarkedPos; + + /** Current text position in the buffer. */ + private int zzCurrentPos; + + /** Marks the beginning of the {@link #yytext()} string in the buffer. */ + private int zzStartRead; + + /** Marks the last character in the buffer, that has been read from input. */ + private int zzEndRead; + + /** + * Whether the scanner is at the end of file. + * @see #yyatEOF + */ + private boolean zzAtEOF; + + /** + * The number of occupied positions in {@link #zzBuffer} beyond {@link #zzEndRead}. + * + *

When a lead/high surrogate has been read from the input stream into the final + * {@link #zzBuffer} position, this will have a value of 1; otherwise, it will have a value of 0. + */ + private int zzFinalHighSurrogate = 0; + + /** Number of newlines encountered up to the start of the matched text. */ + @SuppressWarnings("unused") + private int yyline; + + /** Number of characters from the last newline up to the start of the matched text. */ + @SuppressWarnings("unused") + private int yycolumn; + + /** Number of characters up to the start of the matched text. */ + @SuppressWarnings("unused") + private long yychar; + + /** Whether the scanner is currently at the beginning of a line. */ + @SuppressWarnings("unused") + private boolean zzAtBOL = true; + + /** Whether the user-EOF-code has already been executed. */ + @SuppressWarnings("unused") + private boolean zzEOFDone; + + + /** + * Creates a new scanner + * + * @param in the java.io.Reader to read input from. + */ + public JavaLexer(java.io.Reader in) { + this.zzReader = in; + } + + /** + * Translates raw input code points to DFA table row + */ + private static int zzCMap(int input) { + int offset = input & 255; + return offset == input ? ZZ_CMAP_BLOCKS[offset] : ZZ_CMAP_BLOCKS[ZZ_CMAP_TOP[input >> 8] | offset]; + } + + /** + * Refills the input buffer. + * + * @return {@code false} iff there was new input. + * @exception java.io.IOException if any I/O-Error occurs + */ + private boolean zzRefill() throws java.io.IOException { + + /* first: make room (if you can) */ + if (zzStartRead > 0) { + zzEndRead += zzFinalHighSurrogate; + zzFinalHighSurrogate = 0; + System.arraycopy(zzBuffer, zzStartRead, + zzBuffer, 0, + zzEndRead - zzStartRead); + + /* translate stored positions */ + zzEndRead -= zzStartRead; + zzCurrentPos -= zzStartRead; + zzMarkedPos -= zzStartRead; + zzStartRead = 0; + } + + /* is the buffer big enough? */ + if (zzCurrentPos >= zzBuffer.length - zzFinalHighSurrogate) { + /* if not: blow it up */ + char newBuffer[] = new char[zzBuffer.length * 2]; + System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length); + zzBuffer = newBuffer; + zzEndRead += zzFinalHighSurrogate; + zzFinalHighSurrogate = 0; + } + + /* fill the buffer with new input */ + int requested = zzBuffer.length - zzEndRead; + int numRead = zzReader.read(zzBuffer, zzEndRead, requested); + + /* not supposed to occur according to specification of java.io.Reader */ + if (numRead == 0) { + throw new java.io.IOException( + "Reader returned 0 characters. See JFlex examples/zero-reader for a workaround."); + } + if (numRead > 0) { + zzEndRead += numRead; + if (Character.isHighSurrogate(zzBuffer[zzEndRead - 1])) { + if (numRead == requested) { // We requested too few chars to encode a full Unicode character + --zzEndRead; + zzFinalHighSurrogate = 1; + } else { // There is room in the buffer for at least one more char + int c = zzReader.read(); // Expecting to read a paired low surrogate char + if (c == -1) { + return true; + } else { + zzBuffer[zzEndRead++] = (char)c; + } + } + } + /* potentially more input available */ + return false; + } + + /* numRead < 0 ==> end of stream */ + return true; + } + + + /** + * Closes the input reader. + * + * @throws java.io.IOException if the reader could not be closed. + */ + public final void yyclose() throws java.io.IOException { + zzAtEOF = true; // indicate end of file + zzEndRead = zzStartRead; // invalidate buffer + + if (zzReader != null) { + zzReader.close(); + } + } + + + /** + * Resets the scanner to read from a new input stream. + * + *

Does not close the old reader. + * + *

All internal variables are reset, the old input stream cannot be reused (internal + * buffer is discarded and lost). Lexical state is set to {@code ZZ_INITIAL}. + * + *

Internal scan buffer is resized down to its initial length, if it has grown. + * + * @param reader The new input stream. + */ + public final void yyreset(java.io.Reader reader) { + zzReader = reader; + zzEOFDone = false; + yyResetPosition(); + zzLexicalState = YYINITIAL; + if (zzBuffer.length > ZZ_BUFFERSIZE) { + zzBuffer = new char[ZZ_BUFFERSIZE]; + } + } + + /** + * Resets the input position. + */ + private final void yyResetPosition() { + zzAtBOL = true; + zzAtEOF = false; + zzCurrentPos = 0; + zzMarkedPos = 0; + zzStartRead = 0; + zzEndRead = 0; + zzFinalHighSurrogate = 0; + yyline = 0; + yycolumn = 0; + yychar = 0L; + } + + + /** + * Returns whether the scanner has reached the end of the reader it reads from. + * + * @return whether the scanner has reached EOF. + */ + public final boolean yyatEOF() { + return zzAtEOF; + } + + + /** + * Returns the current lexical state. + * + * @return the current lexical state. + */ + public final int yystate() { + return zzLexicalState; + } + + + /** + * Enters a new lexical state. + * + * @param newState the new lexical state + */ + public final void yybegin(int newState) { + zzLexicalState = newState; + } + + + /** + * Returns the text matched by the current regular expression. + * + * @return the matched text. + */ + public final String yytext() { + return new String(zzBuffer, zzStartRead, zzMarkedPos-zzStartRead); + } + + + /** + * Returns the character at the given position from the matched text. + * + *

It is equivalent to {@code yytext().charAt(pos)}, but faster. + * + * @param position the position of the character to fetch. A value from 0 to {@code yylength()-1}. + * + * @return the character at {@code position}. + */ + public final char yycharat(int position) { + return zzBuffer[zzStartRead + position]; + } + + + /** + * How many characters were matched. + * + * @return the length of the matched text region. + */ + public final int yylength() { + return zzMarkedPos-zzStartRead; + } + + + /** + * Reports an error that occurred while scanning. + * + *

In a well-formed scanner (no or only correct usage of {@code yypushback(int)} and a + * match-all fallback rule) this method will only be called with things that + * "Can't Possibly Happen". + * + *

If this method is called, something is seriously wrong (e.g. a JFlex bug producing a faulty + * scanner etc.). + * + *

Usual syntax/scanner level error handling should be done in error fallback rules. + * + * @param errorCode the code of the error message to display. + */ + private static void zzScanError(int errorCode) { + String message; + try { + message = ZZ_ERROR_MSG[errorCode]; + } catch (ArrayIndexOutOfBoundsException e) { + message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR]; + } + + throw new Error(message); + } + + + /** + * Pushes the specified amount of characters back into the input stream. + * + *

They will be read again by then next call of the scanning method. + * + * @param number the number of characters to be read again. This number must not be greater than + * {@link #yylength()}. + */ + public void yypushback(int number) { + if ( number > yylength() ) + zzScanError(ZZ_PUSHBACK_2BIG); + + zzMarkedPos -= number; + } + + + + + /** + * Resumes scanning until the next regular expression is matched, the end of input is encountered + * or an I/O-Error occurs. + * + * @return the next token. + * @exception java.io.IOException if any I/O-Error occurs. + */ + public JavaToken yylex() throws java.io.IOException { + int zzInput; + int zzAction; + + // cached fields: + int zzCurrentPosL; + int zzMarkedPosL; + int zzEndReadL = zzEndRead; + char[] zzBufferL = zzBuffer; + + int [] zzTransL = ZZ_TRANS; + int [] zzRowMapL = ZZ_ROWMAP; + int [] zzAttrL = ZZ_ATTRIBUTE; + + while (true) { + zzMarkedPosL = zzMarkedPos; + + zzAction = -1; + + zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; + + zzState = ZZ_LEXSTATE[zzLexicalState]; + + // set up zzAction for empty match case: + int zzAttributes = zzAttrL[zzState]; + if ( (zzAttributes & 1) == 1 ) { + zzAction = zzState; + } + + + zzForAction: { + while (true) { + + if (zzCurrentPosL < zzEndReadL) { + zzInput = Character.codePointAt(zzBufferL, zzCurrentPosL, zzEndReadL); + zzCurrentPosL += Character.charCount(zzInput); + } + else if (zzAtEOF) { + zzInput = YYEOF; + break zzForAction; + } + else { + // store back cached positions + zzCurrentPos = zzCurrentPosL; + zzMarkedPos = zzMarkedPosL; + boolean eof = zzRefill(); + // get translated positions and possibly new buffer + zzCurrentPosL = zzCurrentPos; + zzMarkedPosL = zzMarkedPos; + zzBufferL = zzBuffer; + zzEndReadL = zzEndRead; + if (eof) { + zzInput = YYEOF; + break zzForAction; + } + else { + zzInput = Character.codePointAt(zzBufferL, zzCurrentPosL, zzEndReadL); + zzCurrentPosL += Character.charCount(zzInput); + } + } + int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMap(zzInput) ]; + if (zzNext == -1) break zzForAction; + zzState = zzNext; + + zzAttributes = zzAttrL[zzState]; + if ( (zzAttributes & 1) == 1 ) { + zzAction = zzState; + zzMarkedPosL = zzCurrentPosL; + if ( (zzAttributes & 8) == 8 ) break zzForAction; + } + + } + } + + // store back cached position + zzMarkedPos = zzMarkedPosL; + + if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { + zzAtEOF = true; + { + return JavaToken.EOF; + } + } + else { + switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) { + case 1: + { + } + // fall through + case 105: break; + case 2: + { return JavaToken.EXCLAMATIONMARK; + } + // fall through + case 106: break; + case 3: + { return JavaToken.ID; + } + // fall through + case 107: break; + case 4: + { return JavaToken.PERCENT; + } + // fall through + case 108: break; + case 5: + { return JavaToken.ANDBIT; + } + // fall through + case 109: break; + case 6: + { return JavaToken.PARENTHLEFT; + } + // fall through + case 110: break; + case 7: + { return JavaToken.PARENTHRIGHT; + } + // fall through + case 111: break; + case 8: + { return JavaToken.STAR; + } + // fall through + case 112: break; + case 9: + { return JavaToken.PLUS; + } + // fall through + case 113: break; + case 10: + { return JavaToken.COMMA; + } + // fall through + case 114: break; + case 11: + { return JavaToken.MINUS; + } + // fall through + case 115: break; + case 12: + { return JavaToken.DOT; + } + // fall through + case 116: break; + case 13: + { return JavaToken.SLASH; + } + // fall through + case 117: break; + case 14: + { return JavaToken.INTEGERLIT; + } + // fall through + case 118: break; + case 15: + { return JavaToken.COLON; + } + // fall through + case 119: break; + case 16: + { return JavaToken.SEMICOLON; + } + // fall through + case 120: break; + case 17: + { return JavaToken.LT; + } + // fall through + case 121: break; + case 18: + { return JavaToken.ASSIGN; + } + // fall through + case 122: break; + case 19: + { return JavaToken.GT; + } + // fall through + case 123: break; + case 20: + { return JavaToken.QUESTIONMARK; + } + // fall through + case 124: break; + case 21: + { return JavaToken.AT; + } + // fall through + case 125: break; + case 22: + { return JavaToken.BRACKETLEFT; + } + // fall through + case 126: break; + case 23: + { return JavaToken.BRACKETRIGHT; + } + // fall through + case 127: break; + case 24: + { return JavaToken.XORBIT; + } + // fall through + case 128: break; + case 25: + { return JavaToken.CURLYLEFT; + } + // fall through + case 129: break; + case 26: + { return JavaToken.ORBIT; + } + // fall through + case 130: break; + case 27: + { return JavaToken.CURLYRIGHT; + } + // fall through + case 131: break; + case 28: + { return JavaToken.TILDA; + } + // fall through + case 132: break; + case 29: + { return JavaToken.NOTEQ; + } + // fall through + case 133: break; + case 30: + { return JavaToken.STRINGLIT; + } + // fall through + case 134: break; + case 31: + { return JavaToken.PERCENTASSIGN; + } + // fall through + case 135: break; + case 32: + { return JavaToken.AND; + } + // fall through + case 136: break; + case 33: + { return JavaToken.ANDASSIGN; + } + // fall through + case 137: break; + case 34: + { return JavaToken.STARASSIGN; + } + // fall through + case 138: break; + case 35: + { return JavaToken.PLUSPLUS; + } + // fall through + case 139: break; + case 36: + { return JavaToken.PLUSASSIGN; + } + // fall through + case 140: break; + case 37: + { return JavaToken.MINUSMINUS; + } + // fall through + case 141: break; + case 38: + { return JavaToken.MINUSASSIGN; + } + // fall through + case 142: break; + case 39: + { return JavaToken.ARROW; + } + // fall through + case 143: break; + case 40: + { return JavaToken.FLOATINGLIT; + } + // fall through + case 144: break; + case 41: + { /* DO NOTHING */ + } + // fall through + case 145: break; + case 42: + { return JavaToken.SLASHASSIGN; + } + // fall through + case 146: break; + case 43: + { return JavaToken.DOUBLECOLON; + } + // fall through + case 147: break; + case 44: + { return JavaToken.LESSEQ; + } + // fall through + case 148: break; + case 45: + { return JavaToken.EQ; + } + // fall through + case 149: break; + case 46: + { return JavaToken.GREATEQ; + } + // fall through + case 150: break; + case 47: + { return JavaToken.XORASSIGN; + } + // fall through + case 151: break; + case 48: + { return JavaToken.DO; + } + // fall through + case 152: break; + case 49: + { return JavaToken.IF; + } + // fall through + case 153: break; + case 50: + { return JavaToken.ORASSIGN; + } + // fall through + case 154: break; + case 51: + { return JavaToken.OR; + } + // fall through + case 155: break; + case 52: + { return JavaToken.CHARLIT; + } + // fall through + case 156: break; + case 53: + { return JavaToken.ELLIPSIS; + } + // fall through + case 157: break; + case 54: + { return JavaToken.SHIFTLEFTASSIGN; + } + // fall through + case 158: break; + case 55: + { return JavaToken.SHIFTRIGHTASSIGN; + } + // fall through + case 159: break; + case 56: + { return JavaToken.FOR; + } + // fall through + case 160: break; + case 57: + { return JavaToken.INT; + } + // fall through + case 161: break; + case 58: + { return JavaToken.NEW; + } + // fall through + case 162: break; + case 59: + { return JavaToken.TRY; + } + // fall through + case 163: break; + case 60: + { return JavaToken.USRIGHTSHIFTASSIGN; + } + // fall through + case 164: break; + case 61: + { return JavaToken.BYTE; + } + // fall through + case 165: break; + case 62: + { return JavaToken.CASE; + } + // fall through + case 166: break; + case 63: + { return JavaToken.CHAR; + } + // fall through + case 167: break; + case 64: + { return JavaToken.ELSE; + } + // fall through + case 168: break; + case 65: + { return JavaToken.ENUM; + } + // fall through + case 169: break; + case 66: + { return JavaToken.LONG; + } + // fall through + case 170: break; + case 67: + { return JavaToken.NULLLIT; + } + // fall through + case 171: break; + case 68: + { return JavaToken.THIS; + } + // fall through + case 172: break; + case 69: + { return JavaToken.BOOLEANLIT; + } + // fall through + case 173: break; + case 70: + { return JavaToken.VOID; + } + // fall through + case 174: break; + case 71: + { return JavaToken.BREAK; + } + // fall through + case 175: break; + case 72: + { return JavaToken.CATCH; + } + // fall through + case 176: break; + case 73: + { return JavaToken.CLASS; + } + // fall through + case 177: break; + case 74: + { return JavaToken.FINAL; + } + // fall through + case 178: break; + case 75: + { return JavaToken.FLOAT; + } + // fall through + case 179: break; + case 76: + { return JavaToken.SHORT; + } + // fall through + case 180: break; + case 77: + { return JavaToken.SUPER; + } + // fall through + case 181: break; + case 78: + { return JavaToken.THROW; + } + // fall through + case 182: break; + case 79: + { return JavaToken.WHILE; + } + // fall through + case 183: break; + case 80: + { return JavaToken.ASSERT; + } + // fall through + case 184: break; + case 81: + { return JavaToken.DOUBLE; + } + // fall through + case 185: break; + case 82: + { return JavaToken.IMPORT; + } + // fall through + case 186: break; + case 83: + { return JavaToken.NATIVE; + } + // fall through + case 187: break; + case 84: + { return JavaToken.PUBLIC; + } + // fall through + case 188: break; + case 85: + { return JavaToken.RETURN; + } + // fall through + case 189: break; + case 86: + { return JavaToken.STATIC; + } + // fall through + case 190: break; + case 87: + { return JavaToken.SWITCH; + } + // fall through + case 191: break; + case 88: + { return JavaToken.THROWS; + } + // fall through + case 192: break; + case 89: + { return JavaToken.BOOLEAN; + } + // fall through + case 193: break; + case 90: + { return JavaToken.DEFAULT; + } + // fall through + case 194: break; + case 91: + { return JavaToken.EXTENDS; + } + // fall through + case 195: break; + case 92: + { return JavaToken.FINALLY; + } + // fall through + case 196: break; + case 93: + { return JavaToken.PACKAGE; + } + // fall through + case 197: break; + case 94: + { return JavaToken.PRIVATE; + } + // fall through + case 198: break; + case 95: + { return JavaToken.ABSTRACT; + } + // fall through + case 199: break; + case 96: + { return JavaToken.CONTINUE; + } + // fall through + case 200: break; + case 97: + { return JavaToken.STRICTFP; + } + // fall through + case 201: break; + case 98: + { return JavaToken.VOLATILE; + } + // fall through + case 202: break; + case 99: + { return JavaToken.INTERFACE; + } + // fall through + case 203: break; + case 100: + { return JavaToken.PROTECTED; + } + // fall through + case 204: break; + case 101: + { return JavaToken.TRANSIENT; + } + // fall through + case 205: break; + case 102: + { return JavaToken.IMPLEMENTS; + } + // fall through + case 206: break; + case 103: + { return JavaToken.INSTANCEOF; + } + // fall through + case 207: break; + case 104: + { return JavaToken.SYNCHRONIZED; + } + // fall through + case 208: break; + default: + zzScanError(ZZ_NO_MATCH); + } + } + } + } + + +} diff --git a/benchmarks/src/main/java/org/ucfs/JavaToken.kt b/benchmarks/src/main/java/org/ucfs/JavaToken.kt new file mode 100644 index 000000000..13c881226 --- /dev/null +++ b/benchmarks/src/main/java/org/ucfs/JavaToken.kt @@ -0,0 +1,31 @@ +package org.ucfs + +import org.ucfs.parser.ParsingException +import org.ucfs.rsm.symbol.ITerminal + +enum class JavaToken : ITerminal { + ID, EOF, INTEGERLIT, FLOATINGLIT, BOOLEANLIT, CHARLIT, STRINGLIT, NULLLIT, + BOOLEAN, BYTE, SHORT, INT, LONG, CHAR, FLOAT, DOUBLE, DOT, BRACKETLEFT, BRACKETRIGHT, + PARENTHLEFT, PARENTHRIGHT, CURLYLEFT, CURLYRIGHT, EXTENDS, ANDBIT, LT, GT, + DIAMOND, SEMICOLON, COLON, DOUBLECOLON, ELLIPSIS, COMMA, QUESTIONMARK, SUPER, PACKAGE, + IMPORT, STATIC, STAR, PLUS, MINUS, PERCENT, SLASH, PLUSPLUS, MINUSMINUS, TILDA, EXCLAMATIONMARK, + CLASS, PUBLIC, PROTECTED, PRIVATE, FINAL, STRICTFP, IMPLEMENTS, TRANSIENT, VOLATILE, ASSIGN, + STARASSIGN, SLASHASSIGN, PLUSASSIGN, MINUSASSIGN, PERCENTASSIGN, XORASSIGN, SHIFTLEFTASSIGN, + SHIFTRIGHTASSIGN, USRIGHTSHIFTASSIGN, ANDASSIGN, ORASSIGN, OR, AND, XORBIT, EQ, NOTEQ, LESSEQ, + GREATEQ, INSTANCEOF, SYNCHRONIZED, NATIVE, VOID, THIS, THROWS, ENUM, INTERFACE, ABSTRACT, AT, DEFAULT, ASSERT, + SWITCH, CASE, WHILE, FOR, IF, ELSE, DO, BREAK, CONTINUE, RETURN, THROW, TRY, CATCH, FINALLY, ORBIT, NEW, ARROW; + + override fun getComparator(): Comparator { + return object : Comparator { + override fun compare(a: ITerminal, b: ITerminal): Int { + if (a !is JavaToken || b !is JavaToken) { + throw ParsingException( + "used comparator for $javaClass, " + + "but got elements of ${a.javaClass}$ and ${b.javaClass}\$" + ) + } + return a.ordinal - b.ordinal + } + } + } +} \ No newline at end of file diff --git a/benchmarks/src/main/kotlin/org/ucfs/Java8Parser.kt b/benchmarks/src/main/kotlin/org/ucfs/Java8Parser.kt new file mode 100644 index 000000000..8c4934ee9 --- /dev/null +++ b/benchmarks/src/main/kotlin/org/ucfs/Java8Parser.kt @@ -0,0 +1,8655 @@ +@file:Suppress("RedundantVisibilityModifier") + +package org.ucfs + +import java8.Java8 +import java8.JavaToken +import org.ucfs.descriptors.Descriptor +import org.ucfs.input.IInputGraph +import org.ucfs.input.ILabel +import org.ucfs.parser.GeneratedParser +import org.ucfs.rsm.symbol.Nonterminal +import org.ucfs.sppf.node.SppfNode + +public class Java8Parser : GeneratedParser() + { + public val grammar: Java8 = Java8() + + private val CompilationUnit: Nonterminal = grammar.CompilationUnit.nonterm + + private val Identifier: Nonterminal = grammar.Identifier.nonterm + + private val Literal: Nonterminal = grammar.Literal.nonterm + + private val Type: Nonterminal = grammar.Type.nonterm + + private val PrimitiveType: Nonterminal = grammar.PrimitiveType.nonterm + + private val ReferenceType: Nonterminal = grammar.ReferenceType.nonterm + + private val Annotation: Nonterminal = grammar.Annotation.nonterm + + private val NumericType: Nonterminal = grammar.NumericType.nonterm + + private val IntegralType: Nonterminal = grammar.IntegralType.nonterm + + private val FloatingPointType: Nonterminal = grammar.FloatingPointType.nonterm + + private val ClassOrInterfaceType: Nonterminal = grammar.ClassOrInterfaceType.nonterm + + private val TypeVariable: Nonterminal = grammar.TypeVariable.nonterm + + private val ArrayType: Nonterminal = grammar.ArrayType.nonterm + + private val ClassType: Nonterminal = grammar.ClassType.nonterm + + private val InterfaceType: Nonterminal = grammar.InterfaceType.nonterm + + private val TypeArguments: Nonterminal = grammar.TypeArguments.nonterm + + private val Dims: Nonterminal = grammar.Dims.nonterm + + private val TypeParameter: Nonterminal = grammar.TypeParameter.nonterm + + private val TypeParameterModifier: Nonterminal = grammar.TypeParameterModifier.nonterm + + private val TypeBound: Nonterminal = grammar.TypeBound.nonterm + + private val AdditionalBound: Nonterminal = grammar.AdditionalBound.nonterm + + private val TypeArgumentList: Nonterminal = grammar.TypeArgumentList.nonterm + + private val TypeArgument: Nonterminal = grammar.TypeArgument.nonterm + + private val Wildcard: Nonterminal = grammar.Wildcard.nonterm + + private val WildcardBounds: Nonterminal = grammar.WildcardBounds.nonterm + + private val TypeName: Nonterminal = grammar.TypeName.nonterm + + private val PackageOrTypeName: Nonterminal = grammar.PackageOrTypeName.nonterm + + private val ExpressionName: Nonterminal = grammar.ExpressionName.nonterm + + private val AmbiguousName: Nonterminal = grammar.AmbiguousName.nonterm + + private val MethodName: Nonterminal = grammar.MethodName.nonterm + + private val PackageName: Nonterminal = grammar.PackageName.nonterm + + private val Result: Nonterminal = grammar.Result.nonterm + + private val PackageDeclaration: Nonterminal = grammar.PackageDeclaration.nonterm + + private val ImportDeclaration: Nonterminal = grammar.ImportDeclaration.nonterm + + private val TypeDeclaration: Nonterminal = grammar.TypeDeclaration.nonterm + + private val PackageModifier: Nonterminal = grammar.PackageModifier.nonterm + + private val SingleTypeImportDeclaration: Nonterminal = grammar.SingleTypeImportDeclaration.nonterm + + private val TypeImportOnDemandDeclaration: Nonterminal = + grammar.TypeImportOnDemandDeclaration.nonterm + + private val SingleStaticImportDeclaration: Nonterminal = + grammar.SingleStaticImportDeclaration.nonterm + + private val StaticImportOnDemandDeclaration: Nonterminal = + grammar.StaticImportOnDemandDeclaration.nonterm + + private val ClassDeclaration: Nonterminal = grammar.ClassDeclaration.nonterm + + private val InterfaceDeclaration: Nonterminal = grammar.InterfaceDeclaration.nonterm + + private val Throws: Nonterminal = grammar.Throws.nonterm + + private val NormalClassDeclaration: Nonterminal = grammar.NormalClassDeclaration.nonterm + + private val EnumDeclaration: Nonterminal = grammar.EnumDeclaration.nonterm + + private val ClassModifier: Nonterminal = grammar.ClassModifier.nonterm + + private val TypeParameters: Nonterminal = grammar.TypeParameters.nonterm + + private val Superclass: Nonterminal = grammar.Superclass.nonterm + + private val Superinterfaces: Nonterminal = grammar.Superinterfaces.nonterm + + private val ClassBody: Nonterminal = grammar.ClassBody.nonterm + + private val TypeParameterList: Nonterminal = grammar.TypeParameterList.nonterm + + private val InterfaceTypeList: Nonterminal = grammar.InterfaceTypeList.nonterm + + private val ClassBodyDeclaration: Nonterminal = grammar.ClassBodyDeclaration.nonterm + + private val ClassMemberDeclaration: Nonterminal = grammar.ClassMemberDeclaration.nonterm + + private val InstanceInitializer: Nonterminal = grammar.InstanceInitializer.nonterm + + private val StaticInitializer: Nonterminal = grammar.StaticInitializer.nonterm + + private val ConstructorDeclaration: Nonterminal = grammar.ConstructorDeclaration.nonterm + + private val FieldDeclaration: Nonterminal = grammar.FieldDeclaration.nonterm + + private val MethodDeclaration: Nonterminal = grammar.MethodDeclaration.nonterm + + private val FieldModifier: Nonterminal = grammar.FieldModifier.nonterm + + private val UnannType: Nonterminal = grammar.UnannType.nonterm + + private val VariableDeclaratorList: Nonterminal = grammar.VariableDeclaratorList.nonterm + + private val VariableDeclarator: Nonterminal = grammar.VariableDeclarator.nonterm + + private val VariableDeclaratorId: Nonterminal = grammar.VariableDeclaratorId.nonterm + + private val VariableInitializer: Nonterminal = grammar.VariableInitializer.nonterm + + private val Expression: Nonterminal = grammar.Expression.nonterm + + private val ArrayInitializer: Nonterminal = grammar.ArrayInitializer.nonterm + + private val UnannPrimitiveType: Nonterminal = grammar.UnannPrimitiveType.nonterm + + private val UnannReferenceType: Nonterminal = grammar.UnannReferenceType.nonterm + + private val UnannClassOrInterfaceType: Nonterminal = grammar.UnannClassOrInterfaceType.nonterm + + private val UnannTypeVariable: Nonterminal = grammar.UnannTypeVariable.nonterm + + private val UnannArrayType: Nonterminal = grammar.UnannArrayType.nonterm + + private val UnannClassType: Nonterminal = grammar.UnannClassType.nonterm + + private val UnannInterfaceType: Nonterminal = grammar.UnannInterfaceType.nonterm + + private val MethodModifier: Nonterminal = grammar.MethodModifier.nonterm + + private val MethodHeader: Nonterminal = grammar.MethodHeader.nonterm + + private val MethodBody: Nonterminal = grammar.MethodBody.nonterm + + private val MethodDeclarator: Nonterminal = grammar.MethodDeclarator.nonterm + + private val FormalParameterList: Nonterminal = grammar.FormalParameterList.nonterm + + private val ReceiverParameter: Nonterminal = grammar.ReceiverParameter.nonterm + + private val FormalParameters: Nonterminal = grammar.FormalParameters.nonterm + + private val LastFormalParameter: Nonterminal = grammar.LastFormalParameter.nonterm + + private val FormalParameter: Nonterminal = grammar.FormalParameter.nonterm + + private val VariableModifier: Nonterminal = grammar.VariableModifier.nonterm + + private val ExceptionTypeList: Nonterminal = grammar.ExceptionTypeList.nonterm + + private val ExceptionType: Nonterminal = grammar.ExceptionType.nonterm + + private val Block: Nonterminal = grammar.Block.nonterm + + private val ConstructorModifier: Nonterminal = grammar.ConstructorModifier.nonterm + + private val ConstructorDeclarator: Nonterminal = grammar.ConstructorDeclarator.nonterm + + private val ConstructorBody: Nonterminal = grammar.ConstructorBody.nonterm + + private val SimpleTypeName: Nonterminal = grammar.SimpleTypeName.nonterm + + private val ExplicitConstructorInvocation: Nonterminal = + grammar.ExplicitConstructorInvocation.nonterm + + private val EnumBody: Nonterminal = grammar.EnumBody.nonterm + + private val EnumConstantList: Nonterminal = grammar.EnumConstantList.nonterm + + private val EnumConstant: Nonterminal = grammar.EnumConstant.nonterm + + private val EnumConstantModifier: Nonterminal = grammar.EnumConstantModifier.nonterm + + private val EnumBodyDeclarations: Nonterminal = grammar.EnumBodyDeclarations.nonterm + + private val BlockStatements: Nonterminal = grammar.BlockStatements.nonterm + + private val ArgumentList: Nonterminal = grammar.ArgumentList.nonterm + + private val Primary: Nonterminal = grammar.Primary.nonterm + + private val NormalInterfaceDeclaration: Nonterminal = grammar.NormalInterfaceDeclaration.nonterm + + private val InterfaceModifier: Nonterminal = grammar.InterfaceModifier.nonterm + + private val ExtendsInterfaces: Nonterminal = grammar.ExtendsInterfaces.nonterm + + private val InterfaceBody: Nonterminal = grammar.InterfaceBody.nonterm + + private val InterfaceMemberDeclaration: Nonterminal = grammar.InterfaceMemberDeclaration.nonterm + + private val ConstantDeclaration: Nonterminal = grammar.ConstantDeclaration.nonterm + + private val ConstantModifier: Nonterminal = grammar.ConstantModifier.nonterm + + private val AnnotationTypeDeclaration: Nonterminal = grammar.AnnotationTypeDeclaration.nonterm + + private val AnnotationTypeBody: Nonterminal = grammar.AnnotationTypeBody.nonterm + + private val AnnotationTypeMemberDeclaration: Nonterminal = + grammar.AnnotationTypeMemberDeclaration.nonterm + + private val AnnotationTypeElementDeclaration: Nonterminal = + grammar.AnnotationTypeElementDeclaration.nonterm + + private val DefaultValue: Nonterminal = grammar.DefaultValue.nonterm + + private val NormalAnnotation: Nonterminal = grammar.NormalAnnotation.nonterm + + private val ElementValuePairList: Nonterminal = grammar.ElementValuePairList.nonterm + + private val ElementValuePair: Nonterminal = grammar.ElementValuePair.nonterm + + private val ElementValue: Nonterminal = grammar.ElementValue.nonterm + + private val ElementValueArrayInitializer: Nonterminal = + grammar.ElementValueArrayInitializer.nonterm + + private val ElementValueList: Nonterminal = grammar.ElementValueList.nonterm + + private val MarkerAnnotation: Nonterminal = grammar.MarkerAnnotation.nonterm + + private val SingleElementAnnotation: Nonterminal = grammar.SingleElementAnnotation.nonterm + + private val InterfaceMethodDeclaration: Nonterminal = grammar.InterfaceMethodDeclaration.nonterm + + private val AnnotationTypeElementModifier: Nonterminal = + grammar.AnnotationTypeElementModifier.nonterm + + private val ConditionalExpression: Nonterminal = grammar.ConditionalExpression.nonterm + + private val VariableInitializerList: Nonterminal = grammar.VariableInitializerList.nonterm + + private val BlockStatement: Nonterminal = grammar.BlockStatement.nonterm + + private val LocalVariableDeclarationStatement: Nonterminal = + grammar.LocalVariableDeclarationStatement.nonterm + + private val LocalVariableDeclaration: Nonterminal = grammar.LocalVariableDeclaration.nonterm + + private val Statement: Nonterminal = grammar.Statement.nonterm + + private val StatementNoShortIf: Nonterminal = grammar.StatementNoShortIf.nonterm + + private val StatementWithoutTrailingSubstatement: Nonterminal = + grammar.StatementWithoutTrailingSubstatement.nonterm + + private val EmptyStatement: Nonterminal = grammar.EmptyStatement.nonterm + + private val LabeledStatement: Nonterminal = grammar.LabeledStatement.nonterm + + private val LabeledStatementNoShortIf: Nonterminal = grammar.LabeledStatementNoShortIf.nonterm + + private val ExpressionStatement: Nonterminal = grammar.ExpressionStatement.nonterm + + private val StatementExpression: Nonterminal = grammar.StatementExpression.nonterm + + private val IfThenStatement: Nonterminal = grammar.IfThenStatement.nonterm + + private val IfThenElseStatement: Nonterminal = grammar.IfThenElseStatement.nonterm + + private val IfThenElseStatementNoShortIf: Nonterminal = + grammar.IfThenElseStatementNoShortIf.nonterm + + private val AssertStatement: Nonterminal = grammar.AssertStatement.nonterm + + private val SwitchStatement: Nonterminal = grammar.SwitchStatement.nonterm + + private val SwitchBlock: Nonterminal = grammar.SwitchBlock.nonterm + + private val SwitchBlockStatementGroup: Nonterminal = grammar.SwitchBlockStatementGroup.nonterm + + private val SwitchLabels: Nonterminal = grammar.SwitchLabels.nonterm + + private val SwitchLabel: Nonterminal = grammar.SwitchLabel.nonterm + + private val EnumConstantName: Nonterminal = grammar.EnumConstantName.nonterm + + private val WhileStatement: Nonterminal = grammar.WhileStatement.nonterm + + private val WhileStatementNoShortIf: Nonterminal = grammar.WhileStatementNoShortIf.nonterm + + private val DoStatement: Nonterminal = grammar.DoStatement.nonterm + + private val InterfaceMethodModifier: Nonterminal = grammar.InterfaceMethodModifier.nonterm + + private val ForStatement: Nonterminal = grammar.ForStatement.nonterm + + private val ForStatementNoShortIf: Nonterminal = grammar.ForStatementNoShortIf.nonterm + + private val BasicForStatement: Nonterminal = grammar.BasicForStatement.nonterm + + private val BasicForStatementNoShortIf: Nonterminal = grammar.BasicForStatementNoShortIf.nonterm + + private val ForInit: Nonterminal = grammar.ForInit.nonterm + + private val ForUpdate: Nonterminal = grammar.ForUpdate.nonterm + + private val StatementExpressionList: Nonterminal = grammar.StatementExpressionList.nonterm + + private val EnhancedForStatement: Nonterminal = grammar.EnhancedForStatement.nonterm + + private val EnhancedForStatementNoShortIf: Nonterminal = + grammar.EnhancedForStatementNoShortIf.nonterm + + private val BreakStatement: Nonterminal = grammar.BreakStatement.nonterm + + private val ContinueStatement: Nonterminal = grammar.ContinueStatement.nonterm + + private val ReturnStatement: Nonterminal = grammar.ReturnStatement.nonterm + + private val ThrowStatement: Nonterminal = grammar.ThrowStatement.nonterm + + private val SynchronizedStatement: Nonterminal = grammar.SynchronizedStatement.nonterm + + private val TryStatement: Nonterminal = grammar.TryStatement.nonterm + + private val Catches: Nonterminal = grammar.Catches.nonterm + + private val CatchClause: Nonterminal = grammar.CatchClause.nonterm + + private val CatchFormalParameter: Nonterminal = grammar.CatchFormalParameter.nonterm + + private val CatchType: Nonterminal = grammar.CatchType.nonterm + + private val Finally: Nonterminal = grammar.Finally.nonterm + + private val TryWithResourcesStatement: Nonterminal = grammar.TryWithResourcesStatement.nonterm + + private val ResourceSpecification: Nonterminal = grammar.ResourceSpecification.nonterm + + private val ResourceList: Nonterminal = grammar.ResourceList.nonterm + + private val Resource: Nonterminal = grammar.Resource.nonterm + + private val PrimaryNoNewArray: Nonterminal = grammar.PrimaryNoNewArray.nonterm + + private val ClassLiteral: Nonterminal = grammar.ClassLiteral.nonterm + + private val classOrInterfaceTypeToInstantiate: Nonterminal = + grammar.classOrInterfaceTypeToInstantiate.nonterm + + private val UnqualifiedClassInstanceCreationExpression: Nonterminal = + grammar.UnqualifiedClassInstanceCreationExpression.nonterm + + private val ClassInstanceCreationExpression: Nonterminal = + grammar.ClassInstanceCreationExpression.nonterm + + private val FieldAccess: Nonterminal = grammar.FieldAccess.nonterm + + private val TypeArgumentsOrDiamond: Nonterminal = grammar.TypeArgumentsOrDiamond.nonterm + + private val ArrayAccess: Nonterminal = grammar.ArrayAccess.nonterm + + private val MethodInvocation: Nonterminal = grammar.MethodInvocation.nonterm + + private val MethodReference: Nonterminal = grammar.MethodReference.nonterm + + private val ArrayCreationExpression: Nonterminal = grammar.ArrayCreationExpression.nonterm + + private val DimExprs: Nonterminal = grammar.DimExprs.nonterm + + private val DimExpr: Nonterminal = grammar.DimExpr.nonterm + + private val LambdaExpression: Nonterminal = grammar.LambdaExpression.nonterm + + private val LambdaParameters: Nonterminal = grammar.LambdaParameters.nonterm + + private val InferredFormalParameterList: Nonterminal = grammar.InferredFormalParameterList.nonterm + + private val LambdaBody: Nonterminal = grammar.LambdaBody.nonterm + + private val AssignmentExpression: Nonterminal = grammar.AssignmentExpression.nonterm + + private val Assignment: Nonterminal = grammar.Assignment.nonterm + + private val LeftHandSide: Nonterminal = grammar.LeftHandSide.nonterm + + private val AssignmentOperator: Nonterminal = grammar.AssignmentOperator.nonterm + + private val ConditionalOrExpression: Nonterminal = grammar.ConditionalOrExpression.nonterm + + private val ConditionalAndExpression: Nonterminal = grammar.ConditionalAndExpression.nonterm + + private val InclusiveOrExpression: Nonterminal = grammar.InclusiveOrExpression.nonterm + + private val ExclusiveOrExpression: Nonterminal = grammar.ExclusiveOrExpression.nonterm + + private val AndExpression: Nonterminal = grammar.AndExpression.nonterm + + private val EqualityExpression: Nonterminal = grammar.EqualityExpression.nonterm + + private val RelationalExpression: Nonterminal = grammar.RelationalExpression.nonterm + + private val ShiftExpression: Nonterminal = grammar.ShiftExpression.nonterm + + private val AdditiveExpression: Nonterminal = grammar.AdditiveExpression.nonterm + + private val MultiplicativeExpression: Nonterminal = grammar.MultiplicativeExpression.nonterm + + private val PreIncrementExpression: Nonterminal = grammar.PreIncrementExpression.nonterm + + private val PreDecrementExpression: Nonterminal = grammar.PreDecrementExpression.nonterm + + private val UnaryExpressionNotPlusMinus: Nonterminal = grammar.UnaryExpressionNotPlusMinus.nonterm + + private val UnaryExpression: Nonterminal = grammar.UnaryExpression.nonterm + + private val PostfixExpression: Nonterminal = grammar.PostfixExpression.nonterm + + private val PostIncrementExpression: Nonterminal = grammar.PostIncrementExpression.nonterm + + private val PostDecrementExpression: Nonterminal = grammar.PostDecrementExpression.nonterm + + private val CastExpression: Nonterminal = grammar.CastExpression.nonterm + + private val ConstantExpression: Nonterminal = grammar.ConstantExpression.nonterm + + override fun callNtFuncs( + nt: Nonterminal, + descriptor: Descriptor, + curSppfNode: SppfNode?, + ) { + when(nt.name) { + "CompilationUnit" -> parseCompilationUnit(descriptor, curSppfNode) + "Identifier" -> parseIdentifier(descriptor, curSppfNode) + "Literal" -> parseLiteral(descriptor, curSppfNode) + "Type" -> parseType(descriptor, curSppfNode) + "PrimitiveType" -> parsePrimitiveType(descriptor, curSppfNode) + "ReferenceType" -> parseReferenceType(descriptor, curSppfNode) + "Annotation" -> parseAnnotation(descriptor, curSppfNode) + "NumericType" -> parseNumericType(descriptor, curSppfNode) + "IntegralType" -> parseIntegralType(descriptor, curSppfNode) + "FloatingPointType" -> parseFloatingPointType(descriptor, curSppfNode) + "ClassOrInterfaceType" -> parseClassOrInterfaceType(descriptor, curSppfNode) + "TypeVariable" -> parseTypeVariable(descriptor, curSppfNode) + "ArrayType" -> parseArrayType(descriptor, curSppfNode) + "ClassType" -> parseClassType(descriptor, curSppfNode) + "InterfaceType" -> parseInterfaceType(descriptor, curSppfNode) + "TypeArguments" -> parseTypeArguments(descriptor, curSppfNode) + "Dims" -> parseDims(descriptor, curSppfNode) + "TypeParameter" -> parseTypeParameter(descriptor, curSppfNode) + "TypeParameterModifier" -> parseTypeParameterModifier(descriptor, curSppfNode) + "TypeBound" -> parseTypeBound(descriptor, curSppfNode) + "AdditionalBound" -> parseAdditionalBound(descriptor, curSppfNode) + "TypeArgumentList" -> parseTypeArgumentList(descriptor, curSppfNode) + "TypeArgument" -> parseTypeArgument(descriptor, curSppfNode) + "Wildcard" -> parseWildcard(descriptor, curSppfNode) + "WildcardBounds" -> parseWildcardBounds(descriptor, curSppfNode) + "TypeName" -> parseTypeName(descriptor, curSppfNode) + "PackageOrTypeName" -> parsePackageOrTypeName(descriptor, curSppfNode) + "ExpressionName" -> parseExpressionName(descriptor, curSppfNode) + "AmbiguousName" -> parseAmbiguousName(descriptor, curSppfNode) + "MethodName" -> parseMethodName(descriptor, curSppfNode) + "PackageName" -> parsePackageName(descriptor, curSppfNode) + "Result" -> parseResult(descriptor, curSppfNode) + "PackageDeclaration" -> parsePackageDeclaration(descriptor, curSppfNode) + "ImportDeclaration" -> parseImportDeclaration(descriptor, curSppfNode) + "TypeDeclaration" -> parseTypeDeclaration(descriptor, curSppfNode) + "PackageModifier" -> parsePackageModifier(descriptor, curSppfNode) + "SingleTypeImportDeclaration" -> parseSingleTypeImportDeclaration(descriptor, curSppfNode) + "TypeImportOnDemandDeclaration" -> parseTypeImportOnDemandDeclaration(descriptor, curSppfNode) + "SingleStaticImportDeclaration" -> parseSingleStaticImportDeclaration(descriptor, curSppfNode) + "StaticImportOnDemandDeclaration" -> parseStaticImportOnDemandDeclaration(descriptor, + curSppfNode) + "ClassDeclaration" -> parseClassDeclaration(descriptor, curSppfNode) + "InterfaceDeclaration" -> parseInterfaceDeclaration(descriptor, curSppfNode) + "Throws" -> parseThrows(descriptor, curSppfNode) + "NormalClassDeclaration" -> parseNormalClassDeclaration(descriptor, curSppfNode) + "EnumDeclaration" -> parseEnumDeclaration(descriptor, curSppfNode) + "ClassModifier" -> parseClassModifier(descriptor, curSppfNode) + "TypeParameters" -> parseTypeParameters(descriptor, curSppfNode) + "Superclass" -> parseSuperclass(descriptor, curSppfNode) + "Superinterfaces" -> parseSuperinterfaces(descriptor, curSppfNode) + "ClassBody" -> parseClassBody(descriptor, curSppfNode) + "TypeParameterList" -> parseTypeParameterList(descriptor, curSppfNode) + "InterfaceTypeList" -> parseInterfaceTypeList(descriptor, curSppfNode) + "ClassBodyDeclaration" -> parseClassBodyDeclaration(descriptor, curSppfNode) + "ClassMemberDeclaration" -> parseClassMemberDeclaration(descriptor, curSppfNode) + "InstanceInitializer" -> parseInstanceInitializer(descriptor, curSppfNode) + "StaticInitializer" -> parseStaticInitializer(descriptor, curSppfNode) + "ConstructorDeclaration" -> parseConstructorDeclaration(descriptor, curSppfNode) + "FieldDeclaration" -> parseFieldDeclaration(descriptor, curSppfNode) + "MethodDeclaration" -> parseMethodDeclaration(descriptor, curSppfNode) + "FieldModifier" -> parseFieldModifier(descriptor, curSppfNode) + "UnannType" -> parseUnannType(descriptor, curSppfNode) + "VariableDeclaratorList" -> parseVariableDeclaratorList(descriptor, curSppfNode) + "VariableDeclarator" -> parseVariableDeclarator(descriptor, curSppfNode) + "VariableDeclaratorId" -> parseVariableDeclaratorId(descriptor, curSppfNode) + "VariableInitializer" -> parseVariableInitializer(descriptor, curSppfNode) + "Expression" -> parseExpression(descriptor, curSppfNode) + "ArrayInitializer" -> parseArrayInitializer(descriptor, curSppfNode) + "UnannPrimitiveType" -> parseUnannPrimitiveType(descriptor, curSppfNode) + "UnannReferenceType" -> parseUnannReferenceType(descriptor, curSppfNode) + "UnannClassOrInterfaceType" -> parseUnannClassOrInterfaceType(descriptor, curSppfNode) + "UnannTypeVariable" -> parseUnannTypeVariable(descriptor, curSppfNode) + "UnannArrayType" -> parseUnannArrayType(descriptor, curSppfNode) + "UnannClassType" -> parseUnannClassType(descriptor, curSppfNode) + "UnannInterfaceType" -> parseUnannInterfaceType(descriptor, curSppfNode) + "MethodModifier" -> parseMethodModifier(descriptor, curSppfNode) + "MethodHeader" -> parseMethodHeader(descriptor, curSppfNode) + "MethodBody" -> parseMethodBody(descriptor, curSppfNode) + "MethodDeclarator" -> parseMethodDeclarator(descriptor, curSppfNode) + "FormalParameterList" -> parseFormalParameterList(descriptor, curSppfNode) + "ReceiverParameter" -> parseReceiverParameter(descriptor, curSppfNode) + "FormalParameters" -> parseFormalParameters(descriptor, curSppfNode) + "LastFormalParameter" -> parseLastFormalParameter(descriptor, curSppfNode) + "FormalParameter" -> parseFormalParameter(descriptor, curSppfNode) + "VariableModifier" -> parseVariableModifier(descriptor, curSppfNode) + "ExceptionTypeList" -> parseExceptionTypeList(descriptor, curSppfNode) + "ExceptionType" -> parseExceptionType(descriptor, curSppfNode) + "Block" -> parseBlock(descriptor, curSppfNode) + "ConstructorModifier" -> parseConstructorModifier(descriptor, curSppfNode) + "ConstructorDeclarator" -> parseConstructorDeclarator(descriptor, curSppfNode) + "ConstructorBody" -> parseConstructorBody(descriptor, curSppfNode) + "SimpleTypeName" -> parseSimpleTypeName(descriptor, curSppfNode) + "ExplicitConstructorInvocation" -> parseExplicitConstructorInvocation(descriptor, curSppfNode) + "EnumBody" -> parseEnumBody(descriptor, curSppfNode) + "EnumConstantList" -> parseEnumConstantList(descriptor, curSppfNode) + "EnumConstant" -> parseEnumConstant(descriptor, curSppfNode) + "EnumConstantModifier" -> parseEnumConstantModifier(descriptor, curSppfNode) + "EnumBodyDeclarations" -> parseEnumBodyDeclarations(descriptor, curSppfNode) + "BlockStatements" -> parseBlockStatements(descriptor, curSppfNode) + "ArgumentList" -> parseArgumentList(descriptor, curSppfNode) + "Primary" -> parsePrimary(descriptor, curSppfNode) + "NormalInterfaceDeclaration" -> parseNormalInterfaceDeclaration(descriptor, curSppfNode) + "InterfaceModifier" -> parseInterfaceModifier(descriptor, curSppfNode) + "ExtendsInterfaces" -> parseExtendsInterfaces(descriptor, curSppfNode) + "InterfaceBody" -> parseInterfaceBody(descriptor, curSppfNode) + "InterfaceMemberDeclaration" -> parseInterfaceMemberDeclaration(descriptor, curSppfNode) + "ConstantDeclaration" -> parseConstantDeclaration(descriptor, curSppfNode) + "ConstantModifier" -> parseConstantModifier(descriptor, curSppfNode) + "AnnotationTypeDeclaration" -> parseAnnotationTypeDeclaration(descriptor, curSppfNode) + "AnnotationTypeBody" -> parseAnnotationTypeBody(descriptor, curSppfNode) + "AnnotationTypeMemberDeclaration" -> parseAnnotationTypeMemberDeclaration(descriptor, + curSppfNode) + "AnnotationTypeElementDeclaration" -> parseAnnotationTypeElementDeclaration(descriptor, + curSppfNode) + "DefaultValue" -> parseDefaultValue(descriptor, curSppfNode) + "NormalAnnotation" -> parseNormalAnnotation(descriptor, curSppfNode) + "ElementValuePairList" -> parseElementValuePairList(descriptor, curSppfNode) + "ElementValuePair" -> parseElementValuePair(descriptor, curSppfNode) + "ElementValue" -> parseElementValue(descriptor, curSppfNode) + "ElementValueArrayInitializer" -> parseElementValueArrayInitializer(descriptor, curSppfNode) + "ElementValueList" -> parseElementValueList(descriptor, curSppfNode) + "MarkerAnnotation" -> parseMarkerAnnotation(descriptor, curSppfNode) + "SingleElementAnnotation" -> parseSingleElementAnnotation(descriptor, curSppfNode) + "InterfaceMethodDeclaration" -> parseInterfaceMethodDeclaration(descriptor, curSppfNode) + "AnnotationTypeElementModifier" -> parseAnnotationTypeElementModifier(descriptor, curSppfNode) + "ConditionalExpression" -> parseConditionalExpression(descriptor, curSppfNode) + "VariableInitializerList" -> parseVariableInitializerList(descriptor, curSppfNode) + "BlockStatement" -> parseBlockStatement(descriptor, curSppfNode) + "LocalVariableDeclarationStatement" -> parseLocalVariableDeclarationStatement(descriptor, + curSppfNode) + "LocalVariableDeclaration" -> parseLocalVariableDeclaration(descriptor, curSppfNode) + "Statement" -> parseStatement(descriptor, curSppfNode) + "StatementNoShortIf" -> parseStatementNoShortIf(descriptor, curSppfNode) + "StatementWithoutTrailingSubstatement" -> + parseStatementWithoutTrailingSubstatement(descriptor, curSppfNode) + "EmptyStatement" -> parseEmptyStatement(descriptor, curSppfNode) + "LabeledStatement" -> parseLabeledStatement(descriptor, curSppfNode) + "LabeledStatementNoShortIf" -> parseLabeledStatementNoShortIf(descriptor, curSppfNode) + "ExpressionStatement" -> parseExpressionStatement(descriptor, curSppfNode) + "StatementExpression" -> parseStatementExpression(descriptor, curSppfNode) + "IfThenStatement" -> parseIfThenStatement(descriptor, curSppfNode) + "IfThenElseStatement" -> parseIfThenElseStatement(descriptor, curSppfNode) + "IfThenElseStatementNoShortIf" -> parseIfThenElseStatementNoShortIf(descriptor, curSppfNode) + "AssertStatement" -> parseAssertStatement(descriptor, curSppfNode) + "SwitchStatement" -> parseSwitchStatement(descriptor, curSppfNode) + "SwitchBlock" -> parseSwitchBlock(descriptor, curSppfNode) + "SwitchBlockStatementGroup" -> parseSwitchBlockStatementGroup(descriptor, curSppfNode) + "SwitchLabels" -> parseSwitchLabels(descriptor, curSppfNode) + "SwitchLabel" -> parseSwitchLabel(descriptor, curSppfNode) + "EnumConstantName" -> parseEnumConstantName(descriptor, curSppfNode) + "WhileStatement" -> parseWhileStatement(descriptor, curSppfNode) + "WhileStatementNoShortIf" -> parseWhileStatementNoShortIf(descriptor, curSppfNode) + "DoStatement" -> parseDoStatement(descriptor, curSppfNode) + "InterfaceMethodModifier" -> parseInterfaceMethodModifier(descriptor, curSppfNode) + "ForStatement" -> parseForStatement(descriptor, curSppfNode) + "ForStatementNoShortIf" -> parseForStatementNoShortIf(descriptor, curSppfNode) + "BasicForStatement" -> parseBasicForStatement(descriptor, curSppfNode) + "BasicForStatementNoShortIf" -> parseBasicForStatementNoShortIf(descriptor, curSppfNode) + "ForInit" -> parseForInit(descriptor, curSppfNode) + "ForUpdate" -> parseForUpdate(descriptor, curSppfNode) + "StatementExpressionList" -> parseStatementExpressionList(descriptor, curSppfNode) + "EnhancedForStatement" -> parseEnhancedForStatement(descriptor, curSppfNode) + "EnhancedForStatementNoShortIf" -> parseEnhancedForStatementNoShortIf(descriptor, curSppfNode) + "BreakStatement" -> parseBreakStatement(descriptor, curSppfNode) + "ContinueStatement" -> parseContinueStatement(descriptor, curSppfNode) + "ReturnStatement" -> parseReturnStatement(descriptor, curSppfNode) + "ThrowStatement" -> parseThrowStatement(descriptor, curSppfNode) + "SynchronizedStatement" -> parseSynchronizedStatement(descriptor, curSppfNode) + "TryStatement" -> parseTryStatement(descriptor, curSppfNode) + "Catches" -> parseCatches(descriptor, curSppfNode) + "CatchClause" -> parseCatchClause(descriptor, curSppfNode) + "CatchFormalParameter" -> parseCatchFormalParameter(descriptor, curSppfNode) + "CatchType" -> parseCatchType(descriptor, curSppfNode) + "Finally" -> parseFinally(descriptor, curSppfNode) + "TryWithResourcesStatement" -> parseTryWithResourcesStatement(descriptor, curSppfNode) + "ResourceSpecification" -> parseResourceSpecification(descriptor, curSppfNode) + "ResourceList" -> parseResourceList(descriptor, curSppfNode) + "Resource" -> parseResource(descriptor, curSppfNode) + "PrimaryNoNewArray" -> parsePrimaryNoNewArray(descriptor, curSppfNode) + "ClassLiteral" -> parseClassLiteral(descriptor, curSppfNode) + "classOrInterfaceTypeToInstantiate" -> parseclassOrInterfaceTypeToInstantiate(descriptor, + curSppfNode) + "UnqualifiedClassInstanceCreationExpression" -> + parseUnqualifiedClassInstanceCreationExpression(descriptor, curSppfNode) + "ClassInstanceCreationExpression" -> parseClassInstanceCreationExpression(descriptor, + curSppfNode) + "FieldAccess" -> parseFieldAccess(descriptor, curSppfNode) + "TypeArgumentsOrDiamond" -> parseTypeArgumentsOrDiamond(descriptor, curSppfNode) + "ArrayAccess" -> parseArrayAccess(descriptor, curSppfNode) + "MethodInvocation" -> parseMethodInvocation(descriptor, curSppfNode) + "MethodReference" -> parseMethodReference(descriptor, curSppfNode) + "ArrayCreationExpression" -> parseArrayCreationExpression(descriptor, curSppfNode) + "DimExprs" -> parseDimExprs(descriptor, curSppfNode) + "DimExpr" -> parseDimExpr(descriptor, curSppfNode) + "LambdaExpression" -> parseLambdaExpression(descriptor, curSppfNode) + "LambdaParameters" -> parseLambdaParameters(descriptor, curSppfNode) + "InferredFormalParameterList" -> parseInferredFormalParameterList(descriptor, curSppfNode) + "LambdaBody" -> parseLambdaBody(descriptor, curSppfNode) + "AssignmentExpression" -> parseAssignmentExpression(descriptor, curSppfNode) + "Assignment" -> parseAssignment(descriptor, curSppfNode) + "LeftHandSide" -> parseLeftHandSide(descriptor, curSppfNode) + "AssignmentOperator" -> parseAssignmentOperator(descriptor, curSppfNode) + "ConditionalOrExpression" -> parseConditionalOrExpression(descriptor, curSppfNode) + "ConditionalAndExpression" -> parseConditionalAndExpression(descriptor, curSppfNode) + "InclusiveOrExpression" -> parseInclusiveOrExpression(descriptor, curSppfNode) + "ExclusiveOrExpression" -> parseExclusiveOrExpression(descriptor, curSppfNode) + "AndExpression" -> parseAndExpression(descriptor, curSppfNode) + "EqualityExpression" -> parseEqualityExpression(descriptor, curSppfNode) + "RelationalExpression" -> parseRelationalExpression(descriptor, curSppfNode) + "ShiftExpression" -> parseShiftExpression(descriptor, curSppfNode) + "AdditiveExpression" -> parseAdditiveExpression(descriptor, curSppfNode) + "MultiplicativeExpression" -> parseMultiplicativeExpression(descriptor, curSppfNode) + "PreIncrementExpression" -> parsePreIncrementExpression(descriptor, curSppfNode) + "PreDecrementExpression" -> parsePreDecrementExpression(descriptor, curSppfNode) + "UnaryExpressionNotPlusMinus" -> parseUnaryExpressionNotPlusMinus(descriptor, curSppfNode) + "UnaryExpression" -> parseUnaryExpression(descriptor, curSppfNode) + "PostfixExpression" -> parsePostfixExpression(descriptor, curSppfNode) + "PostIncrementExpression" -> parsePostIncrementExpression(descriptor, curSppfNode) + "PostDecrementExpression" -> parsePostDecrementExpression(descriptor, curSppfNode) + "CastExpression" -> parseCastExpression(descriptor, curSppfNode) + "ConstantExpression" -> parseConstantExpression(descriptor, curSppfNode) + } + } + + private fun parseCompilationUnit(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ImportDeclaration, + state.nonterminalEdges[ImportDeclaration]!!, curSppfNode) + handleNonterminalEdge(descriptor, TypeDeclaration, + state.nonterminalEdges[TypeDeclaration]!!, curSppfNode) + handleNonterminalEdge(descriptor, PackageDeclaration, + state.nonterminalEdges[PackageDeclaration]!!, curSppfNode) + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ImportDeclaration, + state.nonterminalEdges[ImportDeclaration]!!, curSppfNode) + handleNonterminalEdge(descriptor, TypeDeclaration, + state.nonterminalEdges[TypeDeclaration]!!, curSppfNode) + } + 2 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, TypeDeclaration, + state.nonterminalEdges[TypeDeclaration]!!, curSppfNode) + } + } + } + + private fun parseIdentifier(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.ID -> + handleTerminal(JavaToken.ID, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + } + } + } + + private fun parseLiteral(descriptor: Descriptor, curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.CHARLIT -> + handleTerminal(JavaToken.CHARLIT, state, inputEdge, descriptor, curSppfNode) + JavaToken.NULLLIT -> + handleTerminal(JavaToken.NULLLIT, state, inputEdge, descriptor, curSppfNode) + JavaToken.BOOLEANLIT -> + handleTerminal(JavaToken.BOOLEANLIT, state, inputEdge, descriptor, curSppfNode) + JavaToken.INTEGERLIT -> + handleTerminal(JavaToken.INTEGERLIT, state, inputEdge, descriptor, curSppfNode) + JavaToken.STRINGLIT -> + handleTerminal(JavaToken.STRINGLIT, state, inputEdge, descriptor, curSppfNode) + JavaToken.FLOATINGLIT -> + handleTerminal(JavaToken.FLOATINGLIT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + } + } + } + + private fun parseType(descriptor: Descriptor, curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, PrimitiveType, state.nonterminalEdges[PrimitiveType]!!, + curSppfNode) + handleNonterminalEdge(descriptor, ReferenceType, state.nonterminalEdges[ReferenceType]!!, + curSppfNode) + } + 1 -> + { + } + } + } + + private fun parsePrimitiveType(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.BOOLEAN -> + handleTerminal(JavaToken.BOOLEAN, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, NumericType, state.nonterminalEdges[NumericType]!!, + curSppfNode) + handleNonterminalEdge(descriptor, Annotation, state.nonterminalEdges[Annotation]!!, + curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseReferenceType(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ArrayType, state.nonterminalEdges[ArrayType]!!, + curSppfNode) + handleNonterminalEdge(descriptor, TypeVariable, state.nonterminalEdges[TypeVariable]!!, + curSppfNode) + handleNonterminalEdge(descriptor, ClassOrInterfaceType, + state.nonterminalEdges[ClassOrInterfaceType]!!, curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseAnnotation(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, MarkerAnnotation, + state.nonterminalEdges[MarkerAnnotation]!!, curSppfNode) + handleNonterminalEdge(descriptor, SingleElementAnnotation, + state.nonterminalEdges[SingleElementAnnotation]!!, curSppfNode) + handleNonterminalEdge(descriptor, NormalAnnotation, + state.nonterminalEdges[NormalAnnotation]!!, curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseNumericType(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, IntegralType, state.nonterminalEdges[IntegralType]!!, + curSppfNode) + handleNonterminalEdge(descriptor, FloatingPointType, + state.nonterminalEdges[FloatingPointType]!!, curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseIntegralType(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.BYTE -> + handleTerminal(JavaToken.BYTE, state, inputEdge, descriptor, curSppfNode) + JavaToken.SHORT -> + handleTerminal(JavaToken.SHORT, state, inputEdge, descriptor, curSppfNode) + JavaToken.INT -> + handleTerminal(JavaToken.INT, state, inputEdge, descriptor, curSppfNode) + JavaToken.LONG -> + handleTerminal(JavaToken.LONG, state, inputEdge, descriptor, curSppfNode) + JavaToken.CHAR -> + handleTerminal(JavaToken.CHAR, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + } + } + } + + private fun parseFloatingPointType(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.FLOAT -> + handleTerminal(JavaToken.FLOAT, state, inputEdge, descriptor, curSppfNode) + JavaToken.DOUBLE -> + handleTerminal(JavaToken.DOUBLE, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + } + } + } + + private fun parseClassOrInterfaceType(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, InterfaceType, state.nonterminalEdges[InterfaceType]!!, + curSppfNode) + handleNonterminalEdge(descriptor, ClassType, state.nonterminalEdges[ClassType]!!, + curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseTypeVariable(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + handleNonterminalEdge(descriptor, Annotation, state.nonterminalEdges[Annotation]!!, + curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseArrayType(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, TypeVariable, state.nonterminalEdges[TypeVariable]!!, + curSppfNode) + handleNonterminalEdge(descriptor, PrimitiveType, state.nonterminalEdges[PrimitiveType]!!, + curSppfNode) + handleNonterminalEdge(descriptor, ClassOrInterfaceType, + state.nonterminalEdges[ClassOrInterfaceType]!!, curSppfNode) + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Dims, state.nonterminalEdges[Dims]!!, curSppfNode) + } + 2 -> + { + } + } + } + + private fun parseClassType(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + handleNonterminalEdge(descriptor, ClassOrInterfaceType, + state.nonterminalEdges[ClassOrInterfaceType]!!, curSppfNode) + handleNonterminalEdge(descriptor, Annotation, state.nonterminalEdges[Annotation]!!, + curSppfNode) + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + handleNonterminalEdge(descriptor, Annotation, state.nonterminalEdges[Annotation]!!, + curSppfNode) + } + 2 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, TypeArguments, state.nonterminalEdges[TypeArguments]!!, + curSppfNode) + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.DOT -> + handleTerminal(JavaToken.DOT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 4 -> + { + } + } + } + + private fun parseInterfaceType(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ClassType, state.nonterminalEdges[ClassType]!!, + curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseTypeArguments(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.LT -> + handleTerminal(JavaToken.LT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, TypeArgumentList, + state.nonterminalEdges[TypeArgumentList]!!, curSppfNode) + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.GT -> + handleTerminal(JavaToken.GT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + } + } + } + + private fun parseDims(descriptor: Descriptor, curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.BRACKETLEFT -> + handleTerminal(JavaToken.BRACKETLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, Annotation, state.nonterminalEdges[Annotation]!!, + curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.BRACKETRIGHT -> + handleTerminal(JavaToken.BRACKETRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.BRACKETLEFT -> + handleTerminal(JavaToken.BRACKETLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, Annotation, state.nonterminalEdges[Annotation]!!, + curSppfNode) + } + } + } + + private fun parseTypeParameter(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + handleNonterminalEdge(descriptor, TypeParameterModifier, + state.nonterminalEdges[TypeParameterModifier]!!, curSppfNode) + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, TypeBound, state.nonterminalEdges[TypeBound]!!, + curSppfNode) + } + 2 -> + { + } + } + } + + private fun parseTypeParameterModifier(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Annotation, state.nonterminalEdges[Annotation]!!, + curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseTypeBound(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.EXTENDS -> + handleTerminal(JavaToken.EXTENDS, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, TypeVariable, state.nonterminalEdges[TypeVariable]!!, + curSppfNode) + handleNonterminalEdge(descriptor, ClassOrInterfaceType, + state.nonterminalEdges[ClassOrInterfaceType]!!, curSppfNode) + } + 2 -> + { + } + 3 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, AdditionalBound, + state.nonterminalEdges[AdditionalBound]!!, curSppfNode) + } + } + } + + private fun parseAdditionalBound(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.ANDBIT -> + handleTerminal(JavaToken.ANDBIT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, InterfaceType, state.nonterminalEdges[InterfaceType]!!, + curSppfNode) + } + 2 -> + { + } + } + } + + private fun parseTypeArgumentList(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, TypeArgument, state.nonterminalEdges[TypeArgument]!!, + curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.COMMA -> + handleTerminal(JavaToken.COMMA, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + } + } + + private fun parseTypeArgument(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Wildcard, state.nonterminalEdges[Wildcard]!!, curSppfNode) + handleNonterminalEdge(descriptor, ReferenceType, state.nonterminalEdges[ReferenceType]!!, + curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseWildcard(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.QUESTIONMARK -> + handleTerminal(JavaToken.QUESTIONMARK, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, Annotation, state.nonterminalEdges[Annotation]!!, + curSppfNode) + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, WildcardBounds, state.nonterminalEdges[WildcardBounds]!!, + curSppfNode) + } + 2 -> + { + } + } + } + + private fun parseWildcardBounds(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.EXTENDS -> + handleTerminal(JavaToken.EXTENDS, state, inputEdge, descriptor, curSppfNode) + JavaToken.SUPER -> + handleTerminal(JavaToken.SUPER, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ReferenceType, state.nonterminalEdges[ReferenceType]!!, + curSppfNode) + } + 2 -> + { + } + } + } + + private fun parseTypeName(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, PackageOrTypeName, + state.nonterminalEdges[PackageOrTypeName]!!, curSppfNode) + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + } + 1 -> + { + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.DOT -> + handleTerminal(JavaToken.DOT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + } + } + } + + private fun parsePackageOrTypeName(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, PackageOrTypeName, + state.nonterminalEdges[PackageOrTypeName]!!, curSppfNode) + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + } + 1 -> + { + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.DOT -> + handleTerminal(JavaToken.DOT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + } + } + } + + private fun parseExpressionName(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + handleNonterminalEdge(descriptor, AmbiguousName, state.nonterminalEdges[AmbiguousName]!!, + curSppfNode) + } + 1 -> + { + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.DOT -> + handleTerminal(JavaToken.DOT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + } + } + } + + private fun parseAmbiguousName(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + handleNonterminalEdge(descriptor, AmbiguousName, state.nonterminalEdges[AmbiguousName]!!, + curSppfNode) + } + 1 -> + { + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.DOT -> + handleTerminal(JavaToken.DOT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + } + } + } + + private fun parseMethodName(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + } + 1 -> + { + } + } + } + + private fun parsePackageName(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + handleNonterminalEdge(descriptor, PackageName, state.nonterminalEdges[PackageName]!!, + curSppfNode) + } + 1 -> + { + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.DOT -> + handleTerminal(JavaToken.DOT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + } + } + } + + private fun parseResult(descriptor: Descriptor, curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.VOID -> + handleTerminal(JavaToken.VOID, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, UnannType, state.nonterminalEdges[UnannType]!!, + curSppfNode) + } + 1 -> + { + } + } + } + + private fun parsePackageDeclaration(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PACKAGE -> + handleTerminal(JavaToken.PACKAGE, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, PackageModifier, + state.nonterminalEdges[PackageModifier]!!, curSppfNode) + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.DOT -> + handleTerminal(JavaToken.DOT, state, inputEdge, descriptor, curSppfNode) + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + } + } + } + + private fun parseImportDeclaration(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, TypeImportOnDemandDeclaration, + state.nonterminalEdges[TypeImportOnDemandDeclaration]!!, curSppfNode) + handleNonterminalEdge(descriptor, SingleTypeImportDeclaration, + state.nonterminalEdges[SingleTypeImportDeclaration]!!, curSppfNode) + handleNonterminalEdge(descriptor, SingleStaticImportDeclaration, + state.nonterminalEdges[SingleStaticImportDeclaration]!!, curSppfNode) + handleNonterminalEdge(descriptor, StaticImportOnDemandDeclaration, + state.nonterminalEdges[StaticImportOnDemandDeclaration]!!, curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseTypeDeclaration(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, ClassDeclaration, + state.nonterminalEdges[ClassDeclaration]!!, curSppfNode) + handleNonterminalEdge(descriptor, InterfaceDeclaration, + state.nonterminalEdges[InterfaceDeclaration]!!, curSppfNode) + } + 1 -> + { + } + } + } + + private fun parsePackageModifier(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Annotation, state.nonterminalEdges[Annotation]!!, + curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseSingleTypeImportDeclaration(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.IMPORT -> + handleTerminal(JavaToken.IMPORT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, TypeName, state.nonterminalEdges[TypeName]!!, curSppfNode) + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + } + } + } + + private fun parseTypeImportOnDemandDeclaration(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.IMPORT -> + handleTerminal(JavaToken.IMPORT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, PackageOrTypeName, + state.nonterminalEdges[PackageOrTypeName]!!, curSppfNode) + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.DOT -> + handleTerminal(JavaToken.DOT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.STAR -> + handleTerminal(JavaToken.STAR, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 4 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 5 -> + { + } + } + } + + private fun parseSingleStaticImportDeclaration(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.IMPORT -> + handleTerminal(JavaToken.IMPORT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.STATIC -> + handleTerminal(JavaToken.STATIC, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, TypeName, state.nonterminalEdges[TypeName]!!, curSppfNode) + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.DOT -> + handleTerminal(JavaToken.DOT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 4 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + } + 5 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 6 -> + { + } + } + } + + private fun parseStaticImportOnDemandDeclaration(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.IMPORT -> + handleTerminal(JavaToken.IMPORT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.STATIC -> + handleTerminal(JavaToken.STATIC, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, TypeName, state.nonterminalEdges[TypeName]!!, curSppfNode) + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.DOT -> + handleTerminal(JavaToken.DOT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 4 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.STAR -> + handleTerminal(JavaToken.STAR, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 5 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 6 -> + { + } + } + } + + private fun parseClassDeclaration(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, NormalClassDeclaration, + state.nonterminalEdges[NormalClassDeclaration]!!, curSppfNode) + handleNonterminalEdge(descriptor, EnumDeclaration, + state.nonterminalEdges[EnumDeclaration]!!, curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseInterfaceDeclaration(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, AnnotationTypeDeclaration, + state.nonterminalEdges[AnnotationTypeDeclaration]!!, curSppfNode) + handleNonterminalEdge(descriptor, NormalInterfaceDeclaration, + state.nonterminalEdges[NormalInterfaceDeclaration]!!, curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseThrows(descriptor: Descriptor, curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.THROWS -> + handleTerminal(JavaToken.THROWS, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ExceptionTypeList, + state.nonterminalEdges[ExceptionTypeList]!!, curSppfNode) + } + 2 -> + { + } + } + } + + private fun parseNormalClassDeclaration(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.CLASS -> + handleTerminal(JavaToken.CLASS, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, ClassModifier, state.nonterminalEdges[ClassModifier]!!, + curSppfNode) + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + } + 2 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Superclass, state.nonterminalEdges[Superclass]!!, + curSppfNode) + handleNonterminalEdge(descriptor, TypeParameters, state.nonterminalEdges[TypeParameters]!!, + curSppfNode) + handleNonterminalEdge(descriptor, Superinterfaces, + state.nonterminalEdges[Superinterfaces]!!, curSppfNode) + handleNonterminalEdge(descriptor, ClassBody, state.nonterminalEdges[ClassBody]!!, + curSppfNode) + } + 3 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Superclass, state.nonterminalEdges[Superclass]!!, + curSppfNode) + handleNonterminalEdge(descriptor, Superinterfaces, + state.nonterminalEdges[Superinterfaces]!!, curSppfNode) + handleNonterminalEdge(descriptor, ClassBody, state.nonterminalEdges[ClassBody]!!, + curSppfNode) + } + 4 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Superinterfaces, + state.nonterminalEdges[Superinterfaces]!!, curSppfNode) + handleNonterminalEdge(descriptor, ClassBody, state.nonterminalEdges[ClassBody]!!, + curSppfNode) + } + 5 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ClassBody, state.nonterminalEdges[ClassBody]!!, + curSppfNode) + } + 6 -> + { + } + } + } + + private fun parseEnumDeclaration(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.ENUM -> + handleTerminal(JavaToken.ENUM, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, ClassModifier, state.nonterminalEdges[ClassModifier]!!, + curSppfNode) + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + } + 2 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, EnumBody, state.nonterminalEdges[EnumBody]!!, curSppfNode) + handleNonterminalEdge(descriptor, Superinterfaces, + state.nonterminalEdges[Superinterfaces]!!, curSppfNode) + } + 3 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, EnumBody, state.nonterminalEdges[EnumBody]!!, curSppfNode) + } + 4 -> + { + } + } + } + + private fun parseClassModifier(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.STRICTFP -> + handleTerminal(JavaToken.STRICTFP, state, inputEdge, descriptor, curSppfNode) + JavaToken.PRIVATE -> + handleTerminal(JavaToken.PRIVATE, state, inputEdge, descriptor, curSppfNode) + JavaToken.ABSTRACT -> + handleTerminal(JavaToken.ABSTRACT, state, inputEdge, descriptor, curSppfNode) + JavaToken.FINAL -> + handleTerminal(JavaToken.FINAL, state, inputEdge, descriptor, curSppfNode) + JavaToken.STATIC -> + handleTerminal(JavaToken.STATIC, state, inputEdge, descriptor, curSppfNode) + JavaToken.PUBLIC -> + handleTerminal(JavaToken.PUBLIC, state, inputEdge, descriptor, curSppfNode) + JavaToken.PROTECTED -> + handleTerminal(JavaToken.PROTECTED, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, Annotation, state.nonterminalEdges[Annotation]!!, + curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseTypeParameters(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.LT -> + handleTerminal(JavaToken.LT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, TypeParameterList, + state.nonterminalEdges[TypeParameterList]!!, curSppfNode) + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.GT -> + handleTerminal(JavaToken.GT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + } + } + } + + private fun parseSuperclass(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.EXTENDS -> + handleTerminal(JavaToken.EXTENDS, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ClassType, state.nonterminalEdges[ClassType]!!, + curSppfNode) + } + 2 -> + { + } + } + } + + private fun parseSuperinterfaces(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.IMPLEMENTS -> + handleTerminal(JavaToken.IMPLEMENTS, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, InterfaceTypeList, + state.nonterminalEdges[InterfaceTypeList]!!, curSppfNode) + } + 2 -> + { + } + } + } + + private fun parseClassBody(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.CURLYLEFT -> + handleTerminal(JavaToken.CURLYLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.CURLYRIGHT -> + handleTerminal(JavaToken.CURLYRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, ClassBodyDeclaration, + state.nonterminalEdges[ClassBodyDeclaration]!!, curSppfNode) + } + 2 -> + { + } + } + } + + private fun parseTypeParameterList(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, TypeParameter, state.nonterminalEdges[TypeParameter]!!, + curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.COMMA -> + handleTerminal(JavaToken.COMMA, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + } + } + + private fun parseInterfaceTypeList(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, InterfaceType, state.nonterminalEdges[InterfaceType]!!, + curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.COMMA -> + handleTerminal(JavaToken.COMMA, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + } + } + + private fun parseClassBodyDeclaration(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, StaticInitializer, + state.nonterminalEdges[StaticInitializer]!!, curSppfNode) + handleNonterminalEdge(descriptor, ConstructorDeclaration, + state.nonterminalEdges[ConstructorDeclaration]!!, curSppfNode) + handleNonterminalEdge(descriptor, InstanceInitializer, + state.nonterminalEdges[InstanceInitializer]!!, curSppfNode) + handleNonterminalEdge(descriptor, ClassMemberDeclaration, + state.nonterminalEdges[ClassMemberDeclaration]!!, curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseClassMemberDeclaration(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, ClassDeclaration, + state.nonterminalEdges[ClassDeclaration]!!, curSppfNode) + handleNonterminalEdge(descriptor, MethodDeclaration, + state.nonterminalEdges[MethodDeclaration]!!, curSppfNode) + handleNonterminalEdge(descriptor, InterfaceDeclaration, + state.nonterminalEdges[InterfaceDeclaration]!!, curSppfNode) + handleNonterminalEdge(descriptor, FieldDeclaration, + state.nonterminalEdges[FieldDeclaration]!!, curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseInstanceInitializer(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Block, state.nonterminalEdges[Block]!!, curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseStaticInitializer(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.STATIC -> + handleTerminal(JavaToken.STATIC, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Block, state.nonterminalEdges[Block]!!, curSppfNode) + } + 2 -> + { + } + } + } + + private fun parseConstructorDeclaration(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ConstructorDeclarator, + state.nonterminalEdges[ConstructorDeclarator]!!, curSppfNode) + handleNonterminalEdge(descriptor, ConstructorModifier, + state.nonterminalEdges[ConstructorModifier]!!, curSppfNode) + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ConstructorBody, + state.nonterminalEdges[ConstructorBody]!!, curSppfNode) + handleNonterminalEdge(descriptor, Throws, state.nonterminalEdges[Throws]!!, curSppfNode) + } + 2 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ConstructorBody, + state.nonterminalEdges[ConstructorBody]!!, curSppfNode) + } + 3 -> + { + } + } + } + + private fun parseFieldDeclaration(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, UnannType, state.nonterminalEdges[UnannType]!!, + curSppfNode) + handleNonterminalEdge(descriptor, FieldModifier, state.nonterminalEdges[FieldModifier]!!, + curSppfNode) + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, VariableDeclaratorList, + state.nonterminalEdges[VariableDeclaratorList]!!, curSppfNode) + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + } + } + } + + private fun parseMethodDeclaration(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, MethodModifier, state.nonterminalEdges[MethodModifier]!!, + curSppfNode) + handleNonterminalEdge(descriptor, MethodHeader, state.nonterminalEdges[MethodHeader]!!, + curSppfNode) + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, MethodBody, state.nonterminalEdges[MethodBody]!!, + curSppfNode) + } + 2 -> + { + } + } + } + + private fun parseFieldModifier(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PRIVATE -> + handleTerminal(JavaToken.PRIVATE, state, inputEdge, descriptor, curSppfNode) + JavaToken.FINAL -> + handleTerminal(JavaToken.FINAL, state, inputEdge, descriptor, curSppfNode) + JavaToken.TRANSIENT -> + handleTerminal(JavaToken.TRANSIENT, state, inputEdge, descriptor, curSppfNode) + JavaToken.STATIC -> + handleTerminal(JavaToken.STATIC, state, inputEdge, descriptor, curSppfNode) + JavaToken.PUBLIC -> + handleTerminal(JavaToken.PUBLIC, state, inputEdge, descriptor, curSppfNode) + JavaToken.VOLATILE -> + handleTerminal(JavaToken.VOLATILE, state, inputEdge, descriptor, curSppfNode) + JavaToken.PROTECTED -> + handleTerminal(JavaToken.PROTECTED, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, Annotation, state.nonterminalEdges[Annotation]!!, + curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseUnannType(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, UnannPrimitiveType, + state.nonterminalEdges[UnannPrimitiveType]!!, curSppfNode) + handleNonterminalEdge(descriptor, UnannReferenceType, + state.nonterminalEdges[UnannReferenceType]!!, curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseVariableDeclaratorList(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, VariableDeclarator, + state.nonterminalEdges[VariableDeclarator]!!, curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.COMMA -> + handleTerminal(JavaToken.COMMA, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + } + } + + private fun parseVariableDeclarator(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, VariableDeclaratorId, + state.nonterminalEdges[VariableDeclaratorId]!!, curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.ASSIGN -> + handleTerminal(JavaToken.ASSIGN, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, VariableInitializer, + state.nonterminalEdges[VariableInitializer]!!, curSppfNode) + } + 3 -> + { + } + } + } + + private fun parseVariableDeclaratorId(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Dims, state.nonterminalEdges[Dims]!!, curSppfNode) + } + 2 -> + { + } + } + } + + private fun parseVariableInitializer(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Expression, state.nonterminalEdges[Expression]!!, + curSppfNode) + handleNonterminalEdge(descriptor, ArrayInitializer, + state.nonterminalEdges[ArrayInitializer]!!, curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseExpression(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, AssignmentExpression, + state.nonterminalEdges[AssignmentExpression]!!, curSppfNode) + handleNonterminalEdge(descriptor, LambdaExpression, + state.nonterminalEdges[LambdaExpression]!!, curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseArrayInitializer(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.CURLYLEFT -> + handleTerminal(JavaToken.CURLYLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.COMMA -> + handleTerminal(JavaToken.COMMA, state, inputEdge, descriptor, curSppfNode) + JavaToken.CURLYRIGHT -> + handleTerminal(JavaToken.CURLYRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, VariableInitializerList, + state.nonterminalEdges[VariableInitializerList]!!, curSppfNode) + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.COMMA -> + handleTerminal(JavaToken.COMMA, state, inputEdge, descriptor, curSppfNode) + JavaToken.CURLYRIGHT -> + handleTerminal(JavaToken.CURLYRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.CURLYRIGHT -> + handleTerminal(JavaToken.CURLYRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 4 -> + { + } + } + } + + private fun parseUnannPrimitiveType(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.BOOLEAN -> + handleTerminal(JavaToken.BOOLEAN, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, NumericType, state.nonterminalEdges[NumericType]!!, + curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseUnannReferenceType(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, UnannClassOrInterfaceType, + state.nonterminalEdges[UnannClassOrInterfaceType]!!, curSppfNode) + handleNonterminalEdge(descriptor, UnannArrayType, state.nonterminalEdges[UnannArrayType]!!, + curSppfNode) + handleNonterminalEdge(descriptor, UnannTypeVariable, + state.nonterminalEdges[UnannTypeVariable]!!, curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseUnannClassOrInterfaceType(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, UnannInterfaceType, + state.nonterminalEdges[UnannInterfaceType]!!, curSppfNode) + handleNonterminalEdge(descriptor, UnannClassType, state.nonterminalEdges[UnannClassType]!!, + curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseUnannTypeVariable(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseUnannArrayType(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, UnannClassOrInterfaceType, + state.nonterminalEdges[UnannClassOrInterfaceType]!!, curSppfNode) + handleNonterminalEdge(descriptor, UnannPrimitiveType, + state.nonterminalEdges[UnannPrimitiveType]!!, curSppfNode) + handleNonterminalEdge(descriptor, UnannTypeVariable, + state.nonterminalEdges[UnannTypeVariable]!!, curSppfNode) + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Dims, state.nonterminalEdges[Dims]!!, curSppfNode) + } + 2 -> + { + } + } + } + + private fun parseUnannClassType(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + handleNonterminalEdge(descriptor, UnannClassOrInterfaceType, + state.nonterminalEdges[UnannClassOrInterfaceType]!!, curSppfNode) + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, TypeArguments, state.nonterminalEdges[TypeArguments]!!, + curSppfNode) + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.DOT -> + handleTerminal(JavaToken.DOT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + handleNonterminalEdge(descriptor, Annotation, state.nonterminalEdges[Annotation]!!, + curSppfNode) + } + 4 -> + { + } + } + } + + private fun parseUnannInterfaceType(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, UnannClassType, state.nonterminalEdges[UnannClassType]!!, + curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseMethodModifier(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.STRICTFP -> + handleTerminal(JavaToken.STRICTFP, state, inputEdge, descriptor, curSppfNode) + JavaToken.PRIVATE -> + handleTerminal(JavaToken.PRIVATE, state, inputEdge, descriptor, curSppfNode) + JavaToken.ABSTRACT -> + handleTerminal(JavaToken.ABSTRACT, state, inputEdge, descriptor, curSppfNode) + JavaToken.FINAL -> + handleTerminal(JavaToken.FINAL, state, inputEdge, descriptor, curSppfNode) + JavaToken.STATIC -> + handleTerminal(JavaToken.STATIC, state, inputEdge, descriptor, curSppfNode) + JavaToken.NATIVE -> + handleTerminal(JavaToken.NATIVE, state, inputEdge, descriptor, curSppfNode) + JavaToken.PUBLIC -> + handleTerminal(JavaToken.PUBLIC, state, inputEdge, descriptor, curSppfNode) + JavaToken.PROTECTED -> + handleTerminal(JavaToken.PROTECTED, state, inputEdge, descriptor, curSppfNode) + JavaToken.SYNCHRONIZED -> + handleTerminal(JavaToken.SYNCHRONIZED, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, Annotation, state.nonterminalEdges[Annotation]!!, + curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseMethodHeader(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, TypeParameters, state.nonterminalEdges[TypeParameters]!!, + curSppfNode) + handleNonterminalEdge(descriptor, Result, state.nonterminalEdges[Result]!!, curSppfNode) + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, MethodDeclarator, + state.nonterminalEdges[MethodDeclarator]!!, curSppfNode) + } + 2 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Annotation, state.nonterminalEdges[Annotation]!!, + curSppfNode) + handleNonterminalEdge(descriptor, Result, state.nonterminalEdges[Result]!!, curSppfNode) + } + 3 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Throws, state.nonterminalEdges[Throws]!!, curSppfNode) + } + 4 -> + { + } + } + } + + private fun parseMethodBody(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, Block, state.nonterminalEdges[Block]!!, curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseMethodDeclarator(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHLEFT -> + handleTerminal(JavaToken.PARENTHLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, FormalParameterList, + state.nonterminalEdges[FormalParameterList]!!, curSppfNode) + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 4 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Dims, state.nonterminalEdges[Dims]!!, curSppfNode) + } + 5 -> + { + } + } + } + + private fun parseFormalParameterList(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ReceiverParameter, + state.nonterminalEdges[ReceiverParameter]!!, curSppfNode) + handleNonterminalEdge(descriptor, LastFormalParameter, + state.nonterminalEdges[LastFormalParameter]!!, curSppfNode) + handleNonterminalEdge(descriptor, FormalParameters, + state.nonterminalEdges[FormalParameters]!!, curSppfNode) + } + 1 -> + { + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.COMMA -> + handleTerminal(JavaToken.COMMA, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, LastFormalParameter, + state.nonterminalEdges[LastFormalParameter]!!, curSppfNode) + } + } + } + + private fun parseReceiverParameter(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, UnannType, state.nonterminalEdges[UnannType]!!, + curSppfNode) + handleNonterminalEdge(descriptor, Annotation, state.nonterminalEdges[Annotation]!!, + curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.THIS -> + handleTerminal(JavaToken.THIS, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.DOT -> + handleTerminal(JavaToken.DOT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + } + 4 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.THIS -> + handleTerminal(JavaToken.THIS, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + } + } + + private fun parseFormalParameters(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, FormalParameter, + state.nonterminalEdges[FormalParameter]!!, curSppfNode) + handleNonterminalEdge(descriptor, ReceiverParameter, + state.nonterminalEdges[ReceiverParameter]!!, curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.COMMA -> + handleTerminal(JavaToken.COMMA, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, FormalParameter, + state.nonterminalEdges[FormalParameter]!!, curSppfNode) + } + } + } + + private fun parseLastFormalParameter(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, FormalParameter, + state.nonterminalEdges[FormalParameter]!!, curSppfNode) + handleNonterminalEdge(descriptor, UnannType, state.nonterminalEdges[UnannType]!!, + curSppfNode) + handleNonterminalEdge(descriptor, VariableModifier, + state.nonterminalEdges[VariableModifier]!!, curSppfNode) + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, UnannType, state.nonterminalEdges[UnannType]!!, + curSppfNode) + handleNonterminalEdge(descriptor, VariableModifier, + state.nonterminalEdges[VariableModifier]!!, curSppfNode) + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.ELLIPSIS -> + handleTerminal(JavaToken.ELLIPSIS, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, Annotation, state.nonterminalEdges[Annotation]!!, + curSppfNode) + } + 3 -> + { + } + 4 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, VariableDeclaratorId, + state.nonterminalEdges[VariableDeclaratorId]!!, curSppfNode) + } + } + } + + private fun parseFormalParameter(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, UnannType, state.nonterminalEdges[UnannType]!!, + curSppfNode) + handleNonterminalEdge(descriptor, VariableModifier, + state.nonterminalEdges[VariableModifier]!!, curSppfNode) + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, VariableDeclaratorId, + state.nonterminalEdges[VariableDeclaratorId]!!, curSppfNode) + } + 2 -> + { + } + } + } + + private fun parseVariableModifier(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.FINAL -> + handleTerminal(JavaToken.FINAL, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, Annotation, state.nonterminalEdges[Annotation]!!, + curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseExceptionTypeList(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ExceptionType, state.nonterminalEdges[ExceptionType]!!, + curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.COMMA -> + handleTerminal(JavaToken.COMMA, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + } + } + + private fun parseExceptionType(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, TypeVariable, state.nonterminalEdges[TypeVariable]!!, + curSppfNode) + handleNonterminalEdge(descriptor, ClassType, state.nonterminalEdges[ClassType]!!, + curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseBlock(descriptor: Descriptor, curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.CURLYLEFT -> + handleTerminal(JavaToken.CURLYLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.CURLYRIGHT -> + handleTerminal(JavaToken.CURLYRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, BlockStatements, + state.nonterminalEdges[BlockStatements]!!, curSppfNode) + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.CURLYRIGHT -> + handleTerminal(JavaToken.CURLYRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + } + } + } + + private fun parseConstructorModifier(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PRIVATE -> + handleTerminal(JavaToken.PRIVATE, state, inputEdge, descriptor, curSppfNode) + JavaToken.PUBLIC -> + handleTerminal(JavaToken.PUBLIC, state, inputEdge, descriptor, curSppfNode) + JavaToken.PROTECTED -> + handleTerminal(JavaToken.PROTECTED, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, Annotation, state.nonterminalEdges[Annotation]!!, + curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseConstructorDeclarator(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, TypeParameters, state.nonterminalEdges[TypeParameters]!!, + curSppfNode) + handleNonterminalEdge(descriptor, SimpleTypeName, state.nonterminalEdges[SimpleTypeName]!!, + curSppfNode) + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, SimpleTypeName, state.nonterminalEdges[SimpleTypeName]!!, + curSppfNode) + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHLEFT -> + handleTerminal(JavaToken.PARENTHLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, FormalParameterList, + state.nonterminalEdges[FormalParameterList]!!, curSppfNode) + } + 4 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 5 -> + { + } + } + } + + private fun parseConstructorBody(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.CURLYLEFT -> + handleTerminal(JavaToken.CURLYLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.CURLYRIGHT -> + handleTerminal(JavaToken.CURLYRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, ExplicitConstructorInvocation, + state.nonterminalEdges[ExplicitConstructorInvocation]!!, curSppfNode) + handleNonterminalEdge(descriptor, BlockStatements, + state.nonterminalEdges[BlockStatements]!!, curSppfNode) + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.CURLYRIGHT -> + handleTerminal(JavaToken.CURLYRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, BlockStatements, + state.nonterminalEdges[BlockStatements]!!, curSppfNode) + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.CURLYRIGHT -> + handleTerminal(JavaToken.CURLYRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 4 -> + { + } + } + } + + private fun parseSimpleTypeName(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseExplicitConstructorInvocation(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.THIS -> + handleTerminal(JavaToken.THIS, state, inputEdge, descriptor, curSppfNode) + JavaToken.SUPER -> + handleTerminal(JavaToken.SUPER, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, TypeArguments, state.nonterminalEdges[TypeArguments]!!, + curSppfNode) + handleNonterminalEdge(descriptor, Primary, state.nonterminalEdges[Primary]!!, curSppfNode) + handleNonterminalEdge(descriptor, ExpressionName, state.nonterminalEdges[ExpressionName]!!, + curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.THIS -> + handleTerminal(JavaToken.THIS, state, inputEdge, descriptor, curSppfNode) + JavaToken.SUPER -> + handleTerminal(JavaToken.SUPER, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHLEFT -> + handleTerminal(JavaToken.PARENTHLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.DOT -> + handleTerminal(JavaToken.DOT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 4 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SUPER -> + handleTerminal(JavaToken.SUPER, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, TypeArguments, state.nonterminalEdges[TypeArguments]!!, + curSppfNode) + } + 5 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SUPER -> + handleTerminal(JavaToken.SUPER, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 6 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, ArgumentList, state.nonterminalEdges[ArgumentList]!!, + curSppfNode) + } + 7 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 8 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 9 -> + { + } + } + } + + private fun parseEnumBody(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.CURLYLEFT -> + handleTerminal(JavaToken.CURLYLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.COMMA -> + handleTerminal(JavaToken.COMMA, state, inputEdge, descriptor, curSppfNode) + JavaToken.CURLYRIGHT -> + handleTerminal(JavaToken.CURLYRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, EnumConstantList, + state.nonterminalEdges[EnumConstantList]!!, curSppfNode) + handleNonterminalEdge(descriptor, EnumBodyDeclarations, + state.nonterminalEdges[EnumBodyDeclarations]!!, curSppfNode) + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.COMMA -> + handleTerminal(JavaToken.COMMA, state, inputEdge, descriptor, curSppfNode) + JavaToken.CURLYRIGHT -> + handleTerminal(JavaToken.CURLYRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, EnumBodyDeclarations, + state.nonterminalEdges[EnumBodyDeclarations]!!, curSppfNode) + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.CURLYRIGHT -> + handleTerminal(JavaToken.CURLYRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, EnumBodyDeclarations, + state.nonterminalEdges[EnumBodyDeclarations]!!, curSppfNode) + } + 4 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.CURLYRIGHT -> + handleTerminal(JavaToken.CURLYRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 5 -> + { + } + } + } + + private fun parseEnumConstantList(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, EnumConstant, state.nonterminalEdges[EnumConstant]!!, + curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.COMMA -> + handleTerminal(JavaToken.COMMA, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + } + } + + private fun parseEnumConstant(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, EnumConstantModifier, + state.nonterminalEdges[EnumConstantModifier]!!, curSppfNode) + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHLEFT -> + handleTerminal(JavaToken.PARENTHLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, ArgumentList, state.nonterminalEdges[ArgumentList]!!, + curSppfNode) + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 4 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ClassBody, state.nonterminalEdges[ClassBody]!!, + curSppfNode) + } + 5 -> + { + } + } + } + + private fun parseEnumConstantModifier(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Annotation, state.nonterminalEdges[Annotation]!!, + curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseEnumBodyDeclarations(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ClassBodyDeclaration, + state.nonterminalEdges[ClassBodyDeclaration]!!, curSppfNode) + } + } + } + + private fun parseBlockStatements(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, BlockStatement, state.nonterminalEdges[BlockStatement]!!, + curSppfNode) + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, BlockStatement, state.nonterminalEdges[BlockStatement]!!, + curSppfNode) + } + } + } + + private fun parseArgumentList(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Expression, state.nonterminalEdges[Expression]!!, + curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.COMMA -> + handleTerminal(JavaToken.COMMA, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + } + } + + private fun parsePrimary(descriptor: Descriptor, curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, PrimaryNoNewArray, + state.nonterminalEdges[PrimaryNoNewArray]!!, curSppfNode) + handleNonterminalEdge(descriptor, ArrayCreationExpression, + state.nonterminalEdges[ArrayCreationExpression]!!, curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseNormalInterfaceDeclaration(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.INTERFACE -> + handleTerminal(JavaToken.INTERFACE, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, InterfaceModifier, + state.nonterminalEdges[InterfaceModifier]!!, curSppfNode) + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + } + 2 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, InterfaceBody, state.nonterminalEdges[InterfaceBody]!!, + curSppfNode) + handleNonterminalEdge(descriptor, TypeParameters, state.nonterminalEdges[TypeParameters]!!, + curSppfNode) + handleNonterminalEdge(descriptor, ExtendsInterfaces, + state.nonterminalEdges[ExtendsInterfaces]!!, curSppfNode) + } + 3 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, InterfaceBody, state.nonterminalEdges[InterfaceBody]!!, + curSppfNode) + handleNonterminalEdge(descriptor, ExtendsInterfaces, + state.nonterminalEdges[ExtendsInterfaces]!!, curSppfNode) + } + 4 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, InterfaceBody, state.nonterminalEdges[InterfaceBody]!!, + curSppfNode) + } + 5 -> + { + } + } + } + + private fun parseInterfaceModifier(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.STRICTFP -> + handleTerminal(JavaToken.STRICTFP, state, inputEdge, descriptor, curSppfNode) + JavaToken.PRIVATE -> + handleTerminal(JavaToken.PRIVATE, state, inputEdge, descriptor, curSppfNode) + JavaToken.ABSTRACT -> + handleTerminal(JavaToken.ABSTRACT, state, inputEdge, descriptor, curSppfNode) + JavaToken.STATIC -> + handleTerminal(JavaToken.STATIC, state, inputEdge, descriptor, curSppfNode) + JavaToken.PUBLIC -> + handleTerminal(JavaToken.PUBLIC, state, inputEdge, descriptor, curSppfNode) + JavaToken.PROTECTED -> + handleTerminal(JavaToken.PROTECTED, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, Annotation, state.nonterminalEdges[Annotation]!!, + curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseExtendsInterfaces(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.EXTENDS -> + handleTerminal(JavaToken.EXTENDS, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, InterfaceTypeList, + state.nonterminalEdges[InterfaceTypeList]!!, curSppfNode) + } + 2 -> + { + } + } + } + + private fun parseInterfaceBody(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.CURLYLEFT -> + handleTerminal(JavaToken.CURLYLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.CURLYRIGHT -> + handleTerminal(JavaToken.CURLYRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, InterfaceMemberDeclaration, + state.nonterminalEdges[InterfaceMemberDeclaration]!!, curSppfNode) + } + 2 -> + { + } + } + } + + private fun parseInterfaceMemberDeclaration(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, InterfaceMethodDeclaration, + state.nonterminalEdges[InterfaceMethodDeclaration]!!, curSppfNode) + handleNonterminalEdge(descriptor, ClassDeclaration, + state.nonterminalEdges[ClassDeclaration]!!, curSppfNode) + handleNonterminalEdge(descriptor, ConstantDeclaration, + state.nonterminalEdges[ConstantDeclaration]!!, curSppfNode) + handleNonterminalEdge(descriptor, InterfaceDeclaration, + state.nonterminalEdges[InterfaceDeclaration]!!, curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseConstantDeclaration(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ConstantModifier, + state.nonterminalEdges[ConstantModifier]!!, curSppfNode) + handleNonterminalEdge(descriptor, UnannType, state.nonterminalEdges[UnannType]!!, + curSppfNode) + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, VariableDeclaratorList, + state.nonterminalEdges[VariableDeclaratorList]!!, curSppfNode) + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + } + } + } + + private fun parseConstantModifier(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.FINAL -> + handleTerminal(JavaToken.FINAL, state, inputEdge, descriptor, curSppfNode) + JavaToken.STATIC -> + handleTerminal(JavaToken.STATIC, state, inputEdge, descriptor, curSppfNode) + JavaToken.PUBLIC -> + handleTerminal(JavaToken.PUBLIC, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, Annotation, state.nonterminalEdges[Annotation]!!, + curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseAnnotationTypeDeclaration(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.AT -> + handleTerminal(JavaToken.AT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, InterfaceModifier, + state.nonterminalEdges[InterfaceModifier]!!, curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.INTERFACE -> + handleTerminal(JavaToken.INTERFACE, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + } + 3 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, AnnotationTypeBody, + state.nonterminalEdges[AnnotationTypeBody]!!, curSppfNode) + } + 4 -> + { + } + } + } + + private fun parseAnnotationTypeBody(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.CURLYLEFT -> + handleTerminal(JavaToken.CURLYLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.CURLYRIGHT -> + handleTerminal(JavaToken.CURLYRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, AnnotationTypeMemberDeclaration, + state.nonterminalEdges[AnnotationTypeMemberDeclaration]!!, curSppfNode) + } + 2 -> + { + } + } + } + + private fun parseAnnotationTypeMemberDeclaration(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, AnnotationTypeElementDeclaration, + state.nonterminalEdges[AnnotationTypeElementDeclaration]!!, curSppfNode) + handleNonterminalEdge(descriptor, ClassDeclaration, + state.nonterminalEdges[ClassDeclaration]!!, curSppfNode) + handleNonterminalEdge(descriptor, ConstantDeclaration, + state.nonterminalEdges[ConstantDeclaration]!!, curSppfNode) + handleNonterminalEdge(descriptor, InterfaceDeclaration, + state.nonterminalEdges[InterfaceDeclaration]!!, curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseAnnotationTypeElementDeclaration(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, UnannType, state.nonterminalEdges[UnannType]!!, + curSppfNode) + handleNonterminalEdge(descriptor, AnnotationTypeElementModifier, + state.nonterminalEdges[AnnotationTypeElementModifier]!!, curSppfNode) + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHLEFT -> + handleTerminal(JavaToken.PARENTHLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 4 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, DefaultValue, state.nonterminalEdges[DefaultValue]!!, + curSppfNode) + handleNonterminalEdge(descriptor, Dims, state.nonterminalEdges[Dims]!!, curSppfNode) + } + 5 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, DefaultValue, state.nonterminalEdges[DefaultValue]!!, + curSppfNode) + } + 6 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 7 -> + { + } + } + } + + private fun parseDefaultValue(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.DEFAULT -> + handleTerminal(JavaToken.DEFAULT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ElementValue, state.nonterminalEdges[ElementValue]!!, + curSppfNode) + } + 2 -> + { + } + } + } + + private fun parseNormalAnnotation(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.AT -> + handleTerminal(JavaToken.AT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, TypeName, state.nonterminalEdges[TypeName]!!, curSppfNode) + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHLEFT -> + handleTerminal(JavaToken.PARENTHLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, ElementValuePairList, + state.nonterminalEdges[ElementValuePairList]!!, curSppfNode) + } + 4 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 5 -> + { + } + } + } + + private fun parseElementValuePairList(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ElementValuePair, + state.nonterminalEdges[ElementValuePair]!!, curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.COMMA -> + handleTerminal(JavaToken.COMMA, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + } + } + + private fun parseElementValuePair(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.ASSIGN -> + handleTerminal(JavaToken.ASSIGN, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ElementValue, state.nonterminalEdges[ElementValue]!!, + curSppfNode) + } + 3 -> + { + } + } + } + + private fun parseElementValue(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ElementValueArrayInitializer, + state.nonterminalEdges[ElementValueArrayInitializer]!!, curSppfNode) + handleNonterminalEdge(descriptor, ConditionalExpression, + state.nonterminalEdges[ConditionalExpression]!!, curSppfNode) + handleNonterminalEdge(descriptor, Annotation, state.nonterminalEdges[Annotation]!!, + curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseElementValueArrayInitializer(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.CURLYLEFT -> + handleTerminal(JavaToken.CURLYLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.COMMA -> + handleTerminal(JavaToken.COMMA, state, inputEdge, descriptor, curSppfNode) + JavaToken.CURLYRIGHT -> + handleTerminal(JavaToken.CURLYRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, ElementValueList, + state.nonterminalEdges[ElementValueList]!!, curSppfNode) + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.COMMA -> + handleTerminal(JavaToken.COMMA, state, inputEdge, descriptor, curSppfNode) + JavaToken.CURLYRIGHT -> + handleTerminal(JavaToken.CURLYRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.CURLYRIGHT -> + handleTerminal(JavaToken.CURLYRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 4 -> + { + } + } + } + + private fun parseElementValueList(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ElementValue, state.nonterminalEdges[ElementValue]!!, + curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.COMMA -> + handleTerminal(JavaToken.COMMA, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + } + } + + private fun parseMarkerAnnotation(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.AT -> + handleTerminal(JavaToken.AT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, TypeName, state.nonterminalEdges[TypeName]!!, curSppfNode) + } + 2 -> + { + } + } + } + + private fun parseSingleElementAnnotation(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.AT -> + handleTerminal(JavaToken.AT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, TypeName, state.nonterminalEdges[TypeName]!!, curSppfNode) + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHLEFT -> + handleTerminal(JavaToken.PARENTHLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ElementValue, state.nonterminalEdges[ElementValue]!!, + curSppfNode) + } + 4 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 5 -> + { + } + } + } + + private fun parseInterfaceMethodDeclaration(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, InterfaceMethodModifier, + state.nonterminalEdges[InterfaceMethodModifier]!!, curSppfNode) + handleNonterminalEdge(descriptor, MethodHeader, state.nonterminalEdges[MethodHeader]!!, + curSppfNode) + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, MethodBody, state.nonterminalEdges[MethodBody]!!, + curSppfNode) + } + 2 -> + { + } + } + } + + private fun parseAnnotationTypeElementModifier(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.ABSTRACT -> + handleTerminal(JavaToken.ABSTRACT, state, inputEdge, descriptor, curSppfNode) + JavaToken.PUBLIC -> + handleTerminal(JavaToken.PUBLIC, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, Annotation, state.nonterminalEdges[Annotation]!!, + curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseConditionalExpression(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ConditionalOrExpression, + state.nonterminalEdges[ConditionalOrExpression]!!, curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.QUESTIONMARK -> + handleTerminal(JavaToken.QUESTIONMARK, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Expression, state.nonterminalEdges[Expression]!!, + curSppfNode) + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.COLON -> + handleTerminal(JavaToken.COLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 4 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ConditionalExpression, + state.nonterminalEdges[ConditionalExpression]!!, curSppfNode) + handleNonterminalEdge(descriptor, LambdaExpression, + state.nonterminalEdges[LambdaExpression]!!, curSppfNode) + } + 5 -> + { + } + } + } + + private fun parseVariableInitializerList(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, VariableInitializer, + state.nonterminalEdges[VariableInitializer]!!, curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.COMMA -> + handleTerminal(JavaToken.COMMA, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + } + } + + private fun parseBlockStatement(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ClassDeclaration, + state.nonterminalEdges[ClassDeclaration]!!, curSppfNode) + handleNonterminalEdge(descriptor, Statement, state.nonterminalEdges[Statement]!!, + curSppfNode) + handleNonterminalEdge(descriptor, LocalVariableDeclarationStatement, + state.nonterminalEdges[LocalVariableDeclarationStatement]!!, curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseLocalVariableDeclarationStatement(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, LocalVariableDeclaration, + state.nonterminalEdges[LocalVariableDeclaration]!!, curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + } + } + } + + private fun parseLocalVariableDeclaration(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, UnannType, state.nonterminalEdges[UnannType]!!, + curSppfNode) + handleNonterminalEdge(descriptor, VariableModifier, + state.nonterminalEdges[VariableModifier]!!, curSppfNode) + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, VariableDeclaratorList, + state.nonterminalEdges[VariableDeclaratorList]!!, curSppfNode) + } + 2 -> + { + } + } + } + + private fun parseStatement(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, LabeledStatement, + state.nonterminalEdges[LabeledStatement]!!, curSppfNode) + handleNonterminalEdge(descriptor, StatementWithoutTrailingSubstatement, + state.nonterminalEdges[StatementWithoutTrailingSubstatement]!!, curSppfNode) + handleNonterminalEdge(descriptor, IfThenElseStatement, + state.nonterminalEdges[IfThenElseStatement]!!, curSppfNode) + handleNonterminalEdge(descriptor, WhileStatement, state.nonterminalEdges[WhileStatement]!!, + curSppfNode) + handleNonterminalEdge(descriptor, ForStatement, state.nonterminalEdges[ForStatement]!!, + curSppfNode) + handleNonterminalEdge(descriptor, IfThenStatement, + state.nonterminalEdges[IfThenStatement]!!, curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseStatementNoShortIf(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, WhileStatementNoShortIf, + state.nonterminalEdges[WhileStatementNoShortIf]!!, curSppfNode) + handleNonterminalEdge(descriptor, StatementWithoutTrailingSubstatement, + state.nonterminalEdges[StatementWithoutTrailingSubstatement]!!, curSppfNode) + handleNonterminalEdge(descriptor, LabeledStatementNoShortIf, + state.nonterminalEdges[LabeledStatementNoShortIf]!!, curSppfNode) + handleNonterminalEdge(descriptor, IfThenElseStatementNoShortIf, + state.nonterminalEdges[IfThenElseStatementNoShortIf]!!, curSppfNode) + handleNonterminalEdge(descriptor, ForStatementNoShortIf, + state.nonterminalEdges[ForStatementNoShortIf]!!, curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseStatementWithoutTrailingSubstatement(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, BreakStatement, state.nonterminalEdges[BreakStatement]!!, + curSppfNode) + handleNonterminalEdge(descriptor, SwitchStatement, + state.nonterminalEdges[SwitchStatement]!!, curSppfNode) + handleNonterminalEdge(descriptor, DoStatement, state.nonterminalEdges[DoStatement]!!, + curSppfNode) + handleNonterminalEdge(descriptor, TryStatement, state.nonterminalEdges[TryStatement]!!, + curSppfNode) + handleNonterminalEdge(descriptor, ExpressionStatement, + state.nonterminalEdges[ExpressionStatement]!!, curSppfNode) + handleNonterminalEdge(descriptor, EmptyStatement, state.nonterminalEdges[EmptyStatement]!!, + curSppfNode) + handleNonterminalEdge(descriptor, AssertStatement, + state.nonterminalEdges[AssertStatement]!!, curSppfNode) + handleNonterminalEdge(descriptor, ReturnStatement, + state.nonterminalEdges[ReturnStatement]!!, curSppfNode) + handleNonterminalEdge(descriptor, Block, state.nonterminalEdges[Block]!!, curSppfNode) + handleNonterminalEdge(descriptor, ThrowStatement, state.nonterminalEdges[ThrowStatement]!!, + curSppfNode) + handleNonterminalEdge(descriptor, SynchronizedStatement, + state.nonterminalEdges[SynchronizedStatement]!!, curSppfNode) + handleNonterminalEdge(descriptor, ContinueStatement, + state.nonterminalEdges[ContinueStatement]!!, curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseEmptyStatement(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + } + } + } + + private fun parseLabeledStatement(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.COLON -> + handleTerminal(JavaToken.COLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Statement, state.nonterminalEdges[Statement]!!, + curSppfNode) + } + 3 -> + { + } + } + } + + private fun parseLabeledStatementNoShortIf(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.COLON -> + handleTerminal(JavaToken.COLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, StatementNoShortIf, + state.nonterminalEdges[StatementNoShortIf]!!, curSppfNode) + } + 3 -> + { + } + } + } + + private fun parseExpressionStatement(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, StatementExpression, + state.nonterminalEdges[StatementExpression]!!, curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + } + } + } + + private fun parseStatementExpression(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Assignment, state.nonterminalEdges[Assignment]!!, + curSppfNode) + handleNonterminalEdge(descriptor, PostIncrementExpression, + state.nonterminalEdges[PostIncrementExpression]!!, curSppfNode) + handleNonterminalEdge(descriptor, PreDecrementExpression, + state.nonterminalEdges[PreDecrementExpression]!!, curSppfNode) + handleNonterminalEdge(descriptor, PreIncrementExpression, + state.nonterminalEdges[PreIncrementExpression]!!, curSppfNode) + handleNonterminalEdge(descriptor, PostDecrementExpression, + state.nonterminalEdges[PostDecrementExpression]!!, curSppfNode) + handleNonterminalEdge(descriptor, MethodInvocation, + state.nonterminalEdges[MethodInvocation]!!, curSppfNode) + handleNonterminalEdge(descriptor, ClassInstanceCreationExpression, + state.nonterminalEdges[ClassInstanceCreationExpression]!!, curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseIfThenStatement(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.IF -> + handleTerminal(JavaToken.IF, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHLEFT -> + handleTerminal(JavaToken.PARENTHLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Expression, state.nonterminalEdges[Expression]!!, + curSppfNode) + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 4 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Statement, state.nonterminalEdges[Statement]!!, + curSppfNode) + } + 5 -> + { + } + } + } + + private fun parseIfThenElseStatement(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.IF -> + handleTerminal(JavaToken.IF, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHLEFT -> + handleTerminal(JavaToken.PARENTHLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Expression, state.nonterminalEdges[Expression]!!, + curSppfNode) + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 4 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, StatementNoShortIf, + state.nonterminalEdges[StatementNoShortIf]!!, curSppfNode) + } + 5 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.ELSE -> + handleTerminal(JavaToken.ELSE, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 6 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Statement, state.nonterminalEdges[Statement]!!, + curSppfNode) + } + 7 -> + { + } + } + } + + private fun parseIfThenElseStatementNoShortIf(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.IF -> + handleTerminal(JavaToken.IF, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHLEFT -> + handleTerminal(JavaToken.PARENTHLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Expression, state.nonterminalEdges[Expression]!!, + curSppfNode) + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 4 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, StatementNoShortIf, + state.nonterminalEdges[StatementNoShortIf]!!, curSppfNode) + } + 5 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.ELSE -> + handleTerminal(JavaToken.ELSE, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 6 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, StatementNoShortIf, + state.nonterminalEdges[StatementNoShortIf]!!, curSppfNode) + } + 7 -> + { + } + } + } + + private fun parseAssertStatement(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.ASSERT -> + handleTerminal(JavaToken.ASSERT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Expression, state.nonterminalEdges[Expression]!!, + curSppfNode) + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + JavaToken.COLON -> + handleTerminal(JavaToken.COLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + } + 4 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Expression, state.nonterminalEdges[Expression]!!, + curSppfNode) + } + 5 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + } + } + + private fun parseSwitchStatement(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SWITCH -> + handleTerminal(JavaToken.SWITCH, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHLEFT -> + handleTerminal(JavaToken.PARENTHLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Expression, state.nonterminalEdges[Expression]!!, + curSppfNode) + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 4 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, SwitchBlock, state.nonterminalEdges[SwitchBlock]!!, + curSppfNode) + } + 5 -> + { + } + } + } + + private fun parseSwitchBlock(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.CURLYLEFT -> + handleTerminal(JavaToken.CURLYLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.CURLYRIGHT -> + handleTerminal(JavaToken.CURLYRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, SwitchLabel, state.nonterminalEdges[SwitchLabel]!!, + curSppfNode) + handleNonterminalEdge(descriptor, SwitchBlockStatementGroup, + state.nonterminalEdges[SwitchBlockStatementGroup]!!, curSppfNode) + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.CURLYRIGHT -> + handleTerminal(JavaToken.CURLYRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, SwitchLabel, state.nonterminalEdges[SwitchLabel]!!, + curSppfNode) + } + 3 -> + { + } + } + } + + private fun parseSwitchBlockStatementGroup(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, SwitchLabels, state.nonterminalEdges[SwitchLabels]!!, + curSppfNode) + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, BlockStatements, + state.nonterminalEdges[BlockStatements]!!, curSppfNode) + } + 2 -> + { + } + } + } + + private fun parseSwitchLabels(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, SwitchLabel, state.nonterminalEdges[SwitchLabel]!!, + curSppfNode) + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, SwitchLabel, state.nonterminalEdges[SwitchLabel]!!, + curSppfNode) + } + } + } + + private fun parseSwitchLabel(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.CASE -> + handleTerminal(JavaToken.CASE, state, inputEdge, descriptor, curSppfNode) + JavaToken.DEFAULT -> + handleTerminal(JavaToken.DEFAULT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, EnumConstantName, + state.nonterminalEdges[EnumConstantName]!!, curSppfNode) + handleNonterminalEdge(descriptor, ConstantExpression, + state.nonterminalEdges[ConstantExpression]!!, curSppfNode) + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.COLON -> + handleTerminal(JavaToken.COLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + } + } + } + + private fun parseEnumConstantName(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseWhileStatement(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.WHILE -> + handleTerminal(JavaToken.WHILE, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHLEFT -> + handleTerminal(JavaToken.PARENTHLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Expression, state.nonterminalEdges[Expression]!!, + curSppfNode) + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 4 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Statement, state.nonterminalEdges[Statement]!!, + curSppfNode) + } + 5 -> + { + } + } + } + + private fun parseWhileStatementNoShortIf(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.WHILE -> + handleTerminal(JavaToken.WHILE, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHLEFT -> + handleTerminal(JavaToken.PARENTHLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Expression, state.nonterminalEdges[Expression]!!, + curSppfNode) + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 4 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, StatementNoShortIf, + state.nonterminalEdges[StatementNoShortIf]!!, curSppfNode) + } + 5 -> + { + } + } + } + + private fun parseDoStatement(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.DO -> + handleTerminal(JavaToken.DO, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Statement, state.nonterminalEdges[Statement]!!, + curSppfNode) + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.WHILE -> + handleTerminal(JavaToken.WHILE, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHLEFT -> + handleTerminal(JavaToken.PARENTHLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 4 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Expression, state.nonterminalEdges[Expression]!!, + curSppfNode) + } + 5 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 6 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 7 -> + { + } + } + } + + private fun parseInterfaceMethodModifier(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.STRICTFP -> + handleTerminal(JavaToken.STRICTFP, state, inputEdge, descriptor, curSppfNode) + JavaToken.ABSTRACT -> + handleTerminal(JavaToken.ABSTRACT, state, inputEdge, descriptor, curSppfNode) + JavaToken.DEFAULT -> + handleTerminal(JavaToken.DEFAULT, state, inputEdge, descriptor, curSppfNode) + JavaToken.STATIC -> + handleTerminal(JavaToken.STATIC, state, inputEdge, descriptor, curSppfNode) + JavaToken.PUBLIC -> + handleTerminal(JavaToken.PUBLIC, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, Annotation, state.nonterminalEdges[Annotation]!!, + curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseForStatement(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, BasicForStatement, + state.nonterminalEdges[BasicForStatement]!!, curSppfNode) + handleNonterminalEdge(descriptor, EnhancedForStatement, + state.nonterminalEdges[EnhancedForStatement]!!, curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseForStatementNoShortIf(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, BasicForStatementNoShortIf, + state.nonterminalEdges[BasicForStatementNoShortIf]!!, curSppfNode) + handleNonterminalEdge(descriptor, EnhancedForStatementNoShortIf, + state.nonterminalEdges[EnhancedForStatementNoShortIf]!!, curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseBasicForStatement(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.FOR -> + handleTerminal(JavaToken.FOR, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHLEFT -> + handleTerminal(JavaToken.PARENTHLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, ForInit, state.nonterminalEdges[ForInit]!!, curSppfNode) + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 4 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, Expression, state.nonterminalEdges[Expression]!!, + curSppfNode) + } + 5 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, ForUpdate, state.nonterminalEdges[ForUpdate]!!, + curSppfNode) + } + 6 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 7 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 8 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Statement, state.nonterminalEdges[Statement]!!, + curSppfNode) + } + 9 -> + { + } + } + } + + private fun parseBasicForStatementNoShortIf(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.FOR -> + handleTerminal(JavaToken.FOR, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHLEFT -> + handleTerminal(JavaToken.PARENTHLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, ForInit, state.nonterminalEdges[ForInit]!!, curSppfNode) + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 4 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, Expression, state.nonterminalEdges[Expression]!!, + curSppfNode) + } + 5 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, ForUpdate, state.nonterminalEdges[ForUpdate]!!, + curSppfNode) + } + 6 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 7 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 8 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, StatementNoShortIf, + state.nonterminalEdges[StatementNoShortIf]!!, curSppfNode) + } + 9 -> + { + } + } + } + + private fun parseForInit(descriptor: Descriptor, curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, StatementExpressionList, + state.nonterminalEdges[StatementExpressionList]!!, curSppfNode) + handleNonterminalEdge(descriptor, LocalVariableDeclaration, + state.nonterminalEdges[LocalVariableDeclaration]!!, curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseForUpdate(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, StatementExpressionList, + state.nonterminalEdges[StatementExpressionList]!!, curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseStatementExpressionList(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, StatementExpression, + state.nonterminalEdges[StatementExpression]!!, curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.COMMA -> + handleTerminal(JavaToken.COMMA, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + } + } + + private fun parseEnhancedForStatement(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.FOR -> + handleTerminal(JavaToken.FOR, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHLEFT -> + handleTerminal(JavaToken.PARENTHLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, UnannType, state.nonterminalEdges[UnannType]!!, + curSppfNode) + handleNonterminalEdge(descriptor, VariableModifier, + state.nonterminalEdges[VariableModifier]!!, curSppfNode) + } + 3 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, VariableDeclaratorId, + state.nonterminalEdges[VariableDeclaratorId]!!, curSppfNode) + } + 4 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.COLON -> + handleTerminal(JavaToken.COLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 5 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Expression, state.nonterminalEdges[Expression]!!, + curSppfNode) + } + 6 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 7 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Statement, state.nonterminalEdges[Statement]!!, + curSppfNode) + } + 8 -> + { + } + } + } + + private fun parseEnhancedForStatementNoShortIf(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.FOR -> + handleTerminal(JavaToken.FOR, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHLEFT -> + handleTerminal(JavaToken.PARENTHLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, UnannType, state.nonterminalEdges[UnannType]!!, + curSppfNode) + handleNonterminalEdge(descriptor, VariableModifier, + state.nonterminalEdges[VariableModifier]!!, curSppfNode) + } + 3 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, VariableDeclaratorId, + state.nonterminalEdges[VariableDeclaratorId]!!, curSppfNode) + } + 4 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.COLON -> + handleTerminal(JavaToken.COLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 5 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Expression, state.nonterminalEdges[Expression]!!, + curSppfNode) + } + 6 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 7 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, StatementNoShortIf, + state.nonterminalEdges[StatementNoShortIf]!!, curSppfNode) + } + 8 -> + { + } + } + } + + private fun parseBreakStatement(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.BREAK -> + handleTerminal(JavaToken.BREAK, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + } + } + } + + private fun parseContinueStatement(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.CONTINUE -> + handleTerminal(JavaToken.CONTINUE, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + } + } + } + + private fun parseReturnStatement(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.RETURN -> + handleTerminal(JavaToken.RETURN, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, Expression, state.nonterminalEdges[Expression]!!, + curSppfNode) + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + } + } + } + + private fun parseThrowStatement(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.THROW -> + handleTerminal(JavaToken.THROW, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Expression, state.nonterminalEdges[Expression]!!, + curSppfNode) + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + } + } + } + + private fun parseSynchronizedStatement(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SYNCHRONIZED -> + handleTerminal(JavaToken.SYNCHRONIZED, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHLEFT -> + handleTerminal(JavaToken.PARENTHLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Expression, state.nonterminalEdges[Expression]!!, + curSppfNode) + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 4 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Block, state.nonterminalEdges[Block]!!, curSppfNode) + } + 5 -> + { + } + } + } + + private fun parseTryStatement(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.TRY -> + handleTerminal(JavaToken.TRY, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, TryWithResourcesStatement, + state.nonterminalEdges[TryWithResourcesStatement]!!, curSppfNode) + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Block, state.nonterminalEdges[Block]!!, curSppfNode) + } + 2 -> + { + } + 3 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Catches, state.nonterminalEdges[Catches]!!, curSppfNode) + handleNonterminalEdge(descriptor, Finally, state.nonterminalEdges[Finally]!!, curSppfNode) + } + 4 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Finally, state.nonterminalEdges[Finally]!!, curSppfNode) + } + } + } + + private fun parseCatches(descriptor: Descriptor, curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, CatchClause, state.nonterminalEdges[CatchClause]!!, + curSppfNode) + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, CatchClause, state.nonterminalEdges[CatchClause]!!, + curSppfNode) + } + } + } + + private fun parseCatchClause(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.CATCH -> + handleTerminal(JavaToken.CATCH, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHLEFT -> + handleTerminal(JavaToken.PARENTHLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, CatchFormalParameter, + state.nonterminalEdges[CatchFormalParameter]!!, curSppfNode) + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 4 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Block, state.nonterminalEdges[Block]!!, curSppfNode) + } + 5 -> + { + } + } + } + + private fun parseCatchFormalParameter(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, VariableModifier, + state.nonterminalEdges[VariableModifier]!!, curSppfNode) + handleNonterminalEdge(descriptor, CatchType, state.nonterminalEdges[CatchType]!!, + curSppfNode) + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, VariableDeclaratorId, + state.nonterminalEdges[VariableDeclaratorId]!!, curSppfNode) + } + 2 -> + { + } + } + } + + private fun parseCatchType(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, UnannClassType, state.nonterminalEdges[UnannClassType]!!, + curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.ORBIT -> + handleTerminal(JavaToken.ORBIT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ClassType, state.nonterminalEdges[ClassType]!!, + curSppfNode) + } + } + } + + private fun parseFinally(descriptor: Descriptor, curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.FINALLY -> + handleTerminal(JavaToken.FINALLY, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Block, state.nonterminalEdges[Block]!!, curSppfNode) + } + 2 -> + { + } + } + } + + private fun parseTryWithResourcesStatement(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.TRY -> + handleTerminal(JavaToken.TRY, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ResourceSpecification, + state.nonterminalEdges[ResourceSpecification]!!, curSppfNode) + } + 2 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Block, state.nonterminalEdges[Block]!!, curSppfNode) + } + 3 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Catches, state.nonterminalEdges[Catches]!!, curSppfNode) + handleNonterminalEdge(descriptor, Finally, state.nonterminalEdges[Finally]!!, curSppfNode) + } + 4 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Finally, state.nonterminalEdges[Finally]!!, curSppfNode) + } + 5 -> + { + } + } + } + + private fun parseResourceSpecification(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHLEFT -> + handleTerminal(JavaToken.PARENTHLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ResourceList, state.nonterminalEdges[ResourceList]!!, + curSppfNode) + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 4 -> + { + } + } + } + + private fun parseResourceList(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Resource, state.nonterminalEdges[Resource]!!, curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.COMMA -> + handleTerminal(JavaToken.COMMA, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + } + } + + private fun parseResource(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, UnannType, state.nonterminalEdges[UnannType]!!, + curSppfNode) + handleNonterminalEdge(descriptor, VariableModifier, + state.nonterminalEdges[VariableModifier]!!, curSppfNode) + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, VariableDeclaratorId, + state.nonterminalEdges[VariableDeclaratorId]!!, curSppfNode) + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.ASSIGN -> + handleTerminal(JavaToken.ASSIGN, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Expression, state.nonterminalEdges[Expression]!!, + curSppfNode) + } + 4 -> + { + } + } + } + + private fun parsePrimaryNoNewArray(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.THIS -> + handleTerminal(JavaToken.THIS, state, inputEdge, descriptor, curSppfNode) + JavaToken.PARENTHLEFT -> + handleTerminal(JavaToken.PARENTHLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, TypeName, state.nonterminalEdges[TypeName]!!, curSppfNode) + handleNonterminalEdge(descriptor, ArrayAccess, state.nonterminalEdges[ArrayAccess]!!, + curSppfNode) + handleNonterminalEdge(descriptor, Literal, state.nonterminalEdges[Literal]!!, curSppfNode) + handleNonterminalEdge(descriptor, ClassInstanceCreationExpression, + state.nonterminalEdges[ClassInstanceCreationExpression]!!, curSppfNode) + handleNonterminalEdge(descriptor, MethodInvocation, + state.nonterminalEdges[MethodInvocation]!!, curSppfNode) + handleNonterminalEdge(descriptor, MethodReference, + state.nonterminalEdges[MethodReference]!!, curSppfNode) + handleNonterminalEdge(descriptor, ClassLiteral, state.nonterminalEdges[ClassLiteral]!!, + curSppfNode) + handleNonterminalEdge(descriptor, FieldAccess, state.nonterminalEdges[FieldAccess]!!, + curSppfNode) + } + 1 -> + { + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.DOT -> + handleTerminal(JavaToken.DOT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Expression, state.nonterminalEdges[Expression]!!, + curSppfNode) + } + 4 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 5 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.THIS -> + handleTerminal(JavaToken.THIS, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + } + } + + private fun parseClassLiteral(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.VOID -> + handleTerminal(JavaToken.VOID, state, inputEdge, descriptor, curSppfNode) + JavaToken.BOOLEAN -> + handleTerminal(JavaToken.BOOLEAN, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, NumericType, state.nonterminalEdges[NumericType]!!, + curSppfNode) + handleNonterminalEdge(descriptor, TypeName, state.nonterminalEdges[TypeName]!!, curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.DOT -> + handleTerminal(JavaToken.DOT, state, inputEdge, descriptor, curSppfNode) + JavaToken.BRACKETLEFT -> + handleTerminal(JavaToken.BRACKETLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.DOT -> + handleTerminal(JavaToken.DOT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.CLASS -> + handleTerminal(JavaToken.CLASS, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 4 -> + { + } + 5 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.BRACKETRIGHT -> + handleTerminal(JavaToken.BRACKETRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + } + } + + private fun parseclassOrInterfaceTypeToInstantiate(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + handleNonterminalEdge(descriptor, Annotation, state.nonterminalEdges[Annotation]!!, + curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.DOT -> + handleTerminal(JavaToken.DOT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, TypeArgumentsOrDiamond, + state.nonterminalEdges[TypeArgumentsOrDiamond]!!, curSppfNode) + } + 2 -> + { + } + } + } + + private fun parseUnqualifiedClassInstanceCreationExpression(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.NEW -> + handleTerminal(JavaToken.NEW, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, classOrInterfaceTypeToInstantiate, + state.nonterminalEdges[classOrInterfaceTypeToInstantiate]!!, curSppfNode) + handleNonterminalEdge(descriptor, TypeArguments, state.nonterminalEdges[TypeArguments]!!, + curSppfNode) + } + 2 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, classOrInterfaceTypeToInstantiate, + state.nonterminalEdges[classOrInterfaceTypeToInstantiate]!!, curSppfNode) + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHLEFT -> + handleTerminal(JavaToken.PARENTHLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 4 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, ArgumentList, state.nonterminalEdges[ArgumentList]!!, + curSppfNode) + } + 5 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 6 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ClassBody, state.nonterminalEdges[ClassBody]!!, + curSppfNode) + } + 7 -> + { + } + } + } + + private fun parseClassInstanceCreationExpression(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, UnqualifiedClassInstanceCreationExpression, + state.nonterminalEdges[UnqualifiedClassInstanceCreationExpression]!!, curSppfNode) + handleNonterminalEdge(descriptor, Primary, state.nonterminalEdges[Primary]!!, curSppfNode) + handleNonterminalEdge(descriptor, ExpressionName, state.nonterminalEdges[ExpressionName]!!, + curSppfNode) + } + 1 -> + { + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.DOT -> + handleTerminal(JavaToken.DOT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, UnqualifiedClassInstanceCreationExpression, + state.nonterminalEdges[UnqualifiedClassInstanceCreationExpression]!!, curSppfNode) + } + } + } + + private fun parseFieldAccess(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SUPER -> + handleTerminal(JavaToken.SUPER, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, TypeName, state.nonterminalEdges[TypeName]!!, curSppfNode) + handleNonterminalEdge(descriptor, Primary, state.nonterminalEdges[Primary]!!, curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.DOT -> + handleTerminal(JavaToken.DOT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.DOT -> + handleTerminal(JavaToken.DOT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SUPER -> + handleTerminal(JavaToken.SUPER, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 4 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + } + 5 -> + { + } + } + } + + private fun parseTypeArgumentsOrDiamond(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.LT -> + handleTerminal(JavaToken.LT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, TypeArguments, state.nonterminalEdges[TypeArguments]!!, + curSppfNode) + } + 1 -> + { + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.GT -> + handleTerminal(JavaToken.GT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + } + } + + private fun parseArrayAccess(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, PrimaryNoNewArray, + state.nonterminalEdges[PrimaryNoNewArray]!!, curSppfNode) + handleNonterminalEdge(descriptor, ExpressionName, state.nonterminalEdges[ExpressionName]!!, + curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.BRACKETLEFT -> + handleTerminal(JavaToken.BRACKETLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Expression, state.nonterminalEdges[Expression]!!, + curSppfNode) + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.BRACKETRIGHT -> + handleTerminal(JavaToken.BRACKETRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 4 -> + { + } + } + } + + private fun parseMethodInvocation(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SUPER -> + handleTerminal(JavaToken.SUPER, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, TypeName, state.nonterminalEdges[TypeName]!!, curSppfNode) + handleNonterminalEdge(descriptor, Primary, state.nonterminalEdges[Primary]!!, curSppfNode) + handleNonterminalEdge(descriptor, MethodName, state.nonterminalEdges[MethodName]!!, + curSppfNode) + handleNonterminalEdge(descriptor, ExpressionName, state.nonterminalEdges[ExpressionName]!!, + curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHLEFT -> + handleTerminal(JavaToken.PARENTHLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.DOT -> + handleTerminal(JavaToken.DOT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.DOT -> + handleTerminal(JavaToken.DOT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 4 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + handleNonterminalEdge(descriptor, TypeArguments, state.nonterminalEdges[TypeArguments]!!, + curSppfNode) + } + 5 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + } + 6 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SUPER -> + handleTerminal(JavaToken.SUPER, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + handleNonterminalEdge(descriptor, TypeArguments, state.nonterminalEdges[TypeArguments]!!, + curSppfNode) + } + 7 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, ArgumentList, state.nonterminalEdges[ArgumentList]!!, + curSppfNode) + } + 8 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 9 -> + { + } + } + } + + private fun parseMethodReference(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SUPER -> + handleTerminal(JavaToken.SUPER, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, ArrayType, state.nonterminalEdges[ArrayType]!!, + curSppfNode) + handleNonterminalEdge(descriptor, TypeName, state.nonterminalEdges[TypeName]!!, curSppfNode) + handleNonterminalEdge(descriptor, Primary, state.nonterminalEdges[Primary]!!, curSppfNode) + handleNonterminalEdge(descriptor, ClassType, state.nonterminalEdges[ClassType]!!, + curSppfNode) + handleNonterminalEdge(descriptor, ReferenceType, state.nonterminalEdges[ReferenceType]!!, + curSppfNode) + handleNonterminalEdge(descriptor, ExpressionName, state.nonterminalEdges[ExpressionName]!!, + curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.DOUBLECOLON -> + handleTerminal(JavaToken.DOUBLECOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.DOT -> + handleTerminal(JavaToken.DOT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.DOUBLECOLON -> + handleTerminal(JavaToken.DOUBLECOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 4 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.DOUBLECOLON -> + handleTerminal(JavaToken.DOUBLECOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 5 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.NEW -> + handleTerminal(JavaToken.NEW, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 6 -> + { + } + 7 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.NEW -> + handleTerminal(JavaToken.NEW, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, TypeArguments, state.nonterminalEdges[TypeArguments]!!, + curSppfNode) + } + 8 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SUPER -> + handleTerminal(JavaToken.SUPER, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 9 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + handleNonterminalEdge(descriptor, TypeArguments, state.nonterminalEdges[TypeArguments]!!, + curSppfNode) + } + 10 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + } + } + } + + private fun parseArrayCreationExpression(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.NEW -> + handleTerminal(JavaToken.NEW, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, PrimitiveType, state.nonterminalEdges[PrimitiveType]!!, + curSppfNode) + handleNonterminalEdge(descriptor, ClassOrInterfaceType, + state.nonterminalEdges[ClassOrInterfaceType]!!, curSppfNode) + } + 2 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, DimExprs, state.nonterminalEdges[DimExprs]!!, curSppfNode) + handleNonterminalEdge(descriptor, Dims, state.nonterminalEdges[Dims]!!, curSppfNode) + } + 3 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Dims, state.nonterminalEdges[Dims]!!, curSppfNode) + } + 4 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ArrayInitializer, + state.nonterminalEdges[ArrayInitializer]!!, curSppfNode) + } + 5 -> + { + } + } + } + + private fun parseDimExprs(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, DimExpr, state.nonterminalEdges[DimExpr]!!, curSppfNode) + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, DimExpr, state.nonterminalEdges[DimExpr]!!, curSppfNode) + } + } + } + + private fun parseDimExpr(descriptor: Descriptor, curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.BRACKETLEFT -> + handleTerminal(JavaToken.BRACKETLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, Annotation, state.nonterminalEdges[Annotation]!!, + curSppfNode) + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Expression, state.nonterminalEdges[Expression]!!, + curSppfNode) + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.BRACKETRIGHT -> + handleTerminal(JavaToken.BRACKETRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + } + } + } + + private fun parseLambdaExpression(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, LambdaParameters, + state.nonterminalEdges[LambdaParameters]!!, curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.ARROW -> + handleTerminal(JavaToken.ARROW, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, LambdaBody, state.nonterminalEdges[LambdaBody]!!, + curSppfNode) + } + 3 -> + { + } + } + } + + private fun parseLambdaParameters(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHLEFT -> + handleTerminal(JavaToken.PARENTHLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + } + 1 -> + { + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, FormalParameterList, + state.nonterminalEdges[FormalParameterList]!!, curSppfNode) + handleNonterminalEdge(descriptor, InferredFormalParameterList, + state.nonterminalEdges[InferredFormalParameterList]!!, curSppfNode) + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + } + } + + private fun parseInferredFormalParameterList(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.COMMA -> + handleTerminal(JavaToken.COMMA, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + } + } + + private fun parseLambdaBody(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Expression, state.nonterminalEdges[Expression]!!, + curSppfNode) + handleNonterminalEdge(descriptor, Block, state.nonterminalEdges[Block]!!, curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseAssignmentExpression(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Assignment, state.nonterminalEdges[Assignment]!!, + curSppfNode) + handleNonterminalEdge(descriptor, ConditionalExpression, + state.nonterminalEdges[ConditionalExpression]!!, curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseAssignment(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, LeftHandSide, state.nonterminalEdges[LeftHandSide]!!, + curSppfNode) + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, AssignmentOperator, + state.nonterminalEdges[AssignmentOperator]!!, curSppfNode) + } + 2 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Expression, state.nonterminalEdges[Expression]!!, + curSppfNode) + } + 3 -> + { + } + } + } + + private fun parseLeftHandSide(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ArrayAccess, state.nonterminalEdges[ArrayAccess]!!, + curSppfNode) + handleNonterminalEdge(descriptor, FieldAccess, state.nonterminalEdges[FieldAccess]!!, + curSppfNode) + handleNonterminalEdge(descriptor, ExpressionName, state.nonterminalEdges[ExpressionName]!!, + curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseAssignmentOperator(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SLASHASSIGN -> + handleTerminal(JavaToken.SLASHASSIGN, state, inputEdge, descriptor, curSppfNode) + JavaToken.SHIFTLEFTASSIGN -> + handleTerminal(JavaToken.SHIFTLEFTASSIGN, state, inputEdge, descriptor, curSppfNode) + JavaToken.ORASSIGN -> + handleTerminal(JavaToken.ORASSIGN, state, inputEdge, descriptor, curSppfNode) + JavaToken.PLUSASSIGN -> + handleTerminal(JavaToken.PLUSASSIGN, state, inputEdge, descriptor, curSppfNode) + JavaToken.USRIGHTSHIFTASSIGN -> + handleTerminal(JavaToken.USRIGHTSHIFTASSIGN, state, inputEdge, descriptor, curSppfNode) + JavaToken.XORASSIGN -> + handleTerminal(JavaToken.XORASSIGN, state, inputEdge, descriptor, curSppfNode) + JavaToken.ANDASSIGN -> + handleTerminal(JavaToken.ANDASSIGN, state, inputEdge, descriptor, curSppfNode) + JavaToken.STARASSIGN -> + handleTerminal(JavaToken.STARASSIGN, state, inputEdge, descriptor, curSppfNode) + JavaToken.MINUSASSIGN -> + handleTerminal(JavaToken.MINUSASSIGN, state, inputEdge, descriptor, curSppfNode) + JavaToken.SHIFTRIGHTASSIGN -> + handleTerminal(JavaToken.SHIFTRIGHTASSIGN, state, inputEdge, descriptor, curSppfNode) + JavaToken.PERCENTASSIGN -> + handleTerminal(JavaToken.PERCENTASSIGN, state, inputEdge, descriptor, curSppfNode) + JavaToken.ASSIGN -> + handleTerminal(JavaToken.ASSIGN, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + } + } + } + + private fun parseConditionalOrExpression(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ConditionalAndExpression, + state.nonterminalEdges[ConditionalAndExpression]!!, curSppfNode) + handleNonterminalEdge(descriptor, ConditionalOrExpression, + state.nonterminalEdges[ConditionalOrExpression]!!, curSppfNode) + } + 1 -> + { + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.OR -> + handleTerminal(JavaToken.OR, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ConditionalAndExpression, + state.nonterminalEdges[ConditionalAndExpression]!!, curSppfNode) + } + } + } + + private fun parseConditionalAndExpression(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, InclusiveOrExpression, + state.nonterminalEdges[InclusiveOrExpression]!!, curSppfNode) + handleNonterminalEdge(descriptor, ConditionalAndExpression, + state.nonterminalEdges[ConditionalAndExpression]!!, curSppfNode) + } + 1 -> + { + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.AND -> + handleTerminal(JavaToken.AND, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, InclusiveOrExpression, + state.nonterminalEdges[InclusiveOrExpression]!!, curSppfNode) + } + } + } + + private fun parseInclusiveOrExpression(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, InclusiveOrExpression, + state.nonterminalEdges[InclusiveOrExpression]!!, curSppfNode) + handleNonterminalEdge(descriptor, ExclusiveOrExpression, + state.nonterminalEdges[ExclusiveOrExpression]!!, curSppfNode) + } + 1 -> + { + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.ORBIT -> + handleTerminal(JavaToken.ORBIT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ExclusiveOrExpression, + state.nonterminalEdges[ExclusiveOrExpression]!!, curSppfNode) + } + } + } + + private fun parseExclusiveOrExpression(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, AndExpression, state.nonterminalEdges[AndExpression]!!, + curSppfNode) + handleNonterminalEdge(descriptor, ExclusiveOrExpression, + state.nonterminalEdges[ExclusiveOrExpression]!!, curSppfNode) + } + 1 -> + { + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.XORBIT -> + handleTerminal(JavaToken.XORBIT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, AndExpression, state.nonterminalEdges[AndExpression]!!, + curSppfNode) + } + } + } + + private fun parseAndExpression(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, AndExpression, state.nonterminalEdges[AndExpression]!!, + curSppfNode) + handleNonterminalEdge(descriptor, EqualityExpression, + state.nonterminalEdges[EqualityExpression]!!, curSppfNode) + } + 1 -> + { + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.ANDBIT -> + handleTerminal(JavaToken.ANDBIT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, EqualityExpression, + state.nonterminalEdges[EqualityExpression]!!, curSppfNode) + } + } + } + + private fun parseEqualityExpression(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, RelationalExpression, + state.nonterminalEdges[RelationalExpression]!!, curSppfNode) + handleNonterminalEdge(descriptor, EqualityExpression, + state.nonterminalEdges[EqualityExpression]!!, curSppfNode) + } + 1 -> + { + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.EQ -> + handleTerminal(JavaToken.EQ, state, inputEdge, descriptor, curSppfNode) + JavaToken.NOTEQ -> + handleTerminal(JavaToken.NOTEQ, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, RelationalExpression, + state.nonterminalEdges[RelationalExpression]!!, curSppfNode) + } + } + } + + private fun parseRelationalExpression(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, RelationalExpression, + state.nonterminalEdges[RelationalExpression]!!, curSppfNode) + handleNonterminalEdge(descriptor, ShiftExpression, + state.nonterminalEdges[ShiftExpression]!!, curSppfNode) + } + 1 -> + { + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.INSTANCEOF -> + handleTerminal(JavaToken.INSTANCEOF, state, inputEdge, descriptor, curSppfNode) + JavaToken.GREATEQ -> + handleTerminal(JavaToken.GREATEQ, state, inputEdge, descriptor, curSppfNode) + JavaToken.LT -> + handleTerminal(JavaToken.LT, state, inputEdge, descriptor, curSppfNode) + JavaToken.GT -> + handleTerminal(JavaToken.GT, state, inputEdge, descriptor, curSppfNode) + JavaToken.LESSEQ -> + handleTerminal(JavaToken.LESSEQ, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ShiftExpression, + state.nonterminalEdges[ShiftExpression]!!, curSppfNode) + } + 4 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ReferenceType, state.nonterminalEdges[ReferenceType]!!, + curSppfNode) + } + } + } + + private fun parseShiftExpression(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, AdditiveExpression, + state.nonterminalEdges[AdditiveExpression]!!, curSppfNode) + handleNonterminalEdge(descriptor, ShiftExpression, + state.nonterminalEdges[ShiftExpression]!!, curSppfNode) + } + 1 -> + { + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.LT -> + handleTerminal(JavaToken.LT, state, inputEdge, descriptor, curSppfNode) + JavaToken.GT -> + handleTerminal(JavaToken.GT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.LT -> + handleTerminal(JavaToken.LT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 4 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.GT -> + handleTerminal(JavaToken.GT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 5 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.GT -> + handleTerminal(JavaToken.GT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, AdditiveExpression, + state.nonterminalEdges[AdditiveExpression]!!, curSppfNode) + } + 6 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, AdditiveExpression, + state.nonterminalEdges[AdditiveExpression]!!, curSppfNode) + } + } + } + + private fun parseAdditiveExpression(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, AdditiveExpression, + state.nonterminalEdges[AdditiveExpression]!!, curSppfNode) + handleNonterminalEdge(descriptor, MultiplicativeExpression, + state.nonterminalEdges[MultiplicativeExpression]!!, curSppfNode) + } + 1 -> + { + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.MINUS -> + handleTerminal(JavaToken.MINUS, state, inputEdge, descriptor, curSppfNode) + JavaToken.PLUS -> + handleTerminal(JavaToken.PLUS, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, MultiplicativeExpression, + state.nonterminalEdges[MultiplicativeExpression]!!, curSppfNode) + } + } + } + + private fun parseMultiplicativeExpression(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, UnaryExpression, + state.nonterminalEdges[UnaryExpression]!!, curSppfNode) + handleNonterminalEdge(descriptor, MultiplicativeExpression, + state.nonterminalEdges[MultiplicativeExpression]!!, curSppfNode) + } + 1 -> + { + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PERCENT -> + handleTerminal(JavaToken.PERCENT, state, inputEdge, descriptor, curSppfNode) + JavaToken.SLASH -> + handleTerminal(JavaToken.SLASH, state, inputEdge, descriptor, curSppfNode) + JavaToken.STAR -> + handleTerminal(JavaToken.STAR, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, UnaryExpression, + state.nonterminalEdges[UnaryExpression]!!, curSppfNode) + } + } + } + + private fun parsePreIncrementExpression(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PLUSPLUS -> + handleTerminal(JavaToken.PLUSPLUS, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, UnaryExpression, + state.nonterminalEdges[UnaryExpression]!!, curSppfNode) + } + 2 -> + { + } + } + } + + private fun parsePreDecrementExpression(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.MINUSMINUS -> + handleTerminal(JavaToken.MINUSMINUS, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, UnaryExpression, + state.nonterminalEdges[UnaryExpression]!!, curSppfNode) + } + 2 -> + { + } + } + } + + private fun parseUnaryExpressionNotPlusMinus(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.TILDA -> + handleTerminal(JavaToken.TILDA, state, inputEdge, descriptor, curSppfNode) + JavaToken.EXCLAMATIONMARK -> + handleTerminal(JavaToken.EXCLAMATIONMARK, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, PostfixExpression, + state.nonterminalEdges[PostfixExpression]!!, curSppfNode) + handleNonterminalEdge(descriptor, CastExpression, state.nonterminalEdges[CastExpression]!!, + curSppfNode) + } + 1 -> + { + } + 2 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, UnaryExpression, + state.nonterminalEdges[UnaryExpression]!!, curSppfNode) + } + } + } + + private fun parseUnaryExpression(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.MINUS -> + handleTerminal(JavaToken.MINUS, state, inputEdge, descriptor, curSppfNode) + JavaToken.PLUS -> + handleTerminal(JavaToken.PLUS, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, PreDecrementExpression, + state.nonterminalEdges[PreDecrementExpression]!!, curSppfNode) + handleNonterminalEdge(descriptor, UnaryExpressionNotPlusMinus, + state.nonterminalEdges[UnaryExpressionNotPlusMinus]!!, curSppfNode) + handleNonterminalEdge(descriptor, PreIncrementExpression, + state.nonterminalEdges[PreIncrementExpression]!!, curSppfNode) + } + 1 -> + { + } + 2 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, UnaryExpression, + state.nonterminalEdges[UnaryExpression]!!, curSppfNode) + } + } + } + + private fun parsePostfixExpression(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, PostIncrementExpression, + state.nonterminalEdges[PostIncrementExpression]!!, curSppfNode) + handleNonterminalEdge(descriptor, Primary, state.nonterminalEdges[Primary]!!, curSppfNode) + handleNonterminalEdge(descriptor, PostDecrementExpression, + state.nonterminalEdges[PostDecrementExpression]!!, curSppfNode) + handleNonterminalEdge(descriptor, ExpressionName, state.nonterminalEdges[ExpressionName]!!, + curSppfNode) + } + 1 -> + { + } + } + } + + private fun parsePostIncrementExpression(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, PostfixExpression, + state.nonterminalEdges[PostfixExpression]!!, curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PLUSPLUS -> + handleTerminal(JavaToken.PLUSPLUS, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + } + } + } + + private fun parsePostDecrementExpression(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, PostfixExpression, + state.nonterminalEdges[PostfixExpression]!!, curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.MINUSMINUS -> + handleTerminal(JavaToken.MINUSMINUS, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + } + } + } + + private fun parseCastExpression(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHLEFT -> + handleTerminal(JavaToken.PARENTHLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, PrimitiveType, state.nonterminalEdges[PrimitiveType]!!, + curSppfNode) + handleNonterminalEdge(descriptor, ReferenceType, state.nonterminalEdges[ReferenceType]!!, + curSppfNode) + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, AdditionalBound, + state.nonterminalEdges[AdditionalBound]!!, curSppfNode) + } + 4 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, UnaryExpressionNotPlusMinus, + state.nonterminalEdges[UnaryExpressionNotPlusMinus]!!, curSppfNode) + handleNonterminalEdge(descriptor, LambdaExpression, + state.nonterminalEdges[LambdaExpression]!!, curSppfNode) + } + 5 -> + { + } + 6 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, UnaryExpression, + state.nonterminalEdges[UnaryExpression]!!, curSppfNode) + } + } + } + + private fun parseConstantExpression(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Expression, state.nonterminalEdges[Expression]!!, + curSppfNode) + } + 1 -> + { + } + } + } + + override fun setInput(`value`: IInputGraph) { + ctx = org.ucfs.parser.context.Context(grammar.rsm, value) + } +} diff --git a/benchmarks/src/main/kotlin/org/ucfs/Java8ParserRecovery.kt b/benchmarks/src/main/kotlin/org/ucfs/Java8ParserRecovery.kt new file mode 100644 index 000000000..f0efe72cf --- /dev/null +++ b/benchmarks/src/main/kotlin/org/ucfs/Java8ParserRecovery.kt @@ -0,0 +1,8660 @@ +@file:Suppress("RedundantVisibilityModifier") + +package org.ucfs + +import java8.Java8 +import java8.JavaToken +import org.ucfs.descriptors.Descriptor +import org.ucfs.input.IInputGraph +import org.ucfs.input.ILabel +import org.ucfs.parser.GeneratedParser +import org.ucfs.rsm.symbol.Nonterminal +import org.ucfs.sppf.node.SppfNode + +public class Java8ParserRecovery : + GeneratedParser() { + public val grammar: Java8 = Java8() + + private val CompilationUnit: Nonterminal = grammar.CompilationUnit.nonterm + + private val Identifier: Nonterminal = grammar.Identifier.nonterm + + private val Literal: Nonterminal = grammar.Literal.nonterm + + private val Type: Nonterminal = grammar.Type.nonterm + + private val PrimitiveType: Nonterminal = grammar.PrimitiveType.nonterm + + private val ReferenceType: Nonterminal = grammar.ReferenceType.nonterm + + private val Annotation: Nonterminal = grammar.Annotation.nonterm + + private val NumericType: Nonterminal = grammar.NumericType.nonterm + + private val IntegralType: Nonterminal = grammar.IntegralType.nonterm + + private val FloatingPointType: Nonterminal = grammar.FloatingPointType.nonterm + + private val ClassOrInterfaceType: Nonterminal = grammar.ClassOrInterfaceType.nonterm + + private val TypeVariable: Nonterminal = grammar.TypeVariable.nonterm + + private val ArrayType: Nonterminal = grammar.ArrayType.nonterm + + private val ClassType: Nonterminal = grammar.ClassType.nonterm + + private val InterfaceType: Nonterminal = grammar.InterfaceType.nonterm + + private val TypeArguments: Nonterminal = grammar.TypeArguments.nonterm + + private val Dims: Nonterminal = grammar.Dims.nonterm + + private val TypeParameter: Nonterminal = grammar.TypeParameter.nonterm + + private val TypeParameterModifier: Nonterminal = grammar.TypeParameterModifier.nonterm + + private val TypeBound: Nonterminal = grammar.TypeBound.nonterm + + private val AdditionalBound: Nonterminal = grammar.AdditionalBound.nonterm + + private val TypeArgumentList: Nonterminal = grammar.TypeArgumentList.nonterm + + private val TypeArgument: Nonterminal = grammar.TypeArgument.nonterm + + private val Wildcard: Nonterminal = grammar.Wildcard.nonterm + + private val WildcardBounds: Nonterminal = grammar.WildcardBounds.nonterm + + private val TypeName: Nonterminal = grammar.TypeName.nonterm + + private val PackageOrTypeName: Nonterminal = grammar.PackageOrTypeName.nonterm + + private val ExpressionName: Nonterminal = grammar.ExpressionName.nonterm + + private val AmbiguousName: Nonterminal = grammar.AmbiguousName.nonterm + + private val MethodName: Nonterminal = grammar.MethodName.nonterm + + private val PackageName: Nonterminal = grammar.PackageName.nonterm + + private val Result: Nonterminal = grammar.Result.nonterm + + private val PackageDeclaration: Nonterminal = grammar.PackageDeclaration.nonterm + + private val ImportDeclaration: Nonterminal = grammar.ImportDeclaration.nonterm + + private val TypeDeclaration: Nonterminal = grammar.TypeDeclaration.nonterm + + private val PackageModifier: Nonterminal = grammar.PackageModifier.nonterm + + private val SingleTypeImportDeclaration: Nonterminal = grammar.SingleTypeImportDeclaration.nonterm + + private val TypeImportOnDemandDeclaration: Nonterminal = + grammar.TypeImportOnDemandDeclaration.nonterm + + private val SingleStaticImportDeclaration: Nonterminal = + grammar.SingleStaticImportDeclaration.nonterm + + private val StaticImportOnDemandDeclaration: Nonterminal = + grammar.StaticImportOnDemandDeclaration.nonterm + + private val ClassDeclaration: Nonterminal = grammar.ClassDeclaration.nonterm + + private val InterfaceDeclaration: Nonterminal = grammar.InterfaceDeclaration.nonterm + + private val Throws: Nonterminal = grammar.Throws.nonterm + + private val NormalClassDeclaration: Nonterminal = grammar.NormalClassDeclaration.nonterm + + private val EnumDeclaration: Nonterminal = grammar.EnumDeclaration.nonterm + + private val ClassModifier: Nonterminal = grammar.ClassModifier.nonterm + + private val TypeParameters: Nonterminal = grammar.TypeParameters.nonterm + + private val Superclass: Nonterminal = grammar.Superclass.nonterm + + private val Superinterfaces: Nonterminal = grammar.Superinterfaces.nonterm + + private val ClassBody: Nonterminal = grammar.ClassBody.nonterm + + private val TypeParameterList: Nonterminal = grammar.TypeParameterList.nonterm + + private val InterfaceTypeList: Nonterminal = grammar.InterfaceTypeList.nonterm + + private val ClassBodyDeclaration: Nonterminal = grammar.ClassBodyDeclaration.nonterm + + private val ClassMemberDeclaration: Nonterminal = grammar.ClassMemberDeclaration.nonterm + + private val InstanceInitializer: Nonterminal = grammar.InstanceInitializer.nonterm + + private val StaticInitializer: Nonterminal = grammar.StaticInitializer.nonterm + + private val ConstructorDeclaration: Nonterminal = grammar.ConstructorDeclaration.nonterm + + private val FieldDeclaration: Nonterminal = grammar.FieldDeclaration.nonterm + + private val MethodDeclaration: Nonterminal = grammar.MethodDeclaration.nonterm + + private val FieldModifier: Nonterminal = grammar.FieldModifier.nonterm + + private val UnannType: Nonterminal = grammar.UnannType.nonterm + + private val VariableDeclaratorList: Nonterminal = grammar.VariableDeclaratorList.nonterm + + private val VariableDeclarator: Nonterminal = grammar.VariableDeclarator.nonterm + + private val VariableDeclaratorId: Nonterminal = grammar.VariableDeclaratorId.nonterm + + private val VariableInitializer: Nonterminal = grammar.VariableInitializer.nonterm + + private val Expression: Nonterminal = grammar.Expression.nonterm + + private val ArrayInitializer: Nonterminal = grammar.ArrayInitializer.nonterm + + private val UnannPrimitiveType: Nonterminal = grammar.UnannPrimitiveType.nonterm + + private val UnannReferenceType: Nonterminal = grammar.UnannReferenceType.nonterm + + private val UnannClassOrInterfaceType: Nonterminal = grammar.UnannClassOrInterfaceType.nonterm + + private val UnannTypeVariable: Nonterminal = grammar.UnannTypeVariable.nonterm + + private val UnannArrayType: Nonterminal = grammar.UnannArrayType.nonterm + + private val UnannClassType: Nonterminal = grammar.UnannClassType.nonterm + + private val UnannInterfaceType: Nonterminal = grammar.UnannInterfaceType.nonterm + + private val MethodModifier: Nonterminal = grammar.MethodModifier.nonterm + + private val MethodHeader: Nonterminal = grammar.MethodHeader.nonterm + + private val MethodBody: Nonterminal = grammar.MethodBody.nonterm + + private val MethodDeclarator: Nonterminal = grammar.MethodDeclarator.nonterm + + private val FormalParameterList: Nonterminal = grammar.FormalParameterList.nonterm + + private val ReceiverParameter: Nonterminal = grammar.ReceiverParameter.nonterm + + private val FormalParameters: Nonterminal = grammar.FormalParameters.nonterm + + private val LastFormalParameter: Nonterminal = grammar.LastFormalParameter.nonterm + + private val FormalParameter: Nonterminal = grammar.FormalParameter.nonterm + + private val VariableModifier: Nonterminal = grammar.VariableModifier.nonterm + + private val ExceptionTypeList: Nonterminal = grammar.ExceptionTypeList.nonterm + + private val ExceptionType: Nonterminal = grammar.ExceptionType.nonterm + + private val Block: Nonterminal = grammar.Block.nonterm + + private val ConstructorModifier: Nonterminal = grammar.ConstructorModifier.nonterm + + private val ConstructorDeclarator: Nonterminal = grammar.ConstructorDeclarator.nonterm + + private val ConstructorBody: Nonterminal = grammar.ConstructorBody.nonterm + + private val SimpleTypeName: Nonterminal = grammar.SimpleTypeName.nonterm + + private val ExplicitConstructorInvocation: Nonterminal = + grammar.ExplicitConstructorInvocation.nonterm + + private val EnumBody: Nonterminal = grammar.EnumBody.nonterm + + private val EnumConstantList: Nonterminal = grammar.EnumConstantList.nonterm + + private val EnumConstant: Nonterminal = grammar.EnumConstant.nonterm + + private val EnumConstantModifier: Nonterminal = grammar.EnumConstantModifier.nonterm + + private val EnumBodyDeclarations: Nonterminal = grammar.EnumBodyDeclarations.nonterm + + private val BlockStatements: Nonterminal = grammar.BlockStatements.nonterm + + private val ArgumentList: Nonterminal = grammar.ArgumentList.nonterm + + private val Primary: Nonterminal = grammar.Primary.nonterm + + private val NormalInterfaceDeclaration: Nonterminal = grammar.NormalInterfaceDeclaration.nonterm + + private val InterfaceModifier: Nonterminal = grammar.InterfaceModifier.nonterm + + private val ExtendsInterfaces: Nonterminal = grammar.ExtendsInterfaces.nonterm + + private val InterfaceBody: Nonterminal = grammar.InterfaceBody.nonterm + + private val InterfaceMemberDeclaration: Nonterminal = grammar.InterfaceMemberDeclaration.nonterm + + private val ConstantDeclaration: Nonterminal = grammar.ConstantDeclaration.nonterm + + private val ConstantModifier: Nonterminal = grammar.ConstantModifier.nonterm + + private val AnnotationTypeDeclaration: Nonterminal = grammar.AnnotationTypeDeclaration.nonterm + + private val AnnotationTypeBody: Nonterminal = grammar.AnnotationTypeBody.nonterm + + private val AnnotationTypeMemberDeclaration: Nonterminal = + grammar.AnnotationTypeMemberDeclaration.nonterm + + private val AnnotationTypeElementDeclaration: Nonterminal = + grammar.AnnotationTypeElementDeclaration.nonterm + + private val DefaultValue: Nonterminal = grammar.DefaultValue.nonterm + + private val NormalAnnotation: Nonterminal = grammar.NormalAnnotation.nonterm + + private val ElementValuePairList: Nonterminal = grammar.ElementValuePairList.nonterm + + private val ElementValuePair: Nonterminal = grammar.ElementValuePair.nonterm + + private val ElementValue: Nonterminal = grammar.ElementValue.nonterm + + private val ElementValueArrayInitializer: Nonterminal = + grammar.ElementValueArrayInitializer.nonterm + + private val ElementValueList: Nonterminal = grammar.ElementValueList.nonterm + + private val MarkerAnnotation: Nonterminal = grammar.MarkerAnnotation.nonterm + + private val SingleElementAnnotation: Nonterminal = grammar.SingleElementAnnotation.nonterm + + private val InterfaceMethodDeclaration: Nonterminal = grammar.InterfaceMethodDeclaration.nonterm + + private val AnnotationTypeElementModifier: Nonterminal = + grammar.AnnotationTypeElementModifier.nonterm + + private val ConditionalExpression: Nonterminal = grammar.ConditionalExpression.nonterm + + private val VariableInitializerList: Nonterminal = grammar.VariableInitializerList.nonterm + + private val BlockStatement: Nonterminal = grammar.BlockStatement.nonterm + + private val LocalVariableDeclarationStatement: Nonterminal = + grammar.LocalVariableDeclarationStatement.nonterm + + private val LocalVariableDeclaration: Nonterminal = grammar.LocalVariableDeclaration.nonterm + + private val Statement: Nonterminal = grammar.Statement.nonterm + + private val StatementNoShortIf: Nonterminal = grammar.StatementNoShortIf.nonterm + + private val StatementWithoutTrailingSubstatement: Nonterminal = + grammar.StatementWithoutTrailingSubstatement.nonterm + + private val EmptyStatement: Nonterminal = grammar.EmptyStatement.nonterm + + private val LabeledStatement: Nonterminal = grammar.LabeledStatement.nonterm + + private val LabeledStatementNoShortIf: Nonterminal = grammar.LabeledStatementNoShortIf.nonterm + + private val ExpressionStatement: Nonterminal = grammar.ExpressionStatement.nonterm + + private val StatementExpression: Nonterminal = grammar.StatementExpression.nonterm + + private val IfThenStatement: Nonterminal = grammar.IfThenStatement.nonterm + + private val IfThenElseStatement: Nonterminal = grammar.IfThenElseStatement.nonterm + + private val IfThenElseStatementNoShortIf: Nonterminal = + grammar.IfThenElseStatementNoShortIf.nonterm + + private val AssertStatement: Nonterminal = grammar.AssertStatement.nonterm + + private val SwitchStatement: Nonterminal = grammar.SwitchStatement.nonterm + + private val SwitchBlock: Nonterminal = grammar.SwitchBlock.nonterm + + private val SwitchBlockStatementGroup: Nonterminal = grammar.SwitchBlockStatementGroup.nonterm + + private val SwitchLabels: Nonterminal = grammar.SwitchLabels.nonterm + + private val SwitchLabel: Nonterminal = grammar.SwitchLabel.nonterm + + private val EnumConstantName: Nonterminal = grammar.EnumConstantName.nonterm + + private val WhileStatement: Nonterminal = grammar.WhileStatement.nonterm + + private val WhileStatementNoShortIf: Nonterminal = grammar.WhileStatementNoShortIf.nonterm + + private val DoStatement: Nonterminal = grammar.DoStatement.nonterm + + private val InterfaceMethodModifier: Nonterminal = grammar.InterfaceMethodModifier.nonterm + + private val ForStatement: Nonterminal = grammar.ForStatement.nonterm + + private val ForStatementNoShortIf: Nonterminal = grammar.ForStatementNoShortIf.nonterm + + private val BasicForStatement: Nonterminal = grammar.BasicForStatement.nonterm + + private val BasicForStatementNoShortIf: Nonterminal = grammar.BasicForStatementNoShortIf.nonterm + + private val ForInit: Nonterminal = grammar.ForInit.nonterm + + private val ForUpdate: Nonterminal = grammar.ForUpdate.nonterm + + private val StatementExpressionList: Nonterminal = grammar.StatementExpressionList.nonterm + + private val EnhancedForStatement: Nonterminal = grammar.EnhancedForStatement.nonterm + + private val EnhancedForStatementNoShortIf: Nonterminal = + grammar.EnhancedForStatementNoShortIf.nonterm + + private val BreakStatement: Nonterminal = grammar.BreakStatement.nonterm + + private val ContinueStatement: Nonterminal = grammar.ContinueStatement.nonterm + + private val ReturnStatement: Nonterminal = grammar.ReturnStatement.nonterm + + private val ThrowStatement: Nonterminal = grammar.ThrowStatement.nonterm + + private val SynchronizedStatement: Nonterminal = grammar.SynchronizedStatement.nonterm + + private val TryStatement: Nonterminal = grammar.TryStatement.nonterm + + private val Catches: Nonterminal = grammar.Catches.nonterm + + private val CatchClause: Nonterminal = grammar.CatchClause.nonterm + + private val CatchFormalParameter: Nonterminal = grammar.CatchFormalParameter.nonterm + + private val CatchType: Nonterminal = grammar.CatchType.nonterm + + private val Finally: Nonterminal = grammar.Finally.nonterm + + private val TryWithResourcesStatement: Nonterminal = grammar.TryWithResourcesStatement.nonterm + + private val ResourceSpecification: Nonterminal = grammar.ResourceSpecification.nonterm + + private val ResourceList: Nonterminal = grammar.ResourceList.nonterm + + private val Resource: Nonterminal = grammar.Resource.nonterm + + private val PrimaryNoNewArray: Nonterminal = grammar.PrimaryNoNewArray.nonterm + + private val ClassLiteral: Nonterminal = grammar.ClassLiteral.nonterm + + private val classOrInterfaceTypeToInstantiate: Nonterminal = + grammar.classOrInterfaceTypeToInstantiate.nonterm + + private val UnqualifiedClassInstanceCreationExpression: Nonterminal = + grammar.UnqualifiedClassInstanceCreationExpression.nonterm + + private val ClassInstanceCreationExpression: Nonterminal = + grammar.ClassInstanceCreationExpression.nonterm + + private val FieldAccess: Nonterminal = grammar.FieldAccess.nonterm + + private val TypeArgumentsOrDiamond: Nonterminal = grammar.TypeArgumentsOrDiamond.nonterm + + private val ArrayAccess: Nonterminal = grammar.ArrayAccess.nonterm + + private val MethodInvocation: Nonterminal = grammar.MethodInvocation.nonterm + + private val MethodReference: Nonterminal = grammar.MethodReference.nonterm + + private val ArrayCreationExpression: Nonterminal = grammar.ArrayCreationExpression.nonterm + + private val DimExprs: Nonterminal = grammar.DimExprs.nonterm + + private val DimExpr: Nonterminal = grammar.DimExpr.nonterm + + private val LambdaExpression: Nonterminal = grammar.LambdaExpression.nonterm + + private val LambdaParameters: Nonterminal = grammar.LambdaParameters.nonterm + + private val InferredFormalParameterList: Nonterminal = grammar.InferredFormalParameterList.nonterm + + private val LambdaBody: Nonterminal = grammar.LambdaBody.nonterm + + private val AssignmentExpression: Nonterminal = grammar.AssignmentExpression.nonterm + + private val Assignment: Nonterminal = grammar.Assignment.nonterm + + private val LeftHandSide: Nonterminal = grammar.LeftHandSide.nonterm + + private val AssignmentOperator: Nonterminal = grammar.AssignmentOperator.nonterm + + private val ConditionalOrExpression: Nonterminal = grammar.ConditionalOrExpression.nonterm + + private val ConditionalAndExpression: Nonterminal = grammar.ConditionalAndExpression.nonterm + + private val InclusiveOrExpression: Nonterminal = grammar.InclusiveOrExpression.nonterm + + private val ExclusiveOrExpression: Nonterminal = grammar.ExclusiveOrExpression.nonterm + + private val AndExpression: Nonterminal = grammar.AndExpression.nonterm + + private val EqualityExpression: Nonterminal = grammar.EqualityExpression.nonterm + + private val RelationalExpression: Nonterminal = grammar.RelationalExpression.nonterm + + private val ShiftExpression: Nonterminal = grammar.ShiftExpression.nonterm + + private val AdditiveExpression: Nonterminal = grammar.AdditiveExpression.nonterm + + private val MultiplicativeExpression: Nonterminal = grammar.MultiplicativeExpression.nonterm + + private val PreIncrementExpression: Nonterminal = grammar.PreIncrementExpression.nonterm + + private val PreDecrementExpression: Nonterminal = grammar.PreDecrementExpression.nonterm + + private val UnaryExpressionNotPlusMinus: Nonterminal = grammar.UnaryExpressionNotPlusMinus.nonterm + + private val UnaryExpression: Nonterminal = grammar.UnaryExpression.nonterm + + private val PostfixExpression: Nonterminal = grammar.PostfixExpression.nonterm + + private val PostIncrementExpression: Nonterminal = grammar.PostIncrementExpression.nonterm + + private val PostDecrementExpression: Nonterminal = grammar.PostDecrementExpression.nonterm + + private val CastExpression: Nonterminal = grammar.CastExpression.nonterm + + private val ConstantExpression: Nonterminal = grammar.ConstantExpression.nonterm + + override fun callNtFuncs( + nt: Nonterminal, + descriptor: Descriptor, + curSppfNode: SppfNode?, + ) { + when(nt.name) { + "CompilationUnit" -> parseCompilationUnit(descriptor, curSppfNode) + "Identifier" -> parseIdentifier(descriptor, curSppfNode) + "Literal" -> parseLiteral(descriptor, curSppfNode) + "Type" -> parseType(descriptor, curSppfNode) + "PrimitiveType" -> parsePrimitiveType(descriptor, curSppfNode) + "ReferenceType" -> parseReferenceType(descriptor, curSppfNode) + "Annotation" -> parseAnnotation(descriptor, curSppfNode) + "NumericType" -> parseNumericType(descriptor, curSppfNode) + "IntegralType" -> parseIntegralType(descriptor, curSppfNode) + "FloatingPointType" -> parseFloatingPointType(descriptor, curSppfNode) + "ClassOrInterfaceType" -> parseClassOrInterfaceType(descriptor, curSppfNode) + "TypeVariable" -> parseTypeVariable(descriptor, curSppfNode) + "ArrayType" -> parseArrayType(descriptor, curSppfNode) + "ClassType" -> parseClassType(descriptor, curSppfNode) + "InterfaceType" -> parseInterfaceType(descriptor, curSppfNode) + "TypeArguments" -> parseTypeArguments(descriptor, curSppfNode) + "Dims" -> parseDims(descriptor, curSppfNode) + "TypeParameter" -> parseTypeParameter(descriptor, curSppfNode) + "TypeParameterModifier" -> parseTypeParameterModifier(descriptor, curSppfNode) + "TypeBound" -> parseTypeBound(descriptor, curSppfNode) + "AdditionalBound" -> parseAdditionalBound(descriptor, curSppfNode) + "TypeArgumentList" -> parseTypeArgumentList(descriptor, curSppfNode) + "TypeArgument" -> parseTypeArgument(descriptor, curSppfNode) + "Wildcard" -> parseWildcard(descriptor, curSppfNode) + "WildcardBounds" -> parseWildcardBounds(descriptor, curSppfNode) + "TypeName" -> parseTypeName(descriptor, curSppfNode) + "PackageOrTypeName" -> parsePackageOrTypeName(descriptor, curSppfNode) + "ExpressionName" -> parseExpressionName(descriptor, curSppfNode) + "AmbiguousName" -> parseAmbiguousName(descriptor, curSppfNode) + "MethodName" -> parseMethodName(descriptor, curSppfNode) + "PackageName" -> parsePackageName(descriptor, curSppfNode) + "Result" -> parseResult(descriptor, curSppfNode) + "PackageDeclaration" -> parsePackageDeclaration(descriptor, curSppfNode) + "ImportDeclaration" -> parseImportDeclaration(descriptor, curSppfNode) + "TypeDeclaration" -> parseTypeDeclaration(descriptor, curSppfNode) + "PackageModifier" -> parsePackageModifier(descriptor, curSppfNode) + "SingleTypeImportDeclaration" -> parseSingleTypeImportDeclaration(descriptor, curSppfNode) + "TypeImportOnDemandDeclaration" -> parseTypeImportOnDemandDeclaration(descriptor, curSppfNode) + "SingleStaticImportDeclaration" -> parseSingleStaticImportDeclaration(descriptor, curSppfNode) + "StaticImportOnDemandDeclaration" -> parseStaticImportOnDemandDeclaration(descriptor, + curSppfNode) + "ClassDeclaration" -> parseClassDeclaration(descriptor, curSppfNode) + "InterfaceDeclaration" -> parseInterfaceDeclaration(descriptor, curSppfNode) + "Throws" -> parseThrows(descriptor, curSppfNode) + "NormalClassDeclaration" -> parseNormalClassDeclaration(descriptor, curSppfNode) + "EnumDeclaration" -> parseEnumDeclaration(descriptor, curSppfNode) + "ClassModifier" -> parseClassModifier(descriptor, curSppfNode) + "TypeParameters" -> parseTypeParameters(descriptor, curSppfNode) + "Superclass" -> parseSuperclass(descriptor, curSppfNode) + "Superinterfaces" -> parseSuperinterfaces(descriptor, curSppfNode) + "ClassBody" -> parseClassBody(descriptor, curSppfNode) + "TypeParameterList" -> parseTypeParameterList(descriptor, curSppfNode) + "InterfaceTypeList" -> parseInterfaceTypeList(descriptor, curSppfNode) + "ClassBodyDeclaration" -> parseClassBodyDeclaration(descriptor, curSppfNode) + "ClassMemberDeclaration" -> parseClassMemberDeclaration(descriptor, curSppfNode) + "InstanceInitializer" -> parseInstanceInitializer(descriptor, curSppfNode) + "StaticInitializer" -> parseStaticInitializer(descriptor, curSppfNode) + "ConstructorDeclaration" -> parseConstructorDeclaration(descriptor, curSppfNode) + "FieldDeclaration" -> parseFieldDeclaration(descriptor, curSppfNode) + "MethodDeclaration" -> parseMethodDeclaration(descriptor, curSppfNode) + "FieldModifier" -> parseFieldModifier(descriptor, curSppfNode) + "UnannType" -> parseUnannType(descriptor, curSppfNode) + "VariableDeclaratorList" -> parseVariableDeclaratorList(descriptor, curSppfNode) + "VariableDeclarator" -> parseVariableDeclarator(descriptor, curSppfNode) + "VariableDeclaratorId" -> parseVariableDeclaratorId(descriptor, curSppfNode) + "VariableInitializer" -> parseVariableInitializer(descriptor, curSppfNode) + "Expression" -> parseExpression(descriptor, curSppfNode) + "ArrayInitializer" -> parseArrayInitializer(descriptor, curSppfNode) + "UnannPrimitiveType" -> parseUnannPrimitiveType(descriptor, curSppfNode) + "UnannReferenceType" -> parseUnannReferenceType(descriptor, curSppfNode) + "UnannClassOrInterfaceType" -> parseUnannClassOrInterfaceType(descriptor, curSppfNode) + "UnannTypeVariable" -> parseUnannTypeVariable(descriptor, curSppfNode) + "UnannArrayType" -> parseUnannArrayType(descriptor, curSppfNode) + "UnannClassType" -> parseUnannClassType(descriptor, curSppfNode) + "UnannInterfaceType" -> parseUnannInterfaceType(descriptor, curSppfNode) + "MethodModifier" -> parseMethodModifier(descriptor, curSppfNode) + "MethodHeader" -> parseMethodHeader(descriptor, curSppfNode) + "MethodBody" -> parseMethodBody(descriptor, curSppfNode) + "MethodDeclarator" -> parseMethodDeclarator(descriptor, curSppfNode) + "FormalParameterList" -> parseFormalParameterList(descriptor, curSppfNode) + "ReceiverParameter" -> parseReceiverParameter(descriptor, curSppfNode) + "FormalParameters" -> parseFormalParameters(descriptor, curSppfNode) + "LastFormalParameter" -> parseLastFormalParameter(descriptor, curSppfNode) + "FormalParameter" -> parseFormalParameter(descriptor, curSppfNode) + "VariableModifier" -> parseVariableModifier(descriptor, curSppfNode) + "ExceptionTypeList" -> parseExceptionTypeList(descriptor, curSppfNode) + "ExceptionType" -> parseExceptionType(descriptor, curSppfNode) + "Block" -> parseBlock(descriptor, curSppfNode) + "ConstructorModifier" -> parseConstructorModifier(descriptor, curSppfNode) + "ConstructorDeclarator" -> parseConstructorDeclarator(descriptor, curSppfNode) + "ConstructorBody" -> parseConstructorBody(descriptor, curSppfNode) + "SimpleTypeName" -> parseSimpleTypeName(descriptor, curSppfNode) + "ExplicitConstructorInvocation" -> parseExplicitConstructorInvocation(descriptor, curSppfNode) + "EnumBody" -> parseEnumBody(descriptor, curSppfNode) + "EnumConstantList" -> parseEnumConstantList(descriptor, curSppfNode) + "EnumConstant" -> parseEnumConstant(descriptor, curSppfNode) + "EnumConstantModifier" -> parseEnumConstantModifier(descriptor, curSppfNode) + "EnumBodyDeclarations" -> parseEnumBodyDeclarations(descriptor, curSppfNode) + "BlockStatements" -> parseBlockStatements(descriptor, curSppfNode) + "ArgumentList" -> parseArgumentList(descriptor, curSppfNode) + "Primary" -> parsePrimary(descriptor, curSppfNode) + "NormalInterfaceDeclaration" -> parseNormalInterfaceDeclaration(descriptor, curSppfNode) + "InterfaceModifier" -> parseInterfaceModifier(descriptor, curSppfNode) + "ExtendsInterfaces" -> parseExtendsInterfaces(descriptor, curSppfNode) + "InterfaceBody" -> parseInterfaceBody(descriptor, curSppfNode) + "InterfaceMemberDeclaration" -> parseInterfaceMemberDeclaration(descriptor, curSppfNode) + "ConstantDeclaration" -> parseConstantDeclaration(descriptor, curSppfNode) + "ConstantModifier" -> parseConstantModifier(descriptor, curSppfNode) + "AnnotationTypeDeclaration" -> parseAnnotationTypeDeclaration(descriptor, curSppfNode) + "AnnotationTypeBody" -> parseAnnotationTypeBody(descriptor, curSppfNode) + "AnnotationTypeMemberDeclaration" -> parseAnnotationTypeMemberDeclaration(descriptor, + curSppfNode) + "AnnotationTypeElementDeclaration" -> parseAnnotationTypeElementDeclaration(descriptor, + curSppfNode) + "DefaultValue" -> parseDefaultValue(descriptor, curSppfNode) + "NormalAnnotation" -> parseNormalAnnotation(descriptor, curSppfNode) + "ElementValuePairList" -> parseElementValuePairList(descriptor, curSppfNode) + "ElementValuePair" -> parseElementValuePair(descriptor, curSppfNode) + "ElementValue" -> parseElementValue(descriptor, curSppfNode) + "ElementValueArrayInitializer" -> parseElementValueArrayInitializer(descriptor, curSppfNode) + "ElementValueList" -> parseElementValueList(descriptor, curSppfNode) + "MarkerAnnotation" -> parseMarkerAnnotation(descriptor, curSppfNode) + "SingleElementAnnotation" -> parseSingleElementAnnotation(descriptor, curSppfNode) + "InterfaceMethodDeclaration" -> parseInterfaceMethodDeclaration(descriptor, curSppfNode) + "AnnotationTypeElementModifier" -> parseAnnotationTypeElementModifier(descriptor, curSppfNode) + "ConditionalExpression" -> parseConditionalExpression(descriptor, curSppfNode) + "VariableInitializerList" -> parseVariableInitializerList(descriptor, curSppfNode) + "BlockStatement" -> parseBlockStatement(descriptor, curSppfNode) + "LocalVariableDeclarationStatement" -> parseLocalVariableDeclarationStatement(descriptor, + curSppfNode) + "LocalVariableDeclaration" -> parseLocalVariableDeclaration(descriptor, curSppfNode) + "Statement" -> parseStatement(descriptor, curSppfNode) + "StatementNoShortIf" -> parseStatementNoShortIf(descriptor, curSppfNode) + "StatementWithoutTrailingSubstatement" -> + parseStatementWithoutTrailingSubstatement(descriptor, curSppfNode) + "EmptyStatement" -> parseEmptyStatement(descriptor, curSppfNode) + "LabeledStatement" -> parseLabeledStatement(descriptor, curSppfNode) + "LabeledStatementNoShortIf" -> parseLabeledStatementNoShortIf(descriptor, curSppfNode) + "ExpressionStatement" -> parseExpressionStatement(descriptor, curSppfNode) + "StatementExpression" -> parseStatementExpression(descriptor, curSppfNode) + "IfThenStatement" -> parseIfThenStatement(descriptor, curSppfNode) + "IfThenElseStatement" -> parseIfThenElseStatement(descriptor, curSppfNode) + "IfThenElseStatementNoShortIf" -> parseIfThenElseStatementNoShortIf(descriptor, curSppfNode) + "AssertStatement" -> parseAssertStatement(descriptor, curSppfNode) + "SwitchStatement" -> parseSwitchStatement(descriptor, curSppfNode) + "SwitchBlock" -> parseSwitchBlock(descriptor, curSppfNode) + "SwitchBlockStatementGroup" -> parseSwitchBlockStatementGroup(descriptor, curSppfNode) + "SwitchLabels" -> parseSwitchLabels(descriptor, curSppfNode) + "SwitchLabel" -> parseSwitchLabel(descriptor, curSppfNode) + "EnumConstantName" -> parseEnumConstantName(descriptor, curSppfNode) + "WhileStatement" -> parseWhileStatement(descriptor, curSppfNode) + "WhileStatementNoShortIf" -> parseWhileStatementNoShortIf(descriptor, curSppfNode) + "DoStatement" -> parseDoStatement(descriptor, curSppfNode) + "InterfaceMethodModifier" -> parseInterfaceMethodModifier(descriptor, curSppfNode) + "ForStatement" -> parseForStatement(descriptor, curSppfNode) + "ForStatementNoShortIf" -> parseForStatementNoShortIf(descriptor, curSppfNode) + "BasicForStatement" -> parseBasicForStatement(descriptor, curSppfNode) + "BasicForStatementNoShortIf" -> parseBasicForStatementNoShortIf(descriptor, curSppfNode) + "ForInit" -> parseForInit(descriptor, curSppfNode) + "ForUpdate" -> parseForUpdate(descriptor, curSppfNode) + "StatementExpressionList" -> parseStatementExpressionList(descriptor, curSppfNode) + "EnhancedForStatement" -> parseEnhancedForStatement(descriptor, curSppfNode) + "EnhancedForStatementNoShortIf" -> parseEnhancedForStatementNoShortIf(descriptor, curSppfNode) + "BreakStatement" -> parseBreakStatement(descriptor, curSppfNode) + "ContinueStatement" -> parseContinueStatement(descriptor, curSppfNode) + "ReturnStatement" -> parseReturnStatement(descriptor, curSppfNode) + "ThrowStatement" -> parseThrowStatement(descriptor, curSppfNode) + "SynchronizedStatement" -> parseSynchronizedStatement(descriptor, curSppfNode) + "TryStatement" -> parseTryStatement(descriptor, curSppfNode) + "Catches" -> parseCatches(descriptor, curSppfNode) + "CatchClause" -> parseCatchClause(descriptor, curSppfNode) + "CatchFormalParameter" -> parseCatchFormalParameter(descriptor, curSppfNode) + "CatchType" -> parseCatchType(descriptor, curSppfNode) + "Finally" -> parseFinally(descriptor, curSppfNode) + "TryWithResourcesStatement" -> parseTryWithResourcesStatement(descriptor, curSppfNode) + "ResourceSpecification" -> parseResourceSpecification(descriptor, curSppfNode) + "ResourceList" -> parseResourceList(descriptor, curSppfNode) + "Resource" -> parseResource(descriptor, curSppfNode) + "PrimaryNoNewArray" -> parsePrimaryNoNewArray(descriptor, curSppfNode) + "ClassLiteral" -> parseClassLiteral(descriptor, curSppfNode) + "classOrInterfaceTypeToInstantiate" -> parseclassOrInterfaceTypeToInstantiate(descriptor, + curSppfNode) + "UnqualifiedClassInstanceCreationExpression" -> + parseUnqualifiedClassInstanceCreationExpression(descriptor, curSppfNode) + "ClassInstanceCreationExpression" -> parseClassInstanceCreationExpression(descriptor, + curSppfNode) + "FieldAccess" -> parseFieldAccess(descriptor, curSppfNode) + "TypeArgumentsOrDiamond" -> parseTypeArgumentsOrDiamond(descriptor, curSppfNode) + "ArrayAccess" -> parseArrayAccess(descriptor, curSppfNode) + "MethodInvocation" -> parseMethodInvocation(descriptor, curSppfNode) + "MethodReference" -> parseMethodReference(descriptor, curSppfNode) + "ArrayCreationExpression" -> parseArrayCreationExpression(descriptor, curSppfNode) + "DimExprs" -> parseDimExprs(descriptor, curSppfNode) + "DimExpr" -> parseDimExpr(descriptor, curSppfNode) + "LambdaExpression" -> parseLambdaExpression(descriptor, curSppfNode) + "LambdaParameters" -> parseLambdaParameters(descriptor, curSppfNode) + "InferredFormalParameterList" -> parseInferredFormalParameterList(descriptor, curSppfNode) + "LambdaBody" -> parseLambdaBody(descriptor, curSppfNode) + "AssignmentExpression" -> parseAssignmentExpression(descriptor, curSppfNode) + "Assignment" -> parseAssignment(descriptor, curSppfNode) + "LeftHandSide" -> parseLeftHandSide(descriptor, curSppfNode) + "AssignmentOperator" -> parseAssignmentOperator(descriptor, curSppfNode) + "ConditionalOrExpression" -> parseConditionalOrExpression(descriptor, curSppfNode) + "ConditionalAndExpression" -> parseConditionalAndExpression(descriptor, curSppfNode) + "InclusiveOrExpression" -> parseInclusiveOrExpression(descriptor, curSppfNode) + "ExclusiveOrExpression" -> parseExclusiveOrExpression(descriptor, curSppfNode) + "AndExpression" -> parseAndExpression(descriptor, curSppfNode) + "EqualityExpression" -> parseEqualityExpression(descriptor, curSppfNode) + "RelationalExpression" -> parseRelationalExpression(descriptor, curSppfNode) + "ShiftExpression" -> parseShiftExpression(descriptor, curSppfNode) + "AdditiveExpression" -> parseAdditiveExpression(descriptor, curSppfNode) + "MultiplicativeExpression" -> parseMultiplicativeExpression(descriptor, curSppfNode) + "PreIncrementExpression" -> parsePreIncrementExpression(descriptor, curSppfNode) + "PreDecrementExpression" -> parsePreDecrementExpression(descriptor, curSppfNode) + "UnaryExpressionNotPlusMinus" -> parseUnaryExpressionNotPlusMinus(descriptor, curSppfNode) + "UnaryExpression" -> parseUnaryExpression(descriptor, curSppfNode) + "PostfixExpression" -> parsePostfixExpression(descriptor, curSppfNode) + "PostIncrementExpression" -> parsePostIncrementExpression(descriptor, curSppfNode) + "PostDecrementExpression" -> parsePostDecrementExpression(descriptor, curSppfNode) + "CastExpression" -> parseCastExpression(descriptor, curSppfNode) + "ConstantExpression" -> parseConstantExpression(descriptor, curSppfNode) + } + } + + private fun parseCompilationUnit(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ImportDeclaration, + state.nonterminalEdges[ImportDeclaration]!!, curSppfNode) + handleNonterminalEdge(descriptor, TypeDeclaration, + state.nonterminalEdges[TypeDeclaration]!!, curSppfNode) + handleNonterminalEdge(descriptor, PackageDeclaration, + state.nonterminalEdges[PackageDeclaration]!!, curSppfNode) + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ImportDeclaration, + state.nonterminalEdges[ImportDeclaration]!!, curSppfNode) + handleNonterminalEdge(descriptor, TypeDeclaration, + state.nonterminalEdges[TypeDeclaration]!!, curSppfNode) + } + 2 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, TypeDeclaration, + state.nonterminalEdges[TypeDeclaration]!!, curSppfNode) + } + } + } + + private fun parseIdentifier(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.ID -> + handleTerminal(JavaToken.ID, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + } + } + } + + private fun parseLiteral(descriptor: Descriptor, curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.CHARLIT -> + handleTerminal(JavaToken.CHARLIT, state, inputEdge, descriptor, curSppfNode) + JavaToken.NULLLIT -> + handleTerminal(JavaToken.NULLLIT, state, inputEdge, descriptor, curSppfNode) + JavaToken.BOOLEANLIT -> + handleTerminal(JavaToken.BOOLEANLIT, state, inputEdge, descriptor, curSppfNode) + JavaToken.INTEGERLIT -> + handleTerminal(JavaToken.INTEGERLIT, state, inputEdge, descriptor, curSppfNode) + JavaToken.STRINGLIT -> + handleTerminal(JavaToken.STRINGLIT, state, inputEdge, descriptor, curSppfNode) + JavaToken.FLOATINGLIT -> + handleTerminal(JavaToken.FLOATINGLIT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + } + } + } + + private fun parseType(descriptor: Descriptor, curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, PrimitiveType, state.nonterminalEdges[PrimitiveType]!!, + curSppfNode) + handleNonterminalEdge(descriptor, ReferenceType, state.nonterminalEdges[ReferenceType]!!, + curSppfNode) + } + 1 -> + { + } + } + } + + private fun parsePrimitiveType(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.BOOLEAN -> + handleTerminal(JavaToken.BOOLEAN, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, NumericType, state.nonterminalEdges[NumericType]!!, + curSppfNode) + handleNonterminalEdge(descriptor, Annotation, state.nonterminalEdges[Annotation]!!, + curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseReferenceType(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ArrayType, state.nonterminalEdges[ArrayType]!!, + curSppfNode) + handleNonterminalEdge(descriptor, TypeVariable, state.nonterminalEdges[TypeVariable]!!, + curSppfNode) + handleNonterminalEdge(descriptor, ClassOrInterfaceType, + state.nonterminalEdges[ClassOrInterfaceType]!!, curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseAnnotation(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, MarkerAnnotation, + state.nonterminalEdges[MarkerAnnotation]!!, curSppfNode) + handleNonterminalEdge(descriptor, SingleElementAnnotation, + state.nonterminalEdges[SingleElementAnnotation]!!, curSppfNode) + handleNonterminalEdge(descriptor, NormalAnnotation, + state.nonterminalEdges[NormalAnnotation]!!, curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseNumericType(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, IntegralType, state.nonterminalEdges[IntegralType]!!, + curSppfNode) + handleNonterminalEdge(descriptor, FloatingPointType, + state.nonterminalEdges[FloatingPointType]!!, curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseIntegralType(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.BYTE -> + handleTerminal(JavaToken.BYTE, state, inputEdge, descriptor, curSppfNode) + JavaToken.SHORT -> + handleTerminal(JavaToken.SHORT, state, inputEdge, descriptor, curSppfNode) + JavaToken.INT -> + handleTerminal(JavaToken.INT, state, inputEdge, descriptor, curSppfNode) + JavaToken.LONG -> + handleTerminal(JavaToken.LONG, state, inputEdge, descriptor, curSppfNode) + JavaToken.CHAR -> + handleTerminal(JavaToken.CHAR, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + } + } + } + + private fun parseFloatingPointType(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.FLOAT -> + handleTerminal(JavaToken.FLOAT, state, inputEdge, descriptor, curSppfNode) + JavaToken.DOUBLE -> + handleTerminal(JavaToken.DOUBLE, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + } + } + } + + private fun parseClassOrInterfaceType(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, InterfaceType, state.nonterminalEdges[InterfaceType]!!, + curSppfNode) + handleNonterminalEdge(descriptor, ClassType, state.nonterminalEdges[ClassType]!!, + curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseTypeVariable(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + handleNonterminalEdge(descriptor, Annotation, state.nonterminalEdges[Annotation]!!, + curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseArrayType(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, TypeVariable, state.nonterminalEdges[TypeVariable]!!, + curSppfNode) + handleNonterminalEdge(descriptor, PrimitiveType, state.nonterminalEdges[PrimitiveType]!!, + curSppfNode) + handleNonterminalEdge(descriptor, ClassOrInterfaceType, + state.nonterminalEdges[ClassOrInterfaceType]!!, curSppfNode) + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Dims, state.nonterminalEdges[Dims]!!, curSppfNode) + } + 2 -> + { + } + } + } + + private fun parseClassType(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + handleNonterminalEdge(descriptor, ClassOrInterfaceType, + state.nonterminalEdges[ClassOrInterfaceType]!!, curSppfNode) + handleNonterminalEdge(descriptor, Annotation, state.nonterminalEdges[Annotation]!!, + curSppfNode) + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + handleNonterminalEdge(descriptor, Annotation, state.nonterminalEdges[Annotation]!!, + curSppfNode) + } + 2 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, TypeArguments, state.nonterminalEdges[TypeArguments]!!, + curSppfNode) + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.DOT -> + handleTerminal(JavaToken.DOT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 4 -> + { + } + } + } + + private fun parseInterfaceType(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ClassType, state.nonterminalEdges[ClassType]!!, + curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseTypeArguments(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.LT -> + handleTerminal(JavaToken.LT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, TypeArgumentList, + state.nonterminalEdges[TypeArgumentList]!!, curSppfNode) + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.GT -> + handleTerminal(JavaToken.GT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + } + } + } + + private fun parseDims(descriptor: Descriptor, curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.BRACKETLEFT -> + handleTerminal(JavaToken.BRACKETLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, Annotation, state.nonterminalEdges[Annotation]!!, + curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.BRACKETRIGHT -> + handleTerminal(JavaToken.BRACKETRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.BRACKETLEFT -> + handleTerminal(JavaToken.BRACKETLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, Annotation, state.nonterminalEdges[Annotation]!!, + curSppfNode) + } + } + } + + private fun parseTypeParameter(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + handleNonterminalEdge(descriptor, TypeParameterModifier, + state.nonterminalEdges[TypeParameterModifier]!!, curSppfNode) + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, TypeBound, state.nonterminalEdges[TypeBound]!!, + curSppfNode) + } + 2 -> + { + } + } + } + + private fun parseTypeParameterModifier(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Annotation, state.nonterminalEdges[Annotation]!!, + curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseTypeBound(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.EXTENDS -> + handleTerminal(JavaToken.EXTENDS, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, TypeVariable, state.nonterminalEdges[TypeVariable]!!, + curSppfNode) + handleNonterminalEdge(descriptor, ClassOrInterfaceType, + state.nonterminalEdges[ClassOrInterfaceType]!!, curSppfNode) + } + 2 -> + { + } + 3 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, AdditionalBound, + state.nonterminalEdges[AdditionalBound]!!, curSppfNode) + } + } + } + + private fun parseAdditionalBound(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.ANDBIT -> + handleTerminal(JavaToken.ANDBIT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, InterfaceType, state.nonterminalEdges[InterfaceType]!!, + curSppfNode) + } + 2 -> + { + } + } + } + + private fun parseTypeArgumentList(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, TypeArgument, state.nonterminalEdges[TypeArgument]!!, + curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.COMMA -> + handleTerminal(JavaToken.COMMA, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + } + } + + private fun parseTypeArgument(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Wildcard, state.nonterminalEdges[Wildcard]!!, curSppfNode) + handleNonterminalEdge(descriptor, ReferenceType, state.nonterminalEdges[ReferenceType]!!, + curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseWildcard(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.QUESTIONMARK -> + handleTerminal(JavaToken.QUESTIONMARK, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, Annotation, state.nonterminalEdges[Annotation]!!, + curSppfNode) + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, WildcardBounds, state.nonterminalEdges[WildcardBounds]!!, + curSppfNode) + } + 2 -> + { + } + } + } + + private fun parseWildcardBounds(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.EXTENDS -> + handleTerminal(JavaToken.EXTENDS, state, inputEdge, descriptor, curSppfNode) + JavaToken.SUPER -> + handleTerminal(JavaToken.SUPER, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ReferenceType, state.nonterminalEdges[ReferenceType]!!, + curSppfNode) + } + 2 -> + { + } + } + } + + private fun parseTypeName(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, PackageOrTypeName, + state.nonterminalEdges[PackageOrTypeName]!!, curSppfNode) + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + } + 1 -> + { + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.DOT -> + handleTerminal(JavaToken.DOT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + } + } + } + + private fun parsePackageOrTypeName(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, PackageOrTypeName, + state.nonterminalEdges[PackageOrTypeName]!!, curSppfNode) + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + } + 1 -> + { + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.DOT -> + handleTerminal(JavaToken.DOT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + } + } + } + + private fun parseExpressionName(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + handleNonterminalEdge(descriptor, AmbiguousName, state.nonterminalEdges[AmbiguousName]!!, + curSppfNode) + } + 1 -> + { + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.DOT -> + handleTerminal(JavaToken.DOT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + } + } + } + + private fun parseAmbiguousName(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + handleNonterminalEdge(descriptor, AmbiguousName, state.nonterminalEdges[AmbiguousName]!!, + curSppfNode) + } + 1 -> + { + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.DOT -> + handleTerminal(JavaToken.DOT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + } + } + } + + private fun parseMethodName(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + } + 1 -> + { + } + } + } + + private fun parsePackageName(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + handleNonterminalEdge(descriptor, PackageName, state.nonterminalEdges[PackageName]!!, + curSppfNode) + } + 1 -> + { + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.DOT -> + handleTerminal(JavaToken.DOT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + } + } + } + + private fun parseResult(descriptor: Descriptor, curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.VOID -> + handleTerminal(JavaToken.VOID, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, UnannType, state.nonterminalEdges[UnannType]!!, + curSppfNode) + } + 1 -> + { + } + } + } + + private fun parsePackageDeclaration(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PACKAGE -> + handleTerminal(JavaToken.PACKAGE, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, PackageModifier, + state.nonterminalEdges[PackageModifier]!!, curSppfNode) + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.DOT -> + handleTerminal(JavaToken.DOT, state, inputEdge, descriptor, curSppfNode) + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + } + } + } + + private fun parseImportDeclaration(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, TypeImportOnDemandDeclaration, + state.nonterminalEdges[TypeImportOnDemandDeclaration]!!, curSppfNode) + handleNonterminalEdge(descriptor, SingleTypeImportDeclaration, + state.nonterminalEdges[SingleTypeImportDeclaration]!!, curSppfNode) + handleNonterminalEdge(descriptor, SingleStaticImportDeclaration, + state.nonterminalEdges[SingleStaticImportDeclaration]!!, curSppfNode) + handleNonterminalEdge(descriptor, StaticImportOnDemandDeclaration, + state.nonterminalEdges[StaticImportOnDemandDeclaration]!!, curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseTypeDeclaration(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, ClassDeclaration, + state.nonterminalEdges[ClassDeclaration]!!, curSppfNode) + handleNonterminalEdge(descriptor, InterfaceDeclaration, + state.nonterminalEdges[InterfaceDeclaration]!!, curSppfNode) + } + 1 -> + { + } + } + } + + private fun parsePackageModifier(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Annotation, state.nonterminalEdges[Annotation]!!, + curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseSingleTypeImportDeclaration(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.IMPORT -> + handleTerminal(JavaToken.IMPORT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, TypeName, state.nonterminalEdges[TypeName]!!, curSppfNode) + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + } + } + } + + private fun parseTypeImportOnDemandDeclaration(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.IMPORT -> + handleTerminal(JavaToken.IMPORT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, PackageOrTypeName, + state.nonterminalEdges[PackageOrTypeName]!!, curSppfNode) + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.DOT -> + handleTerminal(JavaToken.DOT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.STAR -> + handleTerminal(JavaToken.STAR, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 4 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 5 -> + { + } + } + } + + private fun parseSingleStaticImportDeclaration(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.IMPORT -> + handleTerminal(JavaToken.IMPORT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.STATIC -> + handleTerminal(JavaToken.STATIC, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, TypeName, state.nonterminalEdges[TypeName]!!, curSppfNode) + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.DOT -> + handleTerminal(JavaToken.DOT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 4 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + } + 5 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 6 -> + { + } + } + } + + private fun parseStaticImportOnDemandDeclaration(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.IMPORT -> + handleTerminal(JavaToken.IMPORT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.STATIC -> + handleTerminal(JavaToken.STATIC, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, TypeName, state.nonterminalEdges[TypeName]!!, curSppfNode) + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.DOT -> + handleTerminal(JavaToken.DOT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 4 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.STAR -> + handleTerminal(JavaToken.STAR, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 5 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 6 -> + { + } + } + } + + private fun parseClassDeclaration(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, NormalClassDeclaration, + state.nonterminalEdges[NormalClassDeclaration]!!, curSppfNode) + handleNonterminalEdge(descriptor, EnumDeclaration, + state.nonterminalEdges[EnumDeclaration]!!, curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseInterfaceDeclaration(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, AnnotationTypeDeclaration, + state.nonterminalEdges[AnnotationTypeDeclaration]!!, curSppfNode) + handleNonterminalEdge(descriptor, NormalInterfaceDeclaration, + state.nonterminalEdges[NormalInterfaceDeclaration]!!, curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseThrows(descriptor: Descriptor, curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.THROWS -> + handleTerminal(JavaToken.THROWS, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ExceptionTypeList, + state.nonterminalEdges[ExceptionTypeList]!!, curSppfNode) + } + 2 -> + { + } + } + } + + private fun parseNormalClassDeclaration(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.CLASS -> + handleTerminal(JavaToken.CLASS, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, ClassModifier, state.nonterminalEdges[ClassModifier]!!, + curSppfNode) + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + } + 2 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Superclass, state.nonterminalEdges[Superclass]!!, + curSppfNode) + handleNonterminalEdge(descriptor, TypeParameters, state.nonterminalEdges[TypeParameters]!!, + curSppfNode) + handleNonterminalEdge(descriptor, Superinterfaces, + state.nonterminalEdges[Superinterfaces]!!, curSppfNode) + handleNonterminalEdge(descriptor, ClassBody, state.nonterminalEdges[ClassBody]!!, + curSppfNode) + } + 3 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Superclass, state.nonterminalEdges[Superclass]!!, + curSppfNode) + handleNonterminalEdge(descriptor, Superinterfaces, + state.nonterminalEdges[Superinterfaces]!!, curSppfNode) + handleNonterminalEdge(descriptor, ClassBody, state.nonterminalEdges[ClassBody]!!, + curSppfNode) + } + 4 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Superinterfaces, + state.nonterminalEdges[Superinterfaces]!!, curSppfNode) + handleNonterminalEdge(descriptor, ClassBody, state.nonterminalEdges[ClassBody]!!, + curSppfNode) + } + 5 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ClassBody, state.nonterminalEdges[ClassBody]!!, + curSppfNode) + } + 6 -> + { + } + } + } + + private fun parseEnumDeclaration(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.ENUM -> + handleTerminal(JavaToken.ENUM, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, ClassModifier, state.nonterminalEdges[ClassModifier]!!, + curSppfNode) + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + } + 2 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, EnumBody, state.nonterminalEdges[EnumBody]!!, curSppfNode) + handleNonterminalEdge(descriptor, Superinterfaces, + state.nonterminalEdges[Superinterfaces]!!, curSppfNode) + } + 3 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, EnumBody, state.nonterminalEdges[EnumBody]!!, curSppfNode) + } + 4 -> + { + } + } + } + + private fun parseClassModifier(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.STRICTFP -> + handleTerminal(JavaToken.STRICTFP, state, inputEdge, descriptor, curSppfNode) + JavaToken.PRIVATE -> + handleTerminal(JavaToken.PRIVATE, state, inputEdge, descriptor, curSppfNode) + JavaToken.ABSTRACT -> + handleTerminal(JavaToken.ABSTRACT, state, inputEdge, descriptor, curSppfNode) + JavaToken.FINAL -> + handleTerminal(JavaToken.FINAL, state, inputEdge, descriptor, curSppfNode) + JavaToken.STATIC -> + handleTerminal(JavaToken.STATIC, state, inputEdge, descriptor, curSppfNode) + JavaToken.PUBLIC -> + handleTerminal(JavaToken.PUBLIC, state, inputEdge, descriptor, curSppfNode) + JavaToken.PROTECTED -> + handleTerminal(JavaToken.PROTECTED, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, Annotation, state.nonterminalEdges[Annotation]!!, + curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseTypeParameters(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.LT -> + handleTerminal(JavaToken.LT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, TypeParameterList, + state.nonterminalEdges[TypeParameterList]!!, curSppfNode) + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.GT -> + handleTerminal(JavaToken.GT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + } + } + } + + private fun parseSuperclass(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.EXTENDS -> + handleTerminal(JavaToken.EXTENDS, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ClassType, state.nonterminalEdges[ClassType]!!, + curSppfNode) + } + 2 -> + { + } + } + } + + private fun parseSuperinterfaces(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.IMPLEMENTS -> + handleTerminal(JavaToken.IMPLEMENTS, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, InterfaceTypeList, + state.nonterminalEdges[InterfaceTypeList]!!, curSppfNode) + } + 2 -> + { + } + } + } + + private fun parseClassBody(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.CURLYLEFT -> + handleTerminal(JavaToken.CURLYLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.CURLYRIGHT -> + handleTerminal(JavaToken.CURLYRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, ClassBodyDeclaration, + state.nonterminalEdges[ClassBodyDeclaration]!!, curSppfNode) + } + 2 -> + { + } + } + } + + private fun parseTypeParameterList(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, TypeParameter, state.nonterminalEdges[TypeParameter]!!, + curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.COMMA -> + handleTerminal(JavaToken.COMMA, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + } + } + + private fun parseInterfaceTypeList(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, InterfaceType, state.nonterminalEdges[InterfaceType]!!, + curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.COMMA -> + handleTerminal(JavaToken.COMMA, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + } + } + + private fun parseClassBodyDeclaration(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, StaticInitializer, + state.nonterminalEdges[StaticInitializer]!!, curSppfNode) + handleNonterminalEdge(descriptor, ConstructorDeclaration, + state.nonterminalEdges[ConstructorDeclaration]!!, curSppfNode) + handleNonterminalEdge(descriptor, InstanceInitializer, + state.nonterminalEdges[InstanceInitializer]!!, curSppfNode) + handleNonterminalEdge(descriptor, ClassMemberDeclaration, + state.nonterminalEdges[ClassMemberDeclaration]!!, curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseClassMemberDeclaration(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, ClassDeclaration, + state.nonterminalEdges[ClassDeclaration]!!, curSppfNode) + handleNonterminalEdge(descriptor, MethodDeclaration, + state.nonterminalEdges[MethodDeclaration]!!, curSppfNode) + handleNonterminalEdge(descriptor, InterfaceDeclaration, + state.nonterminalEdges[InterfaceDeclaration]!!, curSppfNode) + handleNonterminalEdge(descriptor, FieldDeclaration, + state.nonterminalEdges[FieldDeclaration]!!, curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseInstanceInitializer(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Block, state.nonterminalEdges[Block]!!, curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseStaticInitializer(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.STATIC -> + handleTerminal(JavaToken.STATIC, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Block, state.nonterminalEdges[Block]!!, curSppfNode) + } + 2 -> + { + } + } + } + + private fun parseConstructorDeclaration(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ConstructorDeclarator, + state.nonterminalEdges[ConstructorDeclarator]!!, curSppfNode) + handleNonterminalEdge(descriptor, ConstructorModifier, + state.nonterminalEdges[ConstructorModifier]!!, curSppfNode) + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ConstructorBody, + state.nonterminalEdges[ConstructorBody]!!, curSppfNode) + handleNonterminalEdge(descriptor, Throws, state.nonterminalEdges[Throws]!!, curSppfNode) + } + 2 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ConstructorBody, + state.nonterminalEdges[ConstructorBody]!!, curSppfNode) + } + 3 -> + { + } + } + } + + private fun parseFieldDeclaration(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, UnannType, state.nonterminalEdges[UnannType]!!, + curSppfNode) + handleNonterminalEdge(descriptor, FieldModifier, state.nonterminalEdges[FieldModifier]!!, + curSppfNode) + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, VariableDeclaratorList, + state.nonterminalEdges[VariableDeclaratorList]!!, curSppfNode) + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + } + } + } + + private fun parseMethodDeclaration(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, MethodModifier, state.nonterminalEdges[MethodModifier]!!, + curSppfNode) + handleNonterminalEdge(descriptor, MethodHeader, state.nonterminalEdges[MethodHeader]!!, + curSppfNode) + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, MethodBody, state.nonterminalEdges[MethodBody]!!, + curSppfNode) + } + 2 -> + { + } + } + } + + private fun parseFieldModifier(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PRIVATE -> + handleTerminal(JavaToken.PRIVATE, state, inputEdge, descriptor, curSppfNode) + JavaToken.FINAL -> + handleTerminal(JavaToken.FINAL, state, inputEdge, descriptor, curSppfNode) + JavaToken.TRANSIENT -> + handleTerminal(JavaToken.TRANSIENT, state, inputEdge, descriptor, curSppfNode) + JavaToken.STATIC -> + handleTerminal(JavaToken.STATIC, state, inputEdge, descriptor, curSppfNode) + JavaToken.PUBLIC -> + handleTerminal(JavaToken.PUBLIC, state, inputEdge, descriptor, curSppfNode) + JavaToken.VOLATILE -> + handleTerminal(JavaToken.VOLATILE, state, inputEdge, descriptor, curSppfNode) + JavaToken.PROTECTED -> + handleTerminal(JavaToken.PROTECTED, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, Annotation, state.nonterminalEdges[Annotation]!!, + curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseUnannType(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, UnannPrimitiveType, + state.nonterminalEdges[UnannPrimitiveType]!!, curSppfNode) + handleNonterminalEdge(descriptor, UnannReferenceType, + state.nonterminalEdges[UnannReferenceType]!!, curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseVariableDeclaratorList(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, VariableDeclarator, + state.nonterminalEdges[VariableDeclarator]!!, curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.COMMA -> + handleTerminal(JavaToken.COMMA, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + } + } + + private fun parseVariableDeclarator(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, VariableDeclaratorId, + state.nonterminalEdges[VariableDeclaratorId]!!, curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.ASSIGN -> + handleTerminal(JavaToken.ASSIGN, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, VariableInitializer, + state.nonterminalEdges[VariableInitializer]!!, curSppfNode) + } + 3 -> + { + } + } + } + + private fun parseVariableDeclaratorId(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Dims, state.nonterminalEdges[Dims]!!, curSppfNode) + } + 2 -> + { + } + } + } + + private fun parseVariableInitializer(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Expression, state.nonterminalEdges[Expression]!!, + curSppfNode) + handleNonterminalEdge(descriptor, ArrayInitializer, + state.nonterminalEdges[ArrayInitializer]!!, curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseExpression(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, AssignmentExpression, + state.nonterminalEdges[AssignmentExpression]!!, curSppfNode) + handleNonterminalEdge(descriptor, LambdaExpression, + state.nonterminalEdges[LambdaExpression]!!, curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseArrayInitializer(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.CURLYLEFT -> + handleTerminal(JavaToken.CURLYLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.COMMA -> + handleTerminal(JavaToken.COMMA, state, inputEdge, descriptor, curSppfNode) + JavaToken.CURLYRIGHT -> + handleTerminal(JavaToken.CURLYRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, VariableInitializerList, + state.nonterminalEdges[VariableInitializerList]!!, curSppfNode) + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.COMMA -> + handleTerminal(JavaToken.COMMA, state, inputEdge, descriptor, curSppfNode) + JavaToken.CURLYRIGHT -> + handleTerminal(JavaToken.CURLYRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.CURLYRIGHT -> + handleTerminal(JavaToken.CURLYRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 4 -> + { + } + } + } + + private fun parseUnannPrimitiveType(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.BOOLEAN -> + handleTerminal(JavaToken.BOOLEAN, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, NumericType, state.nonterminalEdges[NumericType]!!, + curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseUnannReferenceType(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, UnannClassOrInterfaceType, + state.nonterminalEdges[UnannClassOrInterfaceType]!!, curSppfNode) + handleNonterminalEdge(descriptor, UnannArrayType, state.nonterminalEdges[UnannArrayType]!!, + curSppfNode) + handleNonterminalEdge(descriptor, UnannTypeVariable, + state.nonterminalEdges[UnannTypeVariable]!!, curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseUnannClassOrInterfaceType(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, UnannInterfaceType, + state.nonterminalEdges[UnannInterfaceType]!!, curSppfNode) + handleNonterminalEdge(descriptor, UnannClassType, state.nonterminalEdges[UnannClassType]!!, + curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseUnannTypeVariable(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseUnannArrayType(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, UnannClassOrInterfaceType, + state.nonterminalEdges[UnannClassOrInterfaceType]!!, curSppfNode) + handleNonterminalEdge(descriptor, UnannPrimitiveType, + state.nonterminalEdges[UnannPrimitiveType]!!, curSppfNode) + handleNonterminalEdge(descriptor, UnannTypeVariable, + state.nonterminalEdges[UnannTypeVariable]!!, curSppfNode) + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Dims, state.nonterminalEdges[Dims]!!, curSppfNode) + } + 2 -> + { + } + } + } + + private fun parseUnannClassType(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + handleNonterminalEdge(descriptor, UnannClassOrInterfaceType, + state.nonterminalEdges[UnannClassOrInterfaceType]!!, curSppfNode) + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, TypeArguments, state.nonterminalEdges[TypeArguments]!!, + curSppfNode) + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.DOT -> + handleTerminal(JavaToken.DOT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + handleNonterminalEdge(descriptor, Annotation, state.nonterminalEdges[Annotation]!!, + curSppfNode) + } + 4 -> + { + } + } + } + + private fun parseUnannInterfaceType(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, UnannClassType, state.nonterminalEdges[UnannClassType]!!, + curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseMethodModifier(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.STRICTFP -> + handleTerminal(JavaToken.STRICTFP, state, inputEdge, descriptor, curSppfNode) + JavaToken.PRIVATE -> + handleTerminal(JavaToken.PRIVATE, state, inputEdge, descriptor, curSppfNode) + JavaToken.ABSTRACT -> + handleTerminal(JavaToken.ABSTRACT, state, inputEdge, descriptor, curSppfNode) + JavaToken.FINAL -> + handleTerminal(JavaToken.FINAL, state, inputEdge, descriptor, curSppfNode) + JavaToken.STATIC -> + handleTerminal(JavaToken.STATIC, state, inputEdge, descriptor, curSppfNode) + JavaToken.NATIVE -> + handleTerminal(JavaToken.NATIVE, state, inputEdge, descriptor, curSppfNode) + JavaToken.PUBLIC -> + handleTerminal(JavaToken.PUBLIC, state, inputEdge, descriptor, curSppfNode) + JavaToken.PROTECTED -> + handleTerminal(JavaToken.PROTECTED, state, inputEdge, descriptor, curSppfNode) + JavaToken.SYNCHRONIZED -> + handleTerminal(JavaToken.SYNCHRONIZED, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, Annotation, state.nonterminalEdges[Annotation]!!, + curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseMethodHeader(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, TypeParameters, state.nonterminalEdges[TypeParameters]!!, + curSppfNode) + handleNonterminalEdge(descriptor, Result, state.nonterminalEdges[Result]!!, curSppfNode) + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, MethodDeclarator, + state.nonterminalEdges[MethodDeclarator]!!, curSppfNode) + } + 2 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Annotation, state.nonterminalEdges[Annotation]!!, + curSppfNode) + handleNonterminalEdge(descriptor, Result, state.nonterminalEdges[Result]!!, curSppfNode) + } + 3 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Throws, state.nonterminalEdges[Throws]!!, curSppfNode) + } + 4 -> + { + } + } + } + + private fun parseMethodBody(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, Block, state.nonterminalEdges[Block]!!, curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseMethodDeclarator(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHLEFT -> + handleTerminal(JavaToken.PARENTHLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, FormalParameterList, + state.nonterminalEdges[FormalParameterList]!!, curSppfNode) + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 4 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Dims, state.nonterminalEdges[Dims]!!, curSppfNode) + } + 5 -> + { + } + } + } + + private fun parseFormalParameterList(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ReceiverParameter, + state.nonterminalEdges[ReceiverParameter]!!, curSppfNode) + handleNonterminalEdge(descriptor, LastFormalParameter, + state.nonterminalEdges[LastFormalParameter]!!, curSppfNode) + handleNonterminalEdge(descriptor, FormalParameters, + state.nonterminalEdges[FormalParameters]!!, curSppfNode) + } + 1 -> + { + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.COMMA -> + handleTerminal(JavaToken.COMMA, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, LastFormalParameter, + state.nonterminalEdges[LastFormalParameter]!!, curSppfNode) + } + } + } + + private fun parseReceiverParameter(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, UnannType, state.nonterminalEdges[UnannType]!!, + curSppfNode) + handleNonterminalEdge(descriptor, Annotation, state.nonterminalEdges[Annotation]!!, + curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.THIS -> + handleTerminal(JavaToken.THIS, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.DOT -> + handleTerminal(JavaToken.DOT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + } + 4 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.THIS -> + handleTerminal(JavaToken.THIS, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + } + } + + private fun parseFormalParameters(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, FormalParameter, + state.nonterminalEdges[FormalParameter]!!, curSppfNode) + handleNonterminalEdge(descriptor, ReceiverParameter, + state.nonterminalEdges[ReceiverParameter]!!, curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.COMMA -> + handleTerminal(JavaToken.COMMA, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, FormalParameter, + state.nonterminalEdges[FormalParameter]!!, curSppfNode) + } + } + } + + private fun parseLastFormalParameter(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, FormalParameter, + state.nonterminalEdges[FormalParameter]!!, curSppfNode) + handleNonterminalEdge(descriptor, UnannType, state.nonterminalEdges[UnannType]!!, + curSppfNode) + handleNonterminalEdge(descriptor, VariableModifier, + state.nonterminalEdges[VariableModifier]!!, curSppfNode) + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, UnannType, state.nonterminalEdges[UnannType]!!, + curSppfNode) + handleNonterminalEdge(descriptor, VariableModifier, + state.nonterminalEdges[VariableModifier]!!, curSppfNode) + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.ELLIPSIS -> + handleTerminal(JavaToken.ELLIPSIS, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, Annotation, state.nonterminalEdges[Annotation]!!, + curSppfNode) + } + 3 -> + { + } + 4 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, VariableDeclaratorId, + state.nonterminalEdges[VariableDeclaratorId]!!, curSppfNode) + } + } + } + + private fun parseFormalParameter(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, UnannType, state.nonterminalEdges[UnannType]!!, + curSppfNode) + handleNonterminalEdge(descriptor, VariableModifier, + state.nonterminalEdges[VariableModifier]!!, curSppfNode) + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, VariableDeclaratorId, + state.nonterminalEdges[VariableDeclaratorId]!!, curSppfNode) + } + 2 -> + { + } + } + } + + private fun parseVariableModifier(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.FINAL -> + handleTerminal(JavaToken.FINAL, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, Annotation, state.nonterminalEdges[Annotation]!!, + curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseExceptionTypeList(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ExceptionType, state.nonterminalEdges[ExceptionType]!!, + curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.COMMA -> + handleTerminal(JavaToken.COMMA, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + } + } + + private fun parseExceptionType(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, TypeVariable, state.nonterminalEdges[TypeVariable]!!, + curSppfNode) + handleNonterminalEdge(descriptor, ClassType, state.nonterminalEdges[ClassType]!!, + curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseBlock(descriptor: Descriptor, curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.CURLYLEFT -> + handleTerminal(JavaToken.CURLYLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.CURLYRIGHT -> + handleTerminal(JavaToken.CURLYRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, BlockStatements, + state.nonterminalEdges[BlockStatements]!!, curSppfNode) + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.CURLYRIGHT -> + handleTerminal(JavaToken.CURLYRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + } + } + } + + private fun parseConstructorModifier(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PRIVATE -> + handleTerminal(JavaToken.PRIVATE, state, inputEdge, descriptor, curSppfNode) + JavaToken.PUBLIC -> + handleTerminal(JavaToken.PUBLIC, state, inputEdge, descriptor, curSppfNode) + JavaToken.PROTECTED -> + handleTerminal(JavaToken.PROTECTED, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, Annotation, state.nonterminalEdges[Annotation]!!, + curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseConstructorDeclarator(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, TypeParameters, state.nonterminalEdges[TypeParameters]!!, + curSppfNode) + handleNonterminalEdge(descriptor, SimpleTypeName, state.nonterminalEdges[SimpleTypeName]!!, + curSppfNode) + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, SimpleTypeName, state.nonterminalEdges[SimpleTypeName]!!, + curSppfNode) + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHLEFT -> + handleTerminal(JavaToken.PARENTHLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, FormalParameterList, + state.nonterminalEdges[FormalParameterList]!!, curSppfNode) + } + 4 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 5 -> + { + } + } + } + + private fun parseConstructorBody(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.CURLYLEFT -> + handleTerminal(JavaToken.CURLYLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.CURLYRIGHT -> + handleTerminal(JavaToken.CURLYRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, ExplicitConstructorInvocation, + state.nonterminalEdges[ExplicitConstructorInvocation]!!, curSppfNode) + handleNonterminalEdge(descriptor, BlockStatements, + state.nonterminalEdges[BlockStatements]!!, curSppfNode) + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.CURLYRIGHT -> + handleTerminal(JavaToken.CURLYRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, BlockStatements, + state.nonterminalEdges[BlockStatements]!!, curSppfNode) + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.CURLYRIGHT -> + handleTerminal(JavaToken.CURLYRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 4 -> + { + } + } + } + + private fun parseSimpleTypeName(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseExplicitConstructorInvocation(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.THIS -> + handleTerminal(JavaToken.THIS, state, inputEdge, descriptor, curSppfNode) + JavaToken.SUPER -> + handleTerminal(JavaToken.SUPER, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, TypeArguments, state.nonterminalEdges[TypeArguments]!!, + curSppfNode) + handleNonterminalEdge(descriptor, Primary, state.nonterminalEdges[Primary]!!, curSppfNode) + handleNonterminalEdge(descriptor, ExpressionName, state.nonterminalEdges[ExpressionName]!!, + curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.THIS -> + handleTerminal(JavaToken.THIS, state, inputEdge, descriptor, curSppfNode) + JavaToken.SUPER -> + handleTerminal(JavaToken.SUPER, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHLEFT -> + handleTerminal(JavaToken.PARENTHLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.DOT -> + handleTerminal(JavaToken.DOT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 4 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SUPER -> + handleTerminal(JavaToken.SUPER, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, TypeArguments, state.nonterminalEdges[TypeArguments]!!, + curSppfNode) + } + 5 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SUPER -> + handleTerminal(JavaToken.SUPER, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 6 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, ArgumentList, state.nonterminalEdges[ArgumentList]!!, + curSppfNode) + } + 7 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 8 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 9 -> + { + } + } + } + + private fun parseEnumBody(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.CURLYLEFT -> + handleTerminal(JavaToken.CURLYLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.COMMA -> + handleTerminal(JavaToken.COMMA, state, inputEdge, descriptor, curSppfNode) + JavaToken.CURLYRIGHT -> + handleTerminal(JavaToken.CURLYRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, EnumConstantList, + state.nonterminalEdges[EnumConstantList]!!, curSppfNode) + handleNonterminalEdge(descriptor, EnumBodyDeclarations, + state.nonterminalEdges[EnumBodyDeclarations]!!, curSppfNode) + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.COMMA -> + handleTerminal(JavaToken.COMMA, state, inputEdge, descriptor, curSppfNode) + JavaToken.CURLYRIGHT -> + handleTerminal(JavaToken.CURLYRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, EnumBodyDeclarations, + state.nonterminalEdges[EnumBodyDeclarations]!!, curSppfNode) + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.CURLYRIGHT -> + handleTerminal(JavaToken.CURLYRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, EnumBodyDeclarations, + state.nonterminalEdges[EnumBodyDeclarations]!!, curSppfNode) + } + 4 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.CURLYRIGHT -> + handleTerminal(JavaToken.CURLYRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 5 -> + { + } + } + } + + private fun parseEnumConstantList(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, EnumConstant, state.nonterminalEdges[EnumConstant]!!, + curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.COMMA -> + handleTerminal(JavaToken.COMMA, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + } + } + + private fun parseEnumConstant(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, EnumConstantModifier, + state.nonterminalEdges[EnumConstantModifier]!!, curSppfNode) + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHLEFT -> + handleTerminal(JavaToken.PARENTHLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, ArgumentList, state.nonterminalEdges[ArgumentList]!!, + curSppfNode) + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 4 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ClassBody, state.nonterminalEdges[ClassBody]!!, + curSppfNode) + } + 5 -> + { + } + } + } + + private fun parseEnumConstantModifier(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Annotation, state.nonterminalEdges[Annotation]!!, + curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseEnumBodyDeclarations(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ClassBodyDeclaration, + state.nonterminalEdges[ClassBodyDeclaration]!!, curSppfNode) + } + } + } + + private fun parseBlockStatements(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, BlockStatement, state.nonterminalEdges[BlockStatement]!!, + curSppfNode) + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, BlockStatement, state.nonterminalEdges[BlockStatement]!!, + curSppfNode) + } + } + } + + private fun parseArgumentList(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Expression, state.nonterminalEdges[Expression]!!, + curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.COMMA -> + handleTerminal(JavaToken.COMMA, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + } + } + + private fun parsePrimary(descriptor: Descriptor, curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, PrimaryNoNewArray, + state.nonterminalEdges[PrimaryNoNewArray]!!, curSppfNode) + handleNonterminalEdge(descriptor, ArrayCreationExpression, + state.nonterminalEdges[ArrayCreationExpression]!!, curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseNormalInterfaceDeclaration(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.INTERFACE -> + handleTerminal(JavaToken.INTERFACE, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, InterfaceModifier, + state.nonterminalEdges[InterfaceModifier]!!, curSppfNode) + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + } + 2 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, InterfaceBody, state.nonterminalEdges[InterfaceBody]!!, + curSppfNode) + handleNonterminalEdge(descriptor, TypeParameters, state.nonterminalEdges[TypeParameters]!!, + curSppfNode) + handleNonterminalEdge(descriptor, ExtendsInterfaces, + state.nonterminalEdges[ExtendsInterfaces]!!, curSppfNode) + } + 3 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, InterfaceBody, state.nonterminalEdges[InterfaceBody]!!, + curSppfNode) + handleNonterminalEdge(descriptor, ExtendsInterfaces, + state.nonterminalEdges[ExtendsInterfaces]!!, curSppfNode) + } + 4 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, InterfaceBody, state.nonterminalEdges[InterfaceBody]!!, + curSppfNode) + } + 5 -> + { + } + } + } + + private fun parseInterfaceModifier(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.STRICTFP -> + handleTerminal(JavaToken.STRICTFP, state, inputEdge, descriptor, curSppfNode) + JavaToken.PRIVATE -> + handleTerminal(JavaToken.PRIVATE, state, inputEdge, descriptor, curSppfNode) + JavaToken.ABSTRACT -> + handleTerminal(JavaToken.ABSTRACT, state, inputEdge, descriptor, curSppfNode) + JavaToken.STATIC -> + handleTerminal(JavaToken.STATIC, state, inputEdge, descriptor, curSppfNode) + JavaToken.PUBLIC -> + handleTerminal(JavaToken.PUBLIC, state, inputEdge, descriptor, curSppfNode) + JavaToken.PROTECTED -> + handleTerminal(JavaToken.PROTECTED, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, Annotation, state.nonterminalEdges[Annotation]!!, + curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseExtendsInterfaces(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.EXTENDS -> + handleTerminal(JavaToken.EXTENDS, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, InterfaceTypeList, + state.nonterminalEdges[InterfaceTypeList]!!, curSppfNode) + } + 2 -> + { + } + } + } + + private fun parseInterfaceBody(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.CURLYLEFT -> + handleTerminal(JavaToken.CURLYLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.CURLYRIGHT -> + handleTerminal(JavaToken.CURLYRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, InterfaceMemberDeclaration, + state.nonterminalEdges[InterfaceMemberDeclaration]!!, curSppfNode) + } + 2 -> + { + } + } + } + + private fun parseInterfaceMemberDeclaration(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, InterfaceMethodDeclaration, + state.nonterminalEdges[InterfaceMethodDeclaration]!!, curSppfNode) + handleNonterminalEdge(descriptor, ClassDeclaration, + state.nonterminalEdges[ClassDeclaration]!!, curSppfNode) + handleNonterminalEdge(descriptor, ConstantDeclaration, + state.nonterminalEdges[ConstantDeclaration]!!, curSppfNode) + handleNonterminalEdge(descriptor, InterfaceDeclaration, + state.nonterminalEdges[InterfaceDeclaration]!!, curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseConstantDeclaration(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ConstantModifier, + state.nonterminalEdges[ConstantModifier]!!, curSppfNode) + handleNonterminalEdge(descriptor, UnannType, state.nonterminalEdges[UnannType]!!, + curSppfNode) + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, VariableDeclaratorList, + state.nonterminalEdges[VariableDeclaratorList]!!, curSppfNode) + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + } + } + } + + private fun parseConstantModifier(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.FINAL -> + handleTerminal(JavaToken.FINAL, state, inputEdge, descriptor, curSppfNode) + JavaToken.STATIC -> + handleTerminal(JavaToken.STATIC, state, inputEdge, descriptor, curSppfNode) + JavaToken.PUBLIC -> + handleTerminal(JavaToken.PUBLIC, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, Annotation, state.nonterminalEdges[Annotation]!!, + curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseAnnotationTypeDeclaration(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.AT -> + handleTerminal(JavaToken.AT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, InterfaceModifier, + state.nonterminalEdges[InterfaceModifier]!!, curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.INTERFACE -> + handleTerminal(JavaToken.INTERFACE, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + } + 3 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, AnnotationTypeBody, + state.nonterminalEdges[AnnotationTypeBody]!!, curSppfNode) + } + 4 -> + { + } + } + } + + private fun parseAnnotationTypeBody(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.CURLYLEFT -> + handleTerminal(JavaToken.CURLYLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.CURLYRIGHT -> + handleTerminal(JavaToken.CURLYRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, AnnotationTypeMemberDeclaration, + state.nonterminalEdges[AnnotationTypeMemberDeclaration]!!, curSppfNode) + } + 2 -> + { + } + } + } + + private fun parseAnnotationTypeMemberDeclaration(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, AnnotationTypeElementDeclaration, + state.nonterminalEdges[AnnotationTypeElementDeclaration]!!, curSppfNode) + handleNonterminalEdge(descriptor, ClassDeclaration, + state.nonterminalEdges[ClassDeclaration]!!, curSppfNode) + handleNonterminalEdge(descriptor, ConstantDeclaration, + state.nonterminalEdges[ConstantDeclaration]!!, curSppfNode) + handleNonterminalEdge(descriptor, InterfaceDeclaration, + state.nonterminalEdges[InterfaceDeclaration]!!, curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseAnnotationTypeElementDeclaration(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, UnannType, state.nonterminalEdges[UnannType]!!, + curSppfNode) + handleNonterminalEdge(descriptor, AnnotationTypeElementModifier, + state.nonterminalEdges[AnnotationTypeElementModifier]!!, curSppfNode) + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHLEFT -> + handleTerminal(JavaToken.PARENTHLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 4 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, DefaultValue, state.nonterminalEdges[DefaultValue]!!, + curSppfNode) + handleNonterminalEdge(descriptor, Dims, state.nonterminalEdges[Dims]!!, curSppfNode) + } + 5 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, DefaultValue, state.nonterminalEdges[DefaultValue]!!, + curSppfNode) + } + 6 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 7 -> + { + } + } + } + + private fun parseDefaultValue(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.DEFAULT -> + handleTerminal(JavaToken.DEFAULT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ElementValue, state.nonterminalEdges[ElementValue]!!, + curSppfNode) + } + 2 -> + { + } + } + } + + private fun parseNormalAnnotation(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.AT -> + handleTerminal(JavaToken.AT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, TypeName, state.nonterminalEdges[TypeName]!!, curSppfNode) + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHLEFT -> + handleTerminal(JavaToken.PARENTHLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, ElementValuePairList, + state.nonterminalEdges[ElementValuePairList]!!, curSppfNode) + } + 4 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 5 -> + { + } + } + } + + private fun parseElementValuePairList(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ElementValuePair, + state.nonterminalEdges[ElementValuePair]!!, curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.COMMA -> + handleTerminal(JavaToken.COMMA, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + } + } + + private fun parseElementValuePair(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.ASSIGN -> + handleTerminal(JavaToken.ASSIGN, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ElementValue, state.nonterminalEdges[ElementValue]!!, + curSppfNode) + } + 3 -> + { + } + } + } + + private fun parseElementValue(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ElementValueArrayInitializer, + state.nonterminalEdges[ElementValueArrayInitializer]!!, curSppfNode) + handleNonterminalEdge(descriptor, ConditionalExpression, + state.nonterminalEdges[ConditionalExpression]!!, curSppfNode) + handleNonterminalEdge(descriptor, Annotation, state.nonterminalEdges[Annotation]!!, + curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseElementValueArrayInitializer(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.CURLYLEFT -> + handleTerminal(JavaToken.CURLYLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.COMMA -> + handleTerminal(JavaToken.COMMA, state, inputEdge, descriptor, curSppfNode) + JavaToken.CURLYRIGHT -> + handleTerminal(JavaToken.CURLYRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, ElementValueList, + state.nonterminalEdges[ElementValueList]!!, curSppfNode) + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.COMMA -> + handleTerminal(JavaToken.COMMA, state, inputEdge, descriptor, curSppfNode) + JavaToken.CURLYRIGHT -> + handleTerminal(JavaToken.CURLYRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.CURLYRIGHT -> + handleTerminal(JavaToken.CURLYRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 4 -> + { + } + } + } + + private fun parseElementValueList(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ElementValue, state.nonterminalEdges[ElementValue]!!, + curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.COMMA -> + handleTerminal(JavaToken.COMMA, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + } + } + + private fun parseMarkerAnnotation(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.AT -> + handleTerminal(JavaToken.AT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, TypeName, state.nonterminalEdges[TypeName]!!, curSppfNode) + } + 2 -> + { + } + } + } + + private fun parseSingleElementAnnotation(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.AT -> + handleTerminal(JavaToken.AT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, TypeName, state.nonterminalEdges[TypeName]!!, curSppfNode) + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHLEFT -> + handleTerminal(JavaToken.PARENTHLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ElementValue, state.nonterminalEdges[ElementValue]!!, + curSppfNode) + } + 4 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 5 -> + { + } + } + } + + private fun parseInterfaceMethodDeclaration(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, InterfaceMethodModifier, + state.nonterminalEdges[InterfaceMethodModifier]!!, curSppfNode) + handleNonterminalEdge(descriptor, MethodHeader, state.nonterminalEdges[MethodHeader]!!, + curSppfNode) + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, MethodBody, state.nonterminalEdges[MethodBody]!!, + curSppfNode) + } + 2 -> + { + } + } + } + + private fun parseAnnotationTypeElementModifier(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.ABSTRACT -> + handleTerminal(JavaToken.ABSTRACT, state, inputEdge, descriptor, curSppfNode) + JavaToken.PUBLIC -> + handleTerminal(JavaToken.PUBLIC, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, Annotation, state.nonterminalEdges[Annotation]!!, + curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseConditionalExpression(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ConditionalOrExpression, + state.nonterminalEdges[ConditionalOrExpression]!!, curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.QUESTIONMARK -> + handleTerminal(JavaToken.QUESTIONMARK, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Expression, state.nonterminalEdges[Expression]!!, + curSppfNode) + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.COLON -> + handleTerminal(JavaToken.COLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 4 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ConditionalExpression, + state.nonterminalEdges[ConditionalExpression]!!, curSppfNode) + handleNonterminalEdge(descriptor, LambdaExpression, + state.nonterminalEdges[LambdaExpression]!!, curSppfNode) + } + 5 -> + { + } + } + } + + private fun parseVariableInitializerList(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, VariableInitializer, + state.nonterminalEdges[VariableInitializer]!!, curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.COMMA -> + handleTerminal(JavaToken.COMMA, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + } + } + + private fun parseBlockStatement(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ClassDeclaration, + state.nonterminalEdges[ClassDeclaration]!!, curSppfNode) + handleNonterminalEdge(descriptor, Statement, state.nonterminalEdges[Statement]!!, + curSppfNode) + handleNonterminalEdge(descriptor, LocalVariableDeclarationStatement, + state.nonterminalEdges[LocalVariableDeclarationStatement]!!, curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseLocalVariableDeclarationStatement(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, LocalVariableDeclaration, + state.nonterminalEdges[LocalVariableDeclaration]!!, curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + } + } + } + + private fun parseLocalVariableDeclaration(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, UnannType, state.nonterminalEdges[UnannType]!!, + curSppfNode) + handleNonterminalEdge(descriptor, VariableModifier, + state.nonterminalEdges[VariableModifier]!!, curSppfNode) + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, VariableDeclaratorList, + state.nonterminalEdges[VariableDeclaratorList]!!, curSppfNode) + } + 2 -> + { + } + } + } + + private fun parseStatement(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, LabeledStatement, + state.nonterminalEdges[LabeledStatement]!!, curSppfNode) + handleNonterminalEdge(descriptor, StatementWithoutTrailingSubstatement, + state.nonterminalEdges[StatementWithoutTrailingSubstatement]!!, curSppfNode) + handleNonterminalEdge(descriptor, IfThenElseStatement, + state.nonterminalEdges[IfThenElseStatement]!!, curSppfNode) + handleNonterminalEdge(descriptor, WhileStatement, state.nonterminalEdges[WhileStatement]!!, + curSppfNode) + handleNonterminalEdge(descriptor, ForStatement, state.nonterminalEdges[ForStatement]!!, + curSppfNode) + handleNonterminalEdge(descriptor, IfThenStatement, + state.nonterminalEdges[IfThenStatement]!!, curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseStatementNoShortIf(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, WhileStatementNoShortIf, + state.nonterminalEdges[WhileStatementNoShortIf]!!, curSppfNode) + handleNonterminalEdge(descriptor, StatementWithoutTrailingSubstatement, + state.nonterminalEdges[StatementWithoutTrailingSubstatement]!!, curSppfNode) + handleNonterminalEdge(descriptor, LabeledStatementNoShortIf, + state.nonterminalEdges[LabeledStatementNoShortIf]!!, curSppfNode) + handleNonterminalEdge(descriptor, IfThenElseStatementNoShortIf, + state.nonterminalEdges[IfThenElseStatementNoShortIf]!!, curSppfNode) + handleNonterminalEdge(descriptor, ForStatementNoShortIf, + state.nonterminalEdges[ForStatementNoShortIf]!!, curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseStatementWithoutTrailingSubstatement(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, BreakStatement, state.nonterminalEdges[BreakStatement]!!, + curSppfNode) + handleNonterminalEdge(descriptor, SwitchStatement, + state.nonterminalEdges[SwitchStatement]!!, curSppfNode) + handleNonterminalEdge(descriptor, DoStatement, state.nonterminalEdges[DoStatement]!!, + curSppfNode) + handleNonterminalEdge(descriptor, TryStatement, state.nonterminalEdges[TryStatement]!!, + curSppfNode) + handleNonterminalEdge(descriptor, ExpressionStatement, + state.nonterminalEdges[ExpressionStatement]!!, curSppfNode) + handleNonterminalEdge(descriptor, EmptyStatement, state.nonterminalEdges[EmptyStatement]!!, + curSppfNode) + handleNonterminalEdge(descriptor, AssertStatement, + state.nonterminalEdges[AssertStatement]!!, curSppfNode) + handleNonterminalEdge(descriptor, ReturnStatement, + state.nonterminalEdges[ReturnStatement]!!, curSppfNode) + handleNonterminalEdge(descriptor, Block, state.nonterminalEdges[Block]!!, curSppfNode) + handleNonterminalEdge(descriptor, ThrowStatement, state.nonterminalEdges[ThrowStatement]!!, + curSppfNode) + handleNonterminalEdge(descriptor, SynchronizedStatement, + state.nonterminalEdges[SynchronizedStatement]!!, curSppfNode) + handleNonterminalEdge(descriptor, ContinueStatement, + state.nonterminalEdges[ContinueStatement]!!, curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseEmptyStatement(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + } + } + } + + private fun parseLabeledStatement(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.COLON -> + handleTerminal(JavaToken.COLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Statement, state.nonterminalEdges[Statement]!!, + curSppfNode) + } + 3 -> + { + } + } + } + + private fun parseLabeledStatementNoShortIf(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.COLON -> + handleTerminal(JavaToken.COLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, StatementNoShortIf, + state.nonterminalEdges[StatementNoShortIf]!!, curSppfNode) + } + 3 -> + { + } + } + } + + private fun parseExpressionStatement(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, StatementExpression, + state.nonterminalEdges[StatementExpression]!!, curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + } + } + } + + private fun parseStatementExpression(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Assignment, state.nonterminalEdges[Assignment]!!, + curSppfNode) + handleNonterminalEdge(descriptor, PostIncrementExpression, + state.nonterminalEdges[PostIncrementExpression]!!, curSppfNode) + handleNonterminalEdge(descriptor, PreDecrementExpression, + state.nonterminalEdges[PreDecrementExpression]!!, curSppfNode) + handleNonterminalEdge(descriptor, PreIncrementExpression, + state.nonterminalEdges[PreIncrementExpression]!!, curSppfNode) + handleNonterminalEdge(descriptor, PostDecrementExpression, + state.nonterminalEdges[PostDecrementExpression]!!, curSppfNode) + handleNonterminalEdge(descriptor, MethodInvocation, + state.nonterminalEdges[MethodInvocation]!!, curSppfNode) + handleNonterminalEdge(descriptor, ClassInstanceCreationExpression, + state.nonterminalEdges[ClassInstanceCreationExpression]!!, curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseIfThenStatement(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.IF -> + handleTerminal(JavaToken.IF, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHLEFT -> + handleTerminal(JavaToken.PARENTHLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Expression, state.nonterminalEdges[Expression]!!, + curSppfNode) + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 4 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Statement, state.nonterminalEdges[Statement]!!, + curSppfNode) + } + 5 -> + { + } + } + } + + private fun parseIfThenElseStatement(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.IF -> + handleTerminal(JavaToken.IF, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHLEFT -> + handleTerminal(JavaToken.PARENTHLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Expression, state.nonterminalEdges[Expression]!!, + curSppfNode) + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 4 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, StatementNoShortIf, + state.nonterminalEdges[StatementNoShortIf]!!, curSppfNode) + } + 5 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.ELSE -> + handleTerminal(JavaToken.ELSE, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 6 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Statement, state.nonterminalEdges[Statement]!!, + curSppfNode) + } + 7 -> + { + } + } + } + + private fun parseIfThenElseStatementNoShortIf(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.IF -> + handleTerminal(JavaToken.IF, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHLEFT -> + handleTerminal(JavaToken.PARENTHLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Expression, state.nonterminalEdges[Expression]!!, + curSppfNode) + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 4 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, StatementNoShortIf, + state.nonterminalEdges[StatementNoShortIf]!!, curSppfNode) + } + 5 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.ELSE -> + handleTerminal(JavaToken.ELSE, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 6 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, StatementNoShortIf, + state.nonterminalEdges[StatementNoShortIf]!!, curSppfNode) + } + 7 -> + { + } + } + } + + private fun parseAssertStatement(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.ASSERT -> + handleTerminal(JavaToken.ASSERT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Expression, state.nonterminalEdges[Expression]!!, + curSppfNode) + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + JavaToken.COLON -> + handleTerminal(JavaToken.COLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + } + 4 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Expression, state.nonterminalEdges[Expression]!!, + curSppfNode) + } + 5 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + } + } + + private fun parseSwitchStatement(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SWITCH -> + handleTerminal(JavaToken.SWITCH, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHLEFT -> + handleTerminal(JavaToken.PARENTHLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Expression, state.nonterminalEdges[Expression]!!, + curSppfNode) + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 4 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, SwitchBlock, state.nonterminalEdges[SwitchBlock]!!, + curSppfNode) + } + 5 -> + { + } + } + } + + private fun parseSwitchBlock(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.CURLYLEFT -> + handleTerminal(JavaToken.CURLYLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.CURLYRIGHT -> + handleTerminal(JavaToken.CURLYRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, SwitchLabel, state.nonterminalEdges[SwitchLabel]!!, + curSppfNode) + handleNonterminalEdge(descriptor, SwitchBlockStatementGroup, + state.nonterminalEdges[SwitchBlockStatementGroup]!!, curSppfNode) + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.CURLYRIGHT -> + handleTerminal(JavaToken.CURLYRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, SwitchLabel, state.nonterminalEdges[SwitchLabel]!!, + curSppfNode) + } + 3 -> + { + } + } + } + + private fun parseSwitchBlockStatementGroup(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, SwitchLabels, state.nonterminalEdges[SwitchLabels]!!, + curSppfNode) + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, BlockStatements, + state.nonterminalEdges[BlockStatements]!!, curSppfNode) + } + 2 -> + { + } + } + } + + private fun parseSwitchLabels(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, SwitchLabel, state.nonterminalEdges[SwitchLabel]!!, + curSppfNode) + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, SwitchLabel, state.nonterminalEdges[SwitchLabel]!!, + curSppfNode) + } + } + } + + private fun parseSwitchLabel(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.CASE -> + handleTerminal(JavaToken.CASE, state, inputEdge, descriptor, curSppfNode) + JavaToken.DEFAULT -> + handleTerminal(JavaToken.DEFAULT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, EnumConstantName, + state.nonterminalEdges[EnumConstantName]!!, curSppfNode) + handleNonterminalEdge(descriptor, ConstantExpression, + state.nonterminalEdges[ConstantExpression]!!, curSppfNode) + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.COLON -> + handleTerminal(JavaToken.COLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + } + } + } + + private fun parseEnumConstantName(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseWhileStatement(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.WHILE -> + handleTerminal(JavaToken.WHILE, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHLEFT -> + handleTerminal(JavaToken.PARENTHLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Expression, state.nonterminalEdges[Expression]!!, + curSppfNode) + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 4 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Statement, state.nonterminalEdges[Statement]!!, + curSppfNode) + } + 5 -> + { + } + } + } + + private fun parseWhileStatementNoShortIf(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.WHILE -> + handleTerminal(JavaToken.WHILE, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHLEFT -> + handleTerminal(JavaToken.PARENTHLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Expression, state.nonterminalEdges[Expression]!!, + curSppfNode) + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 4 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, StatementNoShortIf, + state.nonterminalEdges[StatementNoShortIf]!!, curSppfNode) + } + 5 -> + { + } + } + } + + private fun parseDoStatement(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.DO -> + handleTerminal(JavaToken.DO, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Statement, state.nonterminalEdges[Statement]!!, + curSppfNode) + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.WHILE -> + handleTerminal(JavaToken.WHILE, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHLEFT -> + handleTerminal(JavaToken.PARENTHLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 4 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Expression, state.nonterminalEdges[Expression]!!, + curSppfNode) + } + 5 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 6 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 7 -> + { + } + } + } + + private fun parseInterfaceMethodModifier(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.STRICTFP -> + handleTerminal(JavaToken.STRICTFP, state, inputEdge, descriptor, curSppfNode) + JavaToken.ABSTRACT -> + handleTerminal(JavaToken.ABSTRACT, state, inputEdge, descriptor, curSppfNode) + JavaToken.DEFAULT -> + handleTerminal(JavaToken.DEFAULT, state, inputEdge, descriptor, curSppfNode) + JavaToken.STATIC -> + handleTerminal(JavaToken.STATIC, state, inputEdge, descriptor, curSppfNode) + JavaToken.PUBLIC -> + handleTerminal(JavaToken.PUBLIC, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, Annotation, state.nonterminalEdges[Annotation]!!, + curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseForStatement(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, BasicForStatement, + state.nonterminalEdges[BasicForStatement]!!, curSppfNode) + handleNonterminalEdge(descriptor, EnhancedForStatement, + state.nonterminalEdges[EnhancedForStatement]!!, curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseForStatementNoShortIf(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, BasicForStatementNoShortIf, + state.nonterminalEdges[BasicForStatementNoShortIf]!!, curSppfNode) + handleNonterminalEdge(descriptor, EnhancedForStatementNoShortIf, + state.nonterminalEdges[EnhancedForStatementNoShortIf]!!, curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseBasicForStatement(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.FOR -> + handleTerminal(JavaToken.FOR, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHLEFT -> + handleTerminal(JavaToken.PARENTHLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, ForInit, state.nonterminalEdges[ForInit]!!, curSppfNode) + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 4 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, Expression, state.nonterminalEdges[Expression]!!, + curSppfNode) + } + 5 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, ForUpdate, state.nonterminalEdges[ForUpdate]!!, + curSppfNode) + } + 6 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 7 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 8 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Statement, state.nonterminalEdges[Statement]!!, + curSppfNode) + } + 9 -> + { + } + } + } + + private fun parseBasicForStatementNoShortIf(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.FOR -> + handleTerminal(JavaToken.FOR, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHLEFT -> + handleTerminal(JavaToken.PARENTHLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, ForInit, state.nonterminalEdges[ForInit]!!, curSppfNode) + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 4 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, Expression, state.nonterminalEdges[Expression]!!, + curSppfNode) + } + 5 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, ForUpdate, state.nonterminalEdges[ForUpdate]!!, + curSppfNode) + } + 6 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 7 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 8 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, StatementNoShortIf, + state.nonterminalEdges[StatementNoShortIf]!!, curSppfNode) + } + 9 -> + { + } + } + } + + private fun parseForInit(descriptor: Descriptor, curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, StatementExpressionList, + state.nonterminalEdges[StatementExpressionList]!!, curSppfNode) + handleNonterminalEdge(descriptor, LocalVariableDeclaration, + state.nonterminalEdges[LocalVariableDeclaration]!!, curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseForUpdate(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, StatementExpressionList, + state.nonterminalEdges[StatementExpressionList]!!, curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseStatementExpressionList(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, StatementExpression, + state.nonterminalEdges[StatementExpression]!!, curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.COMMA -> + handleTerminal(JavaToken.COMMA, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + } + } + + private fun parseEnhancedForStatement(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.FOR -> + handleTerminal(JavaToken.FOR, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHLEFT -> + handleTerminal(JavaToken.PARENTHLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, UnannType, state.nonterminalEdges[UnannType]!!, + curSppfNode) + handleNonterminalEdge(descriptor, VariableModifier, + state.nonterminalEdges[VariableModifier]!!, curSppfNode) + } + 3 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, VariableDeclaratorId, + state.nonterminalEdges[VariableDeclaratorId]!!, curSppfNode) + } + 4 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.COLON -> + handleTerminal(JavaToken.COLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 5 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Expression, state.nonterminalEdges[Expression]!!, + curSppfNode) + } + 6 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 7 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Statement, state.nonterminalEdges[Statement]!!, + curSppfNode) + } + 8 -> + { + } + } + } + + private fun parseEnhancedForStatementNoShortIf(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.FOR -> + handleTerminal(JavaToken.FOR, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHLEFT -> + handleTerminal(JavaToken.PARENTHLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, UnannType, state.nonterminalEdges[UnannType]!!, + curSppfNode) + handleNonterminalEdge(descriptor, VariableModifier, + state.nonterminalEdges[VariableModifier]!!, curSppfNode) + } + 3 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, VariableDeclaratorId, + state.nonterminalEdges[VariableDeclaratorId]!!, curSppfNode) + } + 4 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.COLON -> + handleTerminal(JavaToken.COLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 5 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Expression, state.nonterminalEdges[Expression]!!, + curSppfNode) + } + 6 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 7 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, StatementNoShortIf, + state.nonterminalEdges[StatementNoShortIf]!!, curSppfNode) + } + 8 -> + { + } + } + } + + private fun parseBreakStatement(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.BREAK -> + handleTerminal(JavaToken.BREAK, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + } + } + } + + private fun parseContinueStatement(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.CONTINUE -> + handleTerminal(JavaToken.CONTINUE, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + } + } + } + + private fun parseReturnStatement(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.RETURN -> + handleTerminal(JavaToken.RETURN, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, Expression, state.nonterminalEdges[Expression]!!, + curSppfNode) + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + } + } + } + + private fun parseThrowStatement(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.THROW -> + handleTerminal(JavaToken.THROW, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Expression, state.nonterminalEdges[Expression]!!, + curSppfNode) + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + } + } + } + + private fun parseSynchronizedStatement(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SYNCHRONIZED -> + handleTerminal(JavaToken.SYNCHRONIZED, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHLEFT -> + handleTerminal(JavaToken.PARENTHLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Expression, state.nonterminalEdges[Expression]!!, + curSppfNode) + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 4 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Block, state.nonterminalEdges[Block]!!, curSppfNode) + } + 5 -> + { + } + } + } + + private fun parseTryStatement(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.TRY -> + handleTerminal(JavaToken.TRY, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, TryWithResourcesStatement, + state.nonterminalEdges[TryWithResourcesStatement]!!, curSppfNode) + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Block, state.nonterminalEdges[Block]!!, curSppfNode) + } + 2 -> + { + } + 3 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Catches, state.nonterminalEdges[Catches]!!, curSppfNode) + handleNonterminalEdge(descriptor, Finally, state.nonterminalEdges[Finally]!!, curSppfNode) + } + 4 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Finally, state.nonterminalEdges[Finally]!!, curSppfNode) + } + } + } + + private fun parseCatches(descriptor: Descriptor, curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, CatchClause, state.nonterminalEdges[CatchClause]!!, + curSppfNode) + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, CatchClause, state.nonterminalEdges[CatchClause]!!, + curSppfNode) + } + } + } + + private fun parseCatchClause(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.CATCH -> + handleTerminal(JavaToken.CATCH, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHLEFT -> + handleTerminal(JavaToken.PARENTHLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, CatchFormalParameter, + state.nonterminalEdges[CatchFormalParameter]!!, curSppfNode) + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 4 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Block, state.nonterminalEdges[Block]!!, curSppfNode) + } + 5 -> + { + } + } + } + + private fun parseCatchFormalParameter(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, VariableModifier, + state.nonterminalEdges[VariableModifier]!!, curSppfNode) + handleNonterminalEdge(descriptor, CatchType, state.nonterminalEdges[CatchType]!!, + curSppfNode) + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, VariableDeclaratorId, + state.nonterminalEdges[VariableDeclaratorId]!!, curSppfNode) + } + 2 -> + { + } + } + } + + private fun parseCatchType(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, UnannClassType, state.nonterminalEdges[UnannClassType]!!, + curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.ORBIT -> + handleTerminal(JavaToken.ORBIT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ClassType, state.nonterminalEdges[ClassType]!!, + curSppfNode) + } + } + } + + private fun parseFinally(descriptor: Descriptor, curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.FINALLY -> + handleTerminal(JavaToken.FINALLY, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Block, state.nonterminalEdges[Block]!!, curSppfNode) + } + 2 -> + { + } + } + } + + private fun parseTryWithResourcesStatement(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.TRY -> + handleTerminal(JavaToken.TRY, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ResourceSpecification, + state.nonterminalEdges[ResourceSpecification]!!, curSppfNode) + } + 2 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Block, state.nonterminalEdges[Block]!!, curSppfNode) + } + 3 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Catches, state.nonterminalEdges[Catches]!!, curSppfNode) + handleNonterminalEdge(descriptor, Finally, state.nonterminalEdges[Finally]!!, curSppfNode) + } + 4 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Finally, state.nonterminalEdges[Finally]!!, curSppfNode) + } + 5 -> + { + } + } + } + + private fun parseResourceSpecification(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHLEFT -> + handleTerminal(JavaToken.PARENTHLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ResourceList, state.nonterminalEdges[ResourceList]!!, + curSppfNode) + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SEMICOLON -> + handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode) + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 4 -> + { + } + } + } + + private fun parseResourceList(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Resource, state.nonterminalEdges[Resource]!!, curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.COMMA -> + handleTerminal(JavaToken.COMMA, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + } + } + + private fun parseResource(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, UnannType, state.nonterminalEdges[UnannType]!!, + curSppfNode) + handleNonterminalEdge(descriptor, VariableModifier, + state.nonterminalEdges[VariableModifier]!!, curSppfNode) + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, VariableDeclaratorId, + state.nonterminalEdges[VariableDeclaratorId]!!, curSppfNode) + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.ASSIGN -> + handleTerminal(JavaToken.ASSIGN, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Expression, state.nonterminalEdges[Expression]!!, + curSppfNode) + } + 4 -> + { + } + } + } + + private fun parsePrimaryNoNewArray(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.THIS -> + handleTerminal(JavaToken.THIS, state, inputEdge, descriptor, curSppfNode) + JavaToken.PARENTHLEFT -> + handleTerminal(JavaToken.PARENTHLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, TypeName, state.nonterminalEdges[TypeName]!!, curSppfNode) + handleNonterminalEdge(descriptor, ArrayAccess, state.nonterminalEdges[ArrayAccess]!!, + curSppfNode) + handleNonterminalEdge(descriptor, Literal, state.nonterminalEdges[Literal]!!, curSppfNode) + handleNonterminalEdge(descriptor, ClassInstanceCreationExpression, + state.nonterminalEdges[ClassInstanceCreationExpression]!!, curSppfNode) + handleNonterminalEdge(descriptor, MethodInvocation, + state.nonterminalEdges[MethodInvocation]!!, curSppfNode) + handleNonterminalEdge(descriptor, MethodReference, + state.nonterminalEdges[MethodReference]!!, curSppfNode) + handleNonterminalEdge(descriptor, ClassLiteral, state.nonterminalEdges[ClassLiteral]!!, + curSppfNode) + handleNonterminalEdge(descriptor, FieldAccess, state.nonterminalEdges[FieldAccess]!!, + curSppfNode) + } + 1 -> + { + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.DOT -> + handleTerminal(JavaToken.DOT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Expression, state.nonterminalEdges[Expression]!!, + curSppfNode) + } + 4 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 5 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.THIS -> + handleTerminal(JavaToken.THIS, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + } + } + + private fun parseClassLiteral(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.VOID -> + handleTerminal(JavaToken.VOID, state, inputEdge, descriptor, curSppfNode) + JavaToken.BOOLEAN -> + handleTerminal(JavaToken.BOOLEAN, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, NumericType, state.nonterminalEdges[NumericType]!!, + curSppfNode) + handleNonterminalEdge(descriptor, TypeName, state.nonterminalEdges[TypeName]!!, curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.DOT -> + handleTerminal(JavaToken.DOT, state, inputEdge, descriptor, curSppfNode) + JavaToken.BRACKETLEFT -> + handleTerminal(JavaToken.BRACKETLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.DOT -> + handleTerminal(JavaToken.DOT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.CLASS -> + handleTerminal(JavaToken.CLASS, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 4 -> + { + } + 5 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.BRACKETRIGHT -> + handleTerminal(JavaToken.BRACKETRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + } + } + + private fun parseclassOrInterfaceTypeToInstantiate(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + handleNonterminalEdge(descriptor, Annotation, state.nonterminalEdges[Annotation]!!, + curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.DOT -> + handleTerminal(JavaToken.DOT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, TypeArgumentsOrDiamond, + state.nonterminalEdges[TypeArgumentsOrDiamond]!!, curSppfNode) + } + 2 -> + { + } + } + } + + private fun parseUnqualifiedClassInstanceCreationExpression(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.NEW -> + handleTerminal(JavaToken.NEW, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, classOrInterfaceTypeToInstantiate, + state.nonterminalEdges[classOrInterfaceTypeToInstantiate]!!, curSppfNode) + handleNonterminalEdge(descriptor, TypeArguments, state.nonterminalEdges[TypeArguments]!!, + curSppfNode) + } + 2 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, classOrInterfaceTypeToInstantiate, + state.nonterminalEdges[classOrInterfaceTypeToInstantiate]!!, curSppfNode) + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHLEFT -> + handleTerminal(JavaToken.PARENTHLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 4 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, ArgumentList, state.nonterminalEdges[ArgumentList]!!, + curSppfNode) + } + 5 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 6 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ClassBody, state.nonterminalEdges[ClassBody]!!, + curSppfNode) + } + 7 -> + { + } + } + } + + private fun parseClassInstanceCreationExpression(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, UnqualifiedClassInstanceCreationExpression, + state.nonterminalEdges[UnqualifiedClassInstanceCreationExpression]!!, curSppfNode) + handleNonterminalEdge(descriptor, Primary, state.nonterminalEdges[Primary]!!, curSppfNode) + handleNonterminalEdge(descriptor, ExpressionName, state.nonterminalEdges[ExpressionName]!!, + curSppfNode) + } + 1 -> + { + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.DOT -> + handleTerminal(JavaToken.DOT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, UnqualifiedClassInstanceCreationExpression, + state.nonterminalEdges[UnqualifiedClassInstanceCreationExpression]!!, curSppfNode) + } + } + } + + private fun parseFieldAccess(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SUPER -> + handleTerminal(JavaToken.SUPER, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, TypeName, state.nonterminalEdges[TypeName]!!, curSppfNode) + handleNonterminalEdge(descriptor, Primary, state.nonterminalEdges[Primary]!!, curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.DOT -> + handleTerminal(JavaToken.DOT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.DOT -> + handleTerminal(JavaToken.DOT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SUPER -> + handleTerminal(JavaToken.SUPER, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 4 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + } + 5 -> + { + } + } + } + + private fun parseTypeArgumentsOrDiamond(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.LT -> + handleTerminal(JavaToken.LT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, TypeArguments, state.nonterminalEdges[TypeArguments]!!, + curSppfNode) + } + 1 -> + { + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.GT -> + handleTerminal(JavaToken.GT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + } + } + + private fun parseArrayAccess(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, PrimaryNoNewArray, + state.nonterminalEdges[PrimaryNoNewArray]!!, curSppfNode) + handleNonterminalEdge(descriptor, ExpressionName, state.nonterminalEdges[ExpressionName]!!, + curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.BRACKETLEFT -> + handleTerminal(JavaToken.BRACKETLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Expression, state.nonterminalEdges[Expression]!!, + curSppfNode) + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.BRACKETRIGHT -> + handleTerminal(JavaToken.BRACKETRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 4 -> + { + } + } + } + + private fun parseMethodInvocation(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SUPER -> + handleTerminal(JavaToken.SUPER, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, TypeName, state.nonterminalEdges[TypeName]!!, curSppfNode) + handleNonterminalEdge(descriptor, Primary, state.nonterminalEdges[Primary]!!, curSppfNode) + handleNonterminalEdge(descriptor, MethodName, state.nonterminalEdges[MethodName]!!, + curSppfNode) + handleNonterminalEdge(descriptor, ExpressionName, state.nonterminalEdges[ExpressionName]!!, + curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHLEFT -> + handleTerminal(JavaToken.PARENTHLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.DOT -> + handleTerminal(JavaToken.DOT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.DOT -> + handleTerminal(JavaToken.DOT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 4 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + handleNonterminalEdge(descriptor, TypeArguments, state.nonterminalEdges[TypeArguments]!!, + curSppfNode) + } + 5 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + } + 6 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SUPER -> + handleTerminal(JavaToken.SUPER, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + handleNonterminalEdge(descriptor, TypeArguments, state.nonterminalEdges[TypeArguments]!!, + curSppfNode) + } + 7 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, ArgumentList, state.nonterminalEdges[ArgumentList]!!, + curSppfNode) + } + 8 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 9 -> + { + } + } + } + + private fun parseMethodReference(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SUPER -> + handleTerminal(JavaToken.SUPER, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, ArrayType, state.nonterminalEdges[ArrayType]!!, + curSppfNode) + handleNonterminalEdge(descriptor, TypeName, state.nonterminalEdges[TypeName]!!, curSppfNode) + handleNonterminalEdge(descriptor, Primary, state.nonterminalEdges[Primary]!!, curSppfNode) + handleNonterminalEdge(descriptor, ClassType, state.nonterminalEdges[ClassType]!!, + curSppfNode) + handleNonterminalEdge(descriptor, ReferenceType, state.nonterminalEdges[ReferenceType]!!, + curSppfNode) + handleNonterminalEdge(descriptor, ExpressionName, state.nonterminalEdges[ExpressionName]!!, + curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.DOUBLECOLON -> + handleTerminal(JavaToken.DOUBLECOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.DOT -> + handleTerminal(JavaToken.DOT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.DOUBLECOLON -> + handleTerminal(JavaToken.DOUBLECOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 4 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.DOUBLECOLON -> + handleTerminal(JavaToken.DOUBLECOLON, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 5 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.NEW -> + handleTerminal(JavaToken.NEW, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 6 -> + { + } + 7 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.NEW -> + handleTerminal(JavaToken.NEW, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, TypeArguments, state.nonterminalEdges[TypeArguments]!!, + curSppfNode) + } + 8 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SUPER -> + handleTerminal(JavaToken.SUPER, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 9 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + handleNonterminalEdge(descriptor, TypeArguments, state.nonterminalEdges[TypeArguments]!!, + curSppfNode) + } + 10 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + } + } + } + + private fun parseArrayCreationExpression(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.NEW -> + handleTerminal(JavaToken.NEW, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, PrimitiveType, state.nonterminalEdges[PrimitiveType]!!, + curSppfNode) + handleNonterminalEdge(descriptor, ClassOrInterfaceType, + state.nonterminalEdges[ClassOrInterfaceType]!!, curSppfNode) + } + 2 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, DimExprs, state.nonterminalEdges[DimExprs]!!, curSppfNode) + handleNonterminalEdge(descriptor, Dims, state.nonterminalEdges[Dims]!!, curSppfNode) + } + 3 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Dims, state.nonterminalEdges[Dims]!!, curSppfNode) + } + 4 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ArrayInitializer, + state.nonterminalEdges[ArrayInitializer]!!, curSppfNode) + } + 5 -> + { + } + } + } + + private fun parseDimExprs(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, DimExpr, state.nonterminalEdges[DimExpr]!!, curSppfNode) + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, DimExpr, state.nonterminalEdges[DimExpr]!!, curSppfNode) + } + } + } + + private fun parseDimExpr(descriptor: Descriptor, curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.BRACKETLEFT -> + handleTerminal(JavaToken.BRACKETLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, Annotation, state.nonterminalEdges[Annotation]!!, + curSppfNode) + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Expression, state.nonterminalEdges[Expression]!!, + curSppfNode) + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.BRACKETRIGHT -> + handleTerminal(JavaToken.BRACKETRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + } + } + } + + private fun parseLambdaExpression(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, LambdaParameters, + state.nonterminalEdges[LambdaParameters]!!, curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.ARROW -> + handleTerminal(JavaToken.ARROW, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, LambdaBody, state.nonterminalEdges[LambdaBody]!!, + curSppfNode) + } + 3 -> + { + } + } + } + + private fun parseLambdaParameters(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHLEFT -> + handleTerminal(JavaToken.PARENTHLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + } + 1 -> + { + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, FormalParameterList, + state.nonterminalEdges[FormalParameterList]!!, curSppfNode) + handleNonterminalEdge(descriptor, InferredFormalParameterList, + state.nonterminalEdges[InferredFormalParameterList]!!, curSppfNode) + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + } + } + + private fun parseInferredFormalParameterList(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!, + curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.COMMA -> + handleTerminal(JavaToken.COMMA, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + } + } + + private fun parseLambdaBody(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Expression, state.nonterminalEdges[Expression]!!, + curSppfNode) + handleNonterminalEdge(descriptor, Block, state.nonterminalEdges[Block]!!, curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseAssignmentExpression(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Assignment, state.nonterminalEdges[Assignment]!!, + curSppfNode) + handleNonterminalEdge(descriptor, ConditionalExpression, + state.nonterminalEdges[ConditionalExpression]!!, curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseAssignment(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, LeftHandSide, state.nonterminalEdges[LeftHandSide]!!, + curSppfNode) + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, AssignmentOperator, + state.nonterminalEdges[AssignmentOperator]!!, curSppfNode) + } + 2 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Expression, state.nonterminalEdges[Expression]!!, + curSppfNode) + } + 3 -> + { + } + } + } + + private fun parseLeftHandSide(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ArrayAccess, state.nonterminalEdges[ArrayAccess]!!, + curSppfNode) + handleNonterminalEdge(descriptor, FieldAccess, state.nonterminalEdges[FieldAccess]!!, + curSppfNode) + handleNonterminalEdge(descriptor, ExpressionName, state.nonterminalEdges[ExpressionName]!!, + curSppfNode) + } + 1 -> + { + } + } + } + + private fun parseAssignmentOperator(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.SLASHASSIGN -> + handleTerminal(JavaToken.SLASHASSIGN, state, inputEdge, descriptor, curSppfNode) + JavaToken.SHIFTLEFTASSIGN -> + handleTerminal(JavaToken.SHIFTLEFTASSIGN, state, inputEdge, descriptor, curSppfNode) + JavaToken.ORASSIGN -> + handleTerminal(JavaToken.ORASSIGN, state, inputEdge, descriptor, curSppfNode) + JavaToken.PLUSASSIGN -> + handleTerminal(JavaToken.PLUSASSIGN, state, inputEdge, descriptor, curSppfNode) + JavaToken.USRIGHTSHIFTASSIGN -> + handleTerminal(JavaToken.USRIGHTSHIFTASSIGN, state, inputEdge, descriptor, curSppfNode) + JavaToken.XORASSIGN -> + handleTerminal(JavaToken.XORASSIGN, state, inputEdge, descriptor, curSppfNode) + JavaToken.ANDASSIGN -> + handleTerminal(JavaToken.ANDASSIGN, state, inputEdge, descriptor, curSppfNode) + JavaToken.STARASSIGN -> + handleTerminal(JavaToken.STARASSIGN, state, inputEdge, descriptor, curSppfNode) + JavaToken.MINUSASSIGN -> + handleTerminal(JavaToken.MINUSASSIGN, state, inputEdge, descriptor, curSppfNode) + JavaToken.SHIFTRIGHTASSIGN -> + handleTerminal(JavaToken.SHIFTRIGHTASSIGN, state, inputEdge, descriptor, curSppfNode) + JavaToken.PERCENTASSIGN -> + handleTerminal(JavaToken.PERCENTASSIGN, state, inputEdge, descriptor, curSppfNode) + JavaToken.ASSIGN -> + handleTerminal(JavaToken.ASSIGN, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + } + } + } + + private fun parseConditionalOrExpression(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ConditionalAndExpression, + state.nonterminalEdges[ConditionalAndExpression]!!, curSppfNode) + handleNonterminalEdge(descriptor, ConditionalOrExpression, + state.nonterminalEdges[ConditionalOrExpression]!!, curSppfNode) + } + 1 -> + { + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.OR -> + handleTerminal(JavaToken.OR, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ConditionalAndExpression, + state.nonterminalEdges[ConditionalAndExpression]!!, curSppfNode) + } + } + } + + private fun parseConditionalAndExpression(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, InclusiveOrExpression, + state.nonterminalEdges[InclusiveOrExpression]!!, curSppfNode) + handleNonterminalEdge(descriptor, ConditionalAndExpression, + state.nonterminalEdges[ConditionalAndExpression]!!, curSppfNode) + } + 1 -> + { + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.AND -> + handleTerminal(JavaToken.AND, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, InclusiveOrExpression, + state.nonterminalEdges[InclusiveOrExpression]!!, curSppfNode) + } + } + } + + private fun parseInclusiveOrExpression(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, InclusiveOrExpression, + state.nonterminalEdges[InclusiveOrExpression]!!, curSppfNode) + handleNonterminalEdge(descriptor, ExclusiveOrExpression, + state.nonterminalEdges[ExclusiveOrExpression]!!, curSppfNode) + } + 1 -> + { + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.ORBIT -> + handleTerminal(JavaToken.ORBIT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ExclusiveOrExpression, + state.nonterminalEdges[ExclusiveOrExpression]!!, curSppfNode) + } + } + } + + private fun parseExclusiveOrExpression(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, AndExpression, state.nonterminalEdges[AndExpression]!!, + curSppfNode) + handleNonterminalEdge(descriptor, ExclusiveOrExpression, + state.nonterminalEdges[ExclusiveOrExpression]!!, curSppfNode) + } + 1 -> + { + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.XORBIT -> + handleTerminal(JavaToken.XORBIT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, AndExpression, state.nonterminalEdges[AndExpression]!!, + curSppfNode) + } + } + } + + private fun parseAndExpression(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, AndExpression, state.nonterminalEdges[AndExpression]!!, + curSppfNode) + handleNonterminalEdge(descriptor, EqualityExpression, + state.nonterminalEdges[EqualityExpression]!!, curSppfNode) + } + 1 -> + { + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.ANDBIT -> + handleTerminal(JavaToken.ANDBIT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, EqualityExpression, + state.nonterminalEdges[EqualityExpression]!!, curSppfNode) + } + } + } + + private fun parseEqualityExpression(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, RelationalExpression, + state.nonterminalEdges[RelationalExpression]!!, curSppfNode) + handleNonterminalEdge(descriptor, EqualityExpression, + state.nonterminalEdges[EqualityExpression]!!, curSppfNode) + } + 1 -> + { + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.EQ -> + handleTerminal(JavaToken.EQ, state, inputEdge, descriptor, curSppfNode) + JavaToken.NOTEQ -> + handleTerminal(JavaToken.NOTEQ, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, RelationalExpression, + state.nonterminalEdges[RelationalExpression]!!, curSppfNode) + } + } + } + + private fun parseRelationalExpression(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, RelationalExpression, + state.nonterminalEdges[RelationalExpression]!!, curSppfNode) + handleNonterminalEdge(descriptor, ShiftExpression, + state.nonterminalEdges[ShiftExpression]!!, curSppfNode) + } + 1 -> + { + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.INSTANCEOF -> + handleTerminal(JavaToken.INSTANCEOF, state, inputEdge, descriptor, curSppfNode) + JavaToken.GREATEQ -> + handleTerminal(JavaToken.GREATEQ, state, inputEdge, descriptor, curSppfNode) + JavaToken.LT -> + handleTerminal(JavaToken.LT, state, inputEdge, descriptor, curSppfNode) + JavaToken.GT -> + handleTerminal(JavaToken.GT, state, inputEdge, descriptor, curSppfNode) + JavaToken.LESSEQ -> + handleTerminal(JavaToken.LESSEQ, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ShiftExpression, + state.nonterminalEdges[ShiftExpression]!!, curSppfNode) + } + 4 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, ReferenceType, state.nonterminalEdges[ReferenceType]!!, + curSppfNode) + } + } + } + + private fun parseShiftExpression(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, AdditiveExpression, + state.nonterminalEdges[AdditiveExpression]!!, curSppfNode) + handleNonterminalEdge(descriptor, ShiftExpression, + state.nonterminalEdges[ShiftExpression]!!, curSppfNode) + } + 1 -> + { + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.LT -> + handleTerminal(JavaToken.LT, state, inputEdge, descriptor, curSppfNode) + JavaToken.GT -> + handleTerminal(JavaToken.GT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.LT -> + handleTerminal(JavaToken.LT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 4 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.GT -> + handleTerminal(JavaToken.GT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 5 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.GT -> + handleTerminal(JavaToken.GT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, AdditiveExpression, + state.nonterminalEdges[AdditiveExpression]!!, curSppfNode) + } + 6 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, AdditiveExpression, + state.nonterminalEdges[AdditiveExpression]!!, curSppfNode) + } + } + } + + private fun parseAdditiveExpression(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, AdditiveExpression, + state.nonterminalEdges[AdditiveExpression]!!, curSppfNode) + handleNonterminalEdge(descriptor, MultiplicativeExpression, + state.nonterminalEdges[MultiplicativeExpression]!!, curSppfNode) + } + 1 -> + { + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.MINUS -> + handleTerminal(JavaToken.MINUS, state, inputEdge, descriptor, curSppfNode) + JavaToken.PLUS -> + handleTerminal(JavaToken.PLUS, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, MultiplicativeExpression, + state.nonterminalEdges[MultiplicativeExpression]!!, curSppfNode) + } + } + } + + private fun parseMultiplicativeExpression(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, UnaryExpression, + state.nonterminalEdges[UnaryExpression]!!, curSppfNode) + handleNonterminalEdge(descriptor, MultiplicativeExpression, + state.nonterminalEdges[MultiplicativeExpression]!!, curSppfNode) + } + 1 -> + { + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PERCENT -> + handleTerminal(JavaToken.PERCENT, state, inputEdge, descriptor, curSppfNode) + JavaToken.SLASH -> + handleTerminal(JavaToken.SLASH, state, inputEdge, descriptor, curSppfNode) + JavaToken.STAR -> + handleTerminal(JavaToken.STAR, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, UnaryExpression, + state.nonterminalEdges[UnaryExpression]!!, curSppfNode) + } + } + } + + private fun parsePreIncrementExpression(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PLUSPLUS -> + handleTerminal(JavaToken.PLUSPLUS, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, UnaryExpression, + state.nonterminalEdges[UnaryExpression]!!, curSppfNode) + } + 2 -> + { + } + } + } + + private fun parsePreDecrementExpression(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.MINUSMINUS -> + handleTerminal(JavaToken.MINUSMINUS, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, UnaryExpression, + state.nonterminalEdges[UnaryExpression]!!, curSppfNode) + } + 2 -> + { + } + } + } + + private fun parseUnaryExpressionNotPlusMinus(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.TILDA -> + handleTerminal(JavaToken.TILDA, state, inputEdge, descriptor, curSppfNode) + JavaToken.EXCLAMATIONMARK -> + handleTerminal(JavaToken.EXCLAMATIONMARK, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, PostfixExpression, + state.nonterminalEdges[PostfixExpression]!!, curSppfNode) + handleNonterminalEdge(descriptor, CastExpression, state.nonterminalEdges[CastExpression]!!, + curSppfNode) + } + 1 -> + { + } + 2 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, UnaryExpression, + state.nonterminalEdges[UnaryExpression]!!, curSppfNode) + } + } + } + + private fun parseUnaryExpression(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.MINUS -> + handleTerminal(JavaToken.MINUS, state, inputEdge, descriptor, curSppfNode) + JavaToken.PLUS -> + handleTerminal(JavaToken.PLUS, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, PreDecrementExpression, + state.nonterminalEdges[PreDecrementExpression]!!, curSppfNode) + handleNonterminalEdge(descriptor, UnaryExpressionNotPlusMinus, + state.nonterminalEdges[UnaryExpressionNotPlusMinus]!!, curSppfNode) + handleNonterminalEdge(descriptor, PreIncrementExpression, + state.nonterminalEdges[PreIncrementExpression]!!, curSppfNode) + } + 1 -> + { + } + 2 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, UnaryExpression, + state.nonterminalEdges[UnaryExpression]!!, curSppfNode) + } + } + } + + private fun parsePostfixExpression(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, PostIncrementExpression, + state.nonterminalEdges[PostIncrementExpression]!!, curSppfNode) + handleNonterminalEdge(descriptor, Primary, state.nonterminalEdges[Primary]!!, curSppfNode) + handleNonterminalEdge(descriptor, PostDecrementExpression, + state.nonterminalEdges[PostDecrementExpression]!!, curSppfNode) + handleNonterminalEdge(descriptor, ExpressionName, state.nonterminalEdges[ExpressionName]!!, + curSppfNode) + } + 1 -> + { + } + } + } + + private fun parsePostIncrementExpression(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, PostfixExpression, + state.nonterminalEdges[PostfixExpression]!!, curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PLUSPLUS -> + handleTerminal(JavaToken.PLUSPLUS, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + } + } + } + + private fun parsePostDecrementExpression(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, PostfixExpression, + state.nonterminalEdges[PostfixExpression]!!, curSppfNode) + } + 1 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.MINUSMINUS -> + handleTerminal(JavaToken.MINUSMINUS, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 2 -> + { + } + } + } + + private fun parseCastExpression(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + val pos = descriptor.inputPosition + when(state.numId) { + 0 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHLEFT -> + handleTerminal(JavaToken.PARENTHLEFT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 1 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, PrimitiveType, state.nonterminalEdges[PrimitiveType]!!, + curSppfNode) + handleNonterminalEdge(descriptor, ReferenceType, state.nonterminalEdges[ReferenceType]!!, + curSppfNode) + } + 2 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + } + 3 -> + { + // handle terminal edges + for (inputEdge in ctx.input.getEdges(pos)) { + when(inputEdge.label.terminal) { + JavaToken.PARENTHRIGHT -> + handleTerminal(JavaToken.PARENTHRIGHT, state, inputEdge, descriptor, curSppfNode) + else -> {} + } + } + // handle nonterminal edges + handleNonterminalEdge(descriptor, AdditionalBound, + state.nonterminalEdges[AdditionalBound]!!, curSppfNode) + } + 4 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, UnaryExpressionNotPlusMinus, + state.nonterminalEdges[UnaryExpressionNotPlusMinus]!!, curSppfNode) + handleNonterminalEdge(descriptor, LambdaExpression, + state.nonterminalEdges[LambdaExpression]!!, curSppfNode) + } + 5 -> + { + } + 6 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, UnaryExpression, + state.nonterminalEdges[UnaryExpression]!!, curSppfNode) + } + } + } + + private fun parseConstantExpression(descriptor: Descriptor, + curSppfNode: SppfNode?) { + val state = descriptor.rsmState + when(state.numId) { + 0 -> + { + // handle nonterminal edges + handleNonterminalEdge(descriptor, Expression, state.nonterminalEdges[Expression]!!, + curSppfNode) + } + 1 -> + { + } + } + } + + override fun parse(descriptor: Descriptor) { + super.parse(descriptor) + org.ucfs.intersection.RecoveryIntersection.handleRecoveryEdges(this, descriptor) + } + + override fun setInput(`value`: IInputGraph) { + ctx = org.ucfs.parser.context.RecoveryContext(grammar.rsm, value) + } +}