diff --git a/headless-services/commons/jpql/.gitignore b/headless-services/commons/jpql/.gitignore
index 03b7046dc..66ffbd68d 100644
--- a/headless-services/commons/jpql/.gitignore
+++ b/headless-services/commons/jpql/.gitignore
@@ -1,6 +1,10 @@
/antlr-4.13.1.jar
-/src/main/java/org/springframework/ide/vscode/jpql/antlr/parser/Jpql.interp
-/src/main/java/org/springframework/ide/vscode/jpql/antlr/parser/Jpql.tokens
-/src/main/java/org/springframework/ide/vscode/jpql/antlr/parser/JpqlLexer.interp
-/src/main/java/org/springframework/ide/vscode/jpql/antlr/parser/JpqlLexer.tokens
+/src/main/java/org/springframework/ide/vscode/parser/jpql/Jpql.interp
+/src/main/java/org/springframework/ide/vscode/parser/jpql/Jpql.tokens
+/src/main/java/org/springframework/ide/vscode/parser/jpql/JpqlLexer.interp
+/src/main/java/org/springframework/ide/vscode/parser/jpql/JpqlLexer.tokens
+/src/main/java/org/springframework/ide/vscode/parser/hql/Hql.interp
+/src/main/java/org/springframework/ide/vscode/parser/hql/Hql.tokens
+/src/main/java/org/springframework/ide/vscode/parser/hql/HqlLexer.interp
+/src/main/java/org/springframework/ide/vscode/parser/hql/HqlLexer.tokens
/target
diff --git a/headless-services/commons/jpql/generate-jpql-parser.sh b/headless-services/commons/jpql/generate-parsers.sh
similarity index 50%
rename from headless-services/commons/jpql/generate-jpql-parser.sh
rename to headless-services/commons/jpql/generate-parsers.sh
index 2ead8d632..09656b3ee 100755
--- a/headless-services/commons/jpql/generate-jpql-parser.sh
+++ b/headless-services/commons/jpql/generate-parsers.sh
@@ -6,5 +6,6 @@ if [ ! -f antlr-${ANTLR_VERSION}.jar ]; then
fi
workdir=$(pwd)
cd grammars
-java -jar ${workdir}/antlr-${ANTLR_VERSION}.jar Jpql.g4 -o ${workdir}/src/main/java/org/springframework/ide/vscode/jpql/antlr/parser -package org.springframework.ide.vscode.jpql.antlr.parser
+java -jar ${workdir}/antlr-${ANTLR_VERSION}.jar Jpql.g4 -o ${workdir}/src/main/java/org/springframework/ide/vscode/parser/jpql -package org.springframework.ide.vscode.parser.jpql
+java -jar ${workdir}/antlr-${ANTLR_VERSION}.jar Hql.g4 -o ${workdir}/src/main/java/org/springframework/ide/vscode//parser/hql -package org.springframework.ide.vscode.parser.hql
diff --git a/headless-services/commons/jpql/grammars/Hql.g4 b/headless-services/commons/jpql/grammars/Hql.g4
new file mode 100644
index 000000000..4971e4915
--- /dev/null
+++ b/headless-services/commons/jpql/grammars/Hql.g4
@@ -0,0 +1,1094 @@
+/*
+ * Copyright 2011-2023 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+grammar Hql;
+
+@header {
+/**
+ * HQL per https://docs.jboss.org/hibernate/orm/6.1/userguide/html_single/Hibernate_User_Guide.html#query-language
+ *
+ * This is a mixture of Hibernate's BNF and missing bits of grammar. There are gaps and inconsistencies in the
+ * BNF itself, explained by other fragments of their spec. Additionally, alternate labels are used to provide easier
+ * management of complex rules in the generated Visitor. Finally, there are labels applied to rule elements (op=('+'|'-')
+ * to simplify the processing.
+ *
+ * @author Greg Turnquist
+ * @since 3.1
+ */
+}
+
+/*
+ Parser rules
+ */
+
+start
+ : ql_statement EOF
+ ;
+
+ql_statement
+ : selectStatement
+ | updateStatement
+ | deleteStatement
+ | insertStatement
+ ;
+
+// https://docs.jboss.org/hibernate/orm/6.1/userguide/html_single/Hibernate_User_Guide.html#hql-select
+selectStatement
+ : queryExpression
+ ;
+
+queryExpression
+ : withClause? orderedQuery (setOperator orderedQuery)*
+ ;
+
+withClause
+ : WITH cte (',' cte)*
+ ;
+
+cte
+ : identifier AS (NOT? MATERIALIZED)? '(' queryExpression ')' searchClause? cycleClause?
+ ;
+
+searchClause
+ : SEARCH (BREADTH | DEPTH) FIRST BY searchSpecifications SET identifier
+ ;
+
+searchSpecifications
+ : searchSpecification (',' searchSpecification)*
+ ;
+
+searchSpecification
+ : identifier sortDirection? nullsPrecedence?
+ ;
+
+cycleClause
+ : CYCLE cteAttributes SET identifier (TO literal DEFAULT literal)? (USING identifier)?
+ ;
+
+cteAttributes
+ : identifier (',' identifier)*
+ ;
+
+orderedQuery
+ : (query | '(' queryExpression ')') queryOrder?
+ ;
+
+query
+ : selectClause fromClause? whereClause? (groupByClause havingClause?)? # SelectQuery
+ | fromClause whereClause? (groupByClause havingClause?)? selectClause? # FromQuery
+ ;
+
+queryOrder
+ : orderByClause limitClause? offsetClause? fetchClause?
+ ;
+
+fromClause
+ : FROM entityWithJoins (',' entityWithJoins)*
+ ;
+
+entityWithJoins
+ : fromRoot (joinSpecifier)*
+ ;
+
+joinSpecifier
+ : join
+ | crossJoin
+ | jpaCollectionJoin
+ ;
+
+fromRoot
+ : entityName variable?
+ | LATERAL? '(' subquery ')' variable?
+ ;
+
+join
+ : joinType JOIN FETCH? joinTarget joinRestriction? // Spec BNF says joinType isn't optional, but text says that it is.
+ ;
+
+joinTarget
+ : path variable? # JoinPath
+ | LATERAL? '(' subquery ')' variable? # JoinSubquery
+ ;
+
+// https://docs.jboss.org/hibernate/orm/6.1/userguide/html_single/Hibernate_User_Guide.html#hql-update
+updateStatement
+ : UPDATE VERSIONED? targetEntity setClause whereClause?
+ ;
+
+targetEntity
+ : entityName variable?
+ ;
+
+setClause
+ : SET assignment (',' assignment)*
+ ;
+
+assignment
+ : simplePath '=' expressionOrPredicate
+ ;
+
+// https://docs.jboss.org/hibernate/orm/6.1/userguide/html_single/Hibernate_User_Guide.html#hql-delete
+deleteStatement
+ : DELETE FROM? targetEntity whereClause?
+ ;
+
+// https://docs.jboss.org/hibernate/orm/6.1/userguide/html_single/Hibernate_User_Guide.html#hql-insert
+insertStatement
+ : INSERT INTO? targetEntity targetFields (queryExpression | valuesList)
+ ;
+
+// Already defined underneath updateStatement
+//targetEntity
+// : entityName variable?
+// ;
+
+targetFields
+ : '(' simplePath (',' simplePath)* ')'
+ ;
+
+valuesList
+ : VALUES values (',' values)*
+ ;
+
+values
+ : '(' expression (',' expression)* ')'
+ ;
+
+instantiation
+ : NEW instantiationTarget '(' instantiationArguments ')'
+ ;
+
+alias
+ : AS? identifier // spec says IDENTIFIER but clearly does NOT mean a reserved word
+ ;
+
+groupedItem
+ : identifier
+ | INTEGER_LITERAL
+ | expression
+ ;
+
+sortedItem
+ : sortExpression sortDirection? nullsPrecedence?
+ ;
+
+sortExpression
+ : identifier
+ | INTEGER_LITERAL
+ | expression
+ ;
+
+sortDirection
+ : ASC
+ | DESC
+ ;
+
+nullsPrecedence
+ : NULLS (FIRST | LAST)
+ ;
+
+limitClause
+ : LIMIT parameterOrIntegerLiteral
+ ;
+
+offsetClause
+ : OFFSET parameterOrIntegerLiteral (ROW | ROWS)?
+ ;
+
+fetchClause
+ : FETCH (FIRST | NEXT) (parameterOrIntegerLiteral | parameterOrNumberLiteral '%') (ROW | ROWS) (ONLY | WITH TIES)
+ ;
+
+/*******************
+ Gaps in the spec.
+ *******************/
+
+subquery
+ : queryExpression
+ ;
+
+selectClause
+ : SELECT DISTINCT? selectionList
+ ;
+
+selectionList
+ : selection (',' selection)*
+ ;
+
+selection
+ : selectExpression variable?
+ ;
+
+selectExpression
+ : instantiation
+ | mapEntrySelection
+ | jpaSelectObjectSyntax
+ | expressionOrPredicate
+ ;
+
+mapEntrySelection
+ : ENTRY '(' path ')'
+ ;
+
+/**
+ * Deprecated syntax dating back to EJB-QL prior to EJB 3, required by JPA, never documented in Hibernate
+ */
+jpaSelectObjectSyntax
+ : OBJECT '(' identifier ')'
+ ;
+
+whereClause
+ : WHERE predicate (',' predicate)*
+ ;
+
+joinType
+ : INNER?
+ | (LEFT | RIGHT | FULL)? OUTER?
+ | CROSS
+ ;
+
+crossJoin
+ : CROSS JOIN entityName variable?
+ ;
+
+joinRestriction
+ : (ON | WITH) predicate
+ ;
+
+// Deprecated syntax dating back to EJB-QL prior to EJB 3, required by JPA, never documented in Hibernate
+jpaCollectionJoin
+ : ',' IN '(' path ')' variable?
+ ;
+
+groupByClause
+ : GROUP BY groupedItem (',' groupedItem)*
+ ;
+
+orderByClause
+ : ORDER BY sortedItem (',' sortedItem)*
+ ;
+
+havingClause
+ : HAVING predicate (',' predicate)*
+ ;
+
+setOperator
+ : UNION ALL?
+ | INTERSECT ALL?
+ | EXCEPT ALL?
+ ;
+
+// Literals
+// https://docs.jboss.org/hibernate/orm/6.1/userguide/html_single/Hibernate_User_Guide.html#hql-literals
+literal
+ : NULL
+ | booleanLiteral
+ | stringLiteral
+ | numericLiteral
+ | dateTimeLiteral
+ | binaryLiteral
+ ;
+
+// https://docs.jboss.org/hibernate/orm/6.1/userguide/html_single/Hibernate_User_Guide.html#hql-boolean-literals
+booleanLiteral
+ : TRUE
+ | FALSE
+ ;
+
+// https://docs.jboss.org/hibernate/orm/6.1/userguide/html_single/Hibernate_User_Guide.html#hql-string-literals
+stringLiteral
+ : STRINGLITERAL
+ | JAVASTRINGLITERAL
+ | CHARACTER
+ ;
+
+// https://docs.jboss.org/hibernate/orm/6.1/userguide/html_single/Hibernate_User_Guide.html#hql-numeric-literals
+numericLiteral
+ : INTEGER_LITERAL
+ | FLOAT_LITERAL
+ | HEXLITERAL
+ ;
+
+// https://docs.jboss.org/hibernate/orm/6.1/userguide/html_single/Hibernate_User_Guide.html#hql-datetime-literals
+dateTimeLiteral
+ : LOCAL_DATE
+ | LOCAL_TIME
+ | LOCAL_DATETIME
+ | CURRENT_DATE
+ | CURRENT_TIME
+ | CURRENT_TIMESTAMP
+ | OFFSET_DATETIME
+ | (LOCAL | CURRENT) DATE
+ | (LOCAL | CURRENT) TIME
+ | (LOCAL | CURRENT | OFFSET) DATETIME
+ | INSTANT
+ ;
+
+// https://docs.jboss.org/hibernate/orm/6.1/userguide/html_single/Hibernate_User_Guide.html#hql-duration-literals
+datetimeField
+ : YEAR
+ | MONTH
+ | DAY
+ | WEEK
+ | QUARTER
+ | HOUR
+ | MINUTE
+ | SECOND
+ | NANOSECOND
+ | EPOCH
+ ;
+
+// https://docs.jboss.org/hibernate/orm/6.1/userguide/html_single/Hibernate_User_Guide.html#hql-binary-literals
+binaryLiteral
+ : BINARY_LITERAL
+ | '{' HEXLITERAL (',' HEXLITERAL)* '}'
+ ;
+
+// https://docs.jboss.org/hibernate/orm/6.1/userguide/html_single/Hibernate_User_Guide.html#hql-enum-literals
+// TBD
+
+// https://docs.jboss.org/hibernate/orm/6.1/userguide/html_single/Hibernate_User_Guide.html#hql-java-constants
+// TBD
+
+// https://docs.jboss.org/hibernate/orm/6.1/userguide/html_single/Hibernate_User_Guide.html#hql-entity-name-literals
+// TBD
+
+// Expressions
+// https://docs.jboss.org/hibernate/orm/6.1/userguide/html_single/Hibernate_User_Guide.html#hql-expressions
+// https://docs.jboss.org/hibernate/orm/6.1/userguide/html_single/Hibernate_User_Guide.html#hql-concatenation
+// https://docs.jboss.org/hibernate/orm/6.1/userguide/html_single/Hibernate_User_Guide.html#hql-numeric-arithmetic
+expression
+ : '(' expression ')' # GroupedExpression
+ | '(' expressionOrPredicate (',' expressionOrPredicate)+ ')' # TupleExpression
+ | '(' subquery ')' # SubqueryExpression
+ | primaryExpression # PlainPrimaryExpression
+ | op=('+' | '-') numericLiteral # SignedNumericLiteral
+ | op=('+' | '-') expression # SignedExpression
+ | expression datetimeField # ToDurationExpression
+ | expression BY datetimeField # FromDurationExpression
+ | expression op=('*' | '/') expression # MultiplicationExpression
+ | expression op=('+' | '-') expression # AdditionExpression
+ | expression '||' expression # HqlConcatenationExpression
+ | DAY OF WEEK # DayOfWeekExpression
+ | DAY OF MONTH # DayOfMonthExpression
+ | WEEK OF YEAR # WeekOfYearExpression
+ ;
+
+primaryExpression
+ : caseList # CaseExpression
+ | literal # LiteralExpression
+ | parameter # ParameterExpression
+ | function # FunctionExpression
+ | generalPathFragment # GeneralPathExpression
+ ;
+
+// https://docs.jboss.org/hibernate/orm/6.1/userguide/html_single/Hibernate_User_Guide.html#hql-Datetime-arithmetic
+// TBD
+
+// https://docs.jboss.org/hibernate/orm/6.1/userguide/html_single/Hibernate_User_Guide.html#hql-path-expressions
+identificationVariable
+ : identifier
+ | simplePath
+ ;
+
+path
+ : treatedPath pathContinutation?
+ | generalPathFragment
+ ;
+
+generalPathFragment
+ : simplePath indexedPathAccessFragment?
+ ;
+
+indexedPathAccessFragment
+ : '[' expression ']' ('.' generalPathFragment)?
+ ;
+
+simplePath
+ : identifier simplePathElement*
+ ;
+
+simplePathElement
+ : '.' identifier
+ ;
+
+// https://docs.jboss.org/hibernate/orm/6.1/userguide/html_single/Hibernate_User_Guide.html#hql-case-expressions
+caseList
+ : simpleCaseExpression
+ | searchedCaseExpression
+ ;
+
+// https://docs.jboss.org/hibernate/orm/6.1/userguide/html_single/Hibernate_User_Guide.html#hql-simple-case-expressions
+simpleCaseExpression
+ : CASE expressionOrPredicate caseWhenExpressionClause+ (ELSE expressionOrPredicate)? END
+ ;
+
+// https://docs.jboss.org/hibernate/orm/6.1/userguide/html_single/Hibernate_User_Guide.html#hql-searched-case-expressions
+searchedCaseExpression
+ : CASE caseWhenPredicateClause+ (ELSE expressionOrPredicate)? END
+ ;
+
+caseWhenExpressionClause
+ : WHEN expression THEN expressionOrPredicate
+ ;
+
+caseWhenPredicateClause
+ : WHEN predicate THEN expressionOrPredicate
+ ;
+
+// Functions
+// https://docs.jboss.org/hibernate/orm/6.1/userguide/html_single/Hibernate_User_Guide.html#hql-exp-functions
+function
+ : functionName '(' (functionArguments | ASTERISK)? ')' pathContinutation? filterClause? withinGroup? overClause? # GenericFunction
+ | functionName '(' subquery ')' # FunctionWithSubquery
+ | castFunction # CastFunctionInvocation
+ | extractFunction # ExtractFunctionInvocation
+ | trimFunction # TrimFunctionInvocation
+ | everyFunction # EveryFunctionInvocation
+ | anyFunction # AnyFunctionInvocation
+ | treatedPath # TreatedPathInvocation
+ ;
+
+functionArguments
+ : DISTINCT? expressionOrPredicate (',' expressionOrPredicate)*
+ ;
+
+// https://docs.jboss.org/hibernate/orm/6.1/userguide/html_single/Hibernate_User_Guide.html#hql-aggregate-functions-filter
+filterClause
+ : FILTER '(' whereClause ')'
+ ;
+
+// https://docs.jboss.org/hibernate/orm/6.1/userguide/html_single/Hibernate_User_Guide.html#hql-aggregate-functions-orderedset
+withinGroup
+ : WITHIN GROUP '(' orderByClause ')'
+ ;
+
+overClause
+ : OVER '(' partitionClause? orderByClause? frameClause? ')'
+ ;
+
+partitionClause
+ : PARTITION BY expression (',' expression)*
+ ;
+
+frameClause
+ : (RANGE|ROWS|GROUPS) frameStart frameExclusion?
+ | (RANGE|ROWS|GROUPS) BETWEEN frameStart AND frameEnd frameExclusion?
+ ;
+
+frameStart
+ : UNBOUNDED PRECEDING # UnboundedPrecedingFrameStart
+ | expression PRECEDING # ExpressionPrecedingFrameStart
+ | CURRENT ROW # CurrentRowFrameStart
+ | expression FOLLOWING # ExpressionFollowingFrameStart
+ ;
+
+frameExclusion
+ : EXCLUDE CURRENT ROW # CurrentRowFrameExclusion
+ | EXCLUDE GROUP # GroupFrameExclusion
+ | EXCLUDE TIES # TiesFrameExclusion
+ | EXCLUDE NO OTHERS # NoOthersFrameExclusion
+ ;
+
+frameEnd
+ : expression PRECEDING # ExpressionPrecedingFrameEnd
+ | CURRENT ROW # CurrentRowFrameEnd
+ | expression FOLLOWING # ExpressionFollowingFrameEnd
+ | UNBOUNDED FOLLOWING # UnboundedFollowingFrameEnd
+ ;
+
+// https://docs.jboss.org/hibernate/orm/6.1/userguide/html_single/Hibernate_User_Guide.html#hql-functions
+castFunction
+ : CAST '(' expression AS castTarget ')'
+ ;
+
+castTarget
+ : castTargetType ('(' INTEGER_LITERAL (',' INTEGER_LITERAL)? ')')?
+ ;
+
+castTargetType
+ returns [String fullTargetName]
+ : (i=identifier { $fullTargetName = _localctx.i.getText(); }) ('.' c=identifier { $fullTargetName += ("." + _localctx.c.getText() ); })*
+ ;
+
+extractFunction
+ : EXTRACT '(' expression FROM expression ')'
+ | dateTimeFunction '(' expression ')'
+ ;
+
+trimFunction
+ : TRIM '(' (LEADING | TRAILING | BOTH)? stringLiteral? FROM? expression ')'
+ ;
+
+dateTimeFunction
+ : d=(YEAR
+ | MONTH
+ | DAY
+ | WEEK
+ | QUARTER
+ | HOUR
+ | MINUTE
+ | SECOND
+ | NANOSECOND
+ | EPOCH)
+ ;
+
+everyFunction
+ : every=(EVERY | ALL) '(' predicate ')'
+ | every=(EVERY | ALL) '(' subquery ')'
+ | every=(EVERY | ALL) (ELEMENTS | INDICES) '(' simplePath ')'
+ ;
+
+anyFunction
+ : any=(ANY | SOME) '(' predicate ')'
+ | any=(ANY | SOME) '(' subquery ')'
+ | any=(ANY | SOME) (ELEMENTS | INDICES) '(' simplePath ')'
+ ;
+
+// https://docs.jboss.org/hibernate/orm/6.1/userguide/html_single/Hibernate_User_Guide.html#hql-treat-type
+treatedPath
+ : TREAT '(' path AS simplePath')' pathContinutation?
+ ;
+
+pathContinutation
+ : '.' simplePath
+ ;
+
+// Predicates
+// https://docs.jboss.org/hibernate/orm/6.1/userguide/html_single/Hibernate_User_Guide.html#hql-conditional-expressions
+predicate
+ : '(' predicate ')' # GroupedPredicate
+ | dealingWithNullExpression # NullExpressionPredicate
+ | inExpression # InPredicate
+ | betweenExpression # BetweenPredicate
+ | relationalExpression # RelationalPredicate
+ | stringPatternMatching # LikePredicate
+ | existsExpression # ExistsPredicate
+ | collectionExpression # CollectionPredicate
+ | NOT predicate # NotPredicate
+ | predicate AND predicate # AndPredicate
+ | predicate OR predicate # OrPredicate
+ | expression # ExpressionPredicate
+ ;
+
+expressionOrPredicate
+ : expression
+ | predicate
+ ;
+
+// https://docs.jboss.org/hibernate/orm/6.1/userguide/html_single/Hibernate_User_Guide.html#hql-relational-comparisons
+// NOTE: The TIP shows that "!=" is also supported. Hibernate's source code shows that "^=" is another NOT_EQUALS option as well.
+relationalExpression
+ : expression op=('=' | '>' | '>=' | '<' | '<=' | '<>' | '!=' | '^=' ) expression
+ ;
+
+// https://docs.jboss.org/hibernate/orm/6.1/userguide/html_single/Hibernate_User_Guide.html#hql-between-predicate
+betweenExpression
+ : expression NOT? BETWEEN expression AND expression
+ ;
+
+// https://docs.jboss.org/hibernate/orm/6.1/userguide/html_single/Hibernate_User_Guide.html#hql-null-predicate
+dealingWithNullExpression
+ : expression IS NOT? NULL
+ | expression IS NOT? DISTINCT FROM expression
+ ;
+
+// https://docs.jboss.org/hibernate/orm/6.1/userguide/html_single/Hibernate_User_Guide.html#hql-like-predicate
+stringPatternMatching
+ : expression NOT? (LIKE | ILIKE) expression (ESCAPE (stringLiteral|parameter))?
+ ;
+
+// https://docs.jboss.org/hibernate/orm/6.1/userguide/html_single/Hibernate_User_Guide.html#hql-elements-indices
+// TBD
+
+// https://docs.jboss.org/hibernate/orm/6.1/userguide/html_single/Hibernate_User_Guide.html#hql-in-predicate
+inExpression
+ : expression NOT? IN inList
+ ;
+
+inList
+ : (ELEMENTS | INDICES) '(' simplePath ')'
+ | '(' subquery ')'
+ | parameter
+ | '(' (expressionOrPredicate (',' expressionOrPredicate)*)? ')'
+ ;
+
+// https://docs.jboss.org/hibernate/orm/6.1/userguide/html_single/Hibernate_User_Guide.html#hql-exists-predicate
+existsExpression
+ : EXISTS (ELEMENTS | INDICES) '(' simplePath ')'
+ | EXISTS expression
+ ;
+
+// https://docs.jboss.org/hibernate/orm/6.1/userguide/html_single/Hibernate_User_Guide.html#hql-collection-operators
+collectionExpression
+ : expression IS NOT? EMPTY
+ | expression NOT? MEMBER OF path
+ ;
+
+// Projection
+// https://docs.jboss.org/hibernate/orm/6.1/userguide/html_single/Hibernate_User_Guide.html#hql-select-new
+instantiationTarget
+ : LIST
+ | MAP
+ | simplePath
+ ;
+
+instantiationArguments
+ : instantiationArgument (',' instantiationArgument)*
+ ;
+
+instantiationArgument
+ : (expressionOrPredicate | instantiation) variable?
+ ;
+
+// Low level parsing rules
+
+parameterOrIntegerLiteral
+ : parameter
+ | INTEGER_LITERAL
+ ;
+
+parameterOrNumberLiteral
+ : parameter
+ | numericLiteral
+ ;
+
+variable
+ : AS identifier
+ | reservedWord
+ ;
+
+parameter
+ : prefix=':' identifier ('%')?
+ | prefix='?' INTEGER_LITERAL?
+ ;
+
+entityName
+ : identifier ('.' identifier)*
+ ;
+
+identifier
+ : reservedWord
+ ;
+
+character
+ : CHARACTER
+ ;
+
+functionName
+ : reservedWord ('.' reservedWord)*
+ ;
+
+reservedWord
+ : IDENTIFICATION_VARIABLE
+ | f=(ALL
+ | AND
+ | ANY
+ | AS
+ | ASC
+ | AVG
+ | BETWEEN
+ | BOTH
+ | BREADTH
+ | BY
+ | CASE
+ | CAST
+ | COLLATE
+ | COUNT
+ | CROSS
+ | CUBE
+ | CURRENT
+ | CURRENT_DATE
+ | CURRENT_INSTANT
+ | CURRENT_TIME
+ | CURRENT_TIMESTAMP
+ | CYCLE
+ | DATE
+ | DATETIME
+ | DAY
+ | DEFAULT
+ | DELETE
+ | DEPTH
+ | DESC
+ | DISTINCT
+ | ELEMENT
+ | ELEMENTS
+ | ELSE
+ | EMPTY
+ | END
+ | ENTRY
+ | EPOCH
+ | ERROR
+ | ESCAPE
+ | EVERY
+ | EXCEPT
+ | EXCLUDE
+ | EXISTS
+ | EXTRACT
+ | FETCH
+ | FILTER
+ | FIRST
+ | FLOOR
+ | FOLLOWING
+ | FOR
+ | FORMAT
+ | FROM
+ | FULL
+ | FUNCTION
+ | GROUP
+ | GROUPS
+ | HAVING
+ | HOUR
+ | ID
+ | IGNORE
+ | ILIKE
+ | IN
+ | INDEX
+ | INDICES
+ | INNER
+ | INSERT
+ | INSTANT
+ | INTERSECT
+ | INTO
+ | IS
+ | JOIN
+ | KEY
+ | LAST
+ | LEADING
+ | LEFT
+ | LIKE
+ | LIMIT
+ | LIST
+ | LISTAGG
+ | LOCAL
+ | LOCAL_DATE
+ | LOCAL_DATETIME
+ | LOCAL_TIME
+ | MAP
+ | MATERIALIZED
+ | MAX
+ | MAXELEMENT
+ | MAXINDEX
+ | MEMBER
+ | MICROSECOND
+ | MILLISECOND
+ | MIN
+ | MINELEMENT
+ | MININDEX
+ | MINUTE
+ | MONTH
+ | NANOSECOND
+ | NATURALID
+ | NEW
+ | NEXT
+ | NO
+ | NOT
+ | NULLS
+ | OBJECT
+ | OF
+ | OFFSET
+ | OFFSET_DATETIME
+ | ON
+ | ONLY
+ | OR
+ | ORDER
+ | OTHERS
+ | OUTER
+ | OVER
+ | OVERFLOW
+ | OVERLAY
+ | PAD
+ | PARTITION
+ | PERCENT
+ | PLACING
+ | POSITION
+ | POWER
+ | PRECEDING
+ | QUARTER
+ | RANGE
+ | RESPECT
+ | RIGHT
+ | ROLLUP
+ | ROW
+ | ROWS
+ | SEARCH
+ | SECOND
+ | SELECT
+ | SET
+ | SIZE
+ | SOME
+ | SUBSTRING
+ | SUM
+ | THEN
+ | TIES
+ | TIME
+ | TIMESTAMP
+ | TIMEZONE_HOUR
+ | TIMEZONE_MINUTE
+ | TO
+ | TRAILING
+ | TREAT
+ | TRIM
+ | TRUNC
+ | TRUNCATE
+ | TYPE
+ | UNBOUNDED
+ | UNION
+ | UPDATE
+ | USING
+ | VALUE
+ | VALUES
+ | VERSION
+ | VERSIONED
+ | WEEK
+ | WHEN
+ | WHERE
+ | WITH
+ | WITHIN
+ | WITHOUT
+ | YEAR)
+ ;
+
+/*
+ Lexer rules
+ */
+
+
+WS : [ \t\r\n] -> skip ;
+
+// Build up case-insentive tokens
+
+fragment A: 'a' | 'A';
+fragment B: 'b' | 'B';
+fragment C: 'c' | 'C';
+fragment D: 'd' | 'D';
+fragment E: 'e' | 'E';
+fragment F: 'f' | 'F';
+fragment G: 'g' | 'G';
+fragment H: 'h' | 'H';
+fragment I: 'i' | 'I';
+fragment J: 'j' | 'J';
+fragment K: 'k' | 'K';
+fragment L: 'l' | 'L';
+fragment M: 'm' | 'M';
+fragment N: 'n' | 'N';
+fragment O: 'o' | 'O';
+fragment P: 'p' | 'P';
+fragment Q: 'q' | 'Q';
+fragment R: 'r' | 'R';
+fragment S: 's' | 'S';
+fragment T: 't' | 'T';
+fragment U: 'u' | 'U';
+fragment V: 'v' | 'V';
+fragment W: 'w' | 'W';
+fragment X: 'x' | 'X';
+fragment Y: 'y' | 'Y';
+fragment Z: 'z' | 'Z';
+
+// The following are reserved identifiers:
+
+ALL : A L L;
+AND : A N D;
+ANY : A N Y;
+AS : A S;
+ASC : A S C;
+ASTERISK : '*';
+AVG : A V G;
+BETWEEN : B E T W E E N;
+BOTH : B O T H;
+BREADTH : B R E A D T H;
+BY : B Y;
+CASE : C A S E;
+CAST : C A S T;
+CEILING : C E I L I N G;
+COLLATE : C O L L A T E;
+COUNT : C O U N T;
+CROSS : C R O S S;
+CUBE : C U B E;
+CURRENT : C U R R E N T;
+CURRENT_DATE : C U R R E N T '_' D A T E;
+CURRENT_INSTANT : C U R R E N T '_' I N S T A N T;
+CURRENT_TIME : C U R R E N T '_' T I M E;
+CURRENT_TIMESTAMP : C U R R E N T '_' T I M E S T A M P;
+CYCLE : C Y C L E;
+DATE : D A T E;
+DATETIME : D A T E T I M E ;
+DAY : D A Y;
+DEFAULT : D E F A U L T;
+DELETE : D E L E T E;
+DEPTH : D E P T H;
+DESC : D E S C;
+DISTINCT : D I S T I N C T;
+ELEMENT : E L E M E N T;
+ELEMENTS : E L E M E N T S;
+ELSE : E L S E;
+EMPTY : E M P T Y;
+END : E N D;
+ENTRY : E N T R Y;
+EPOCH : E P O C H;
+ERROR : E R R O R;
+ESCAPE : E S C A P E;
+EVERY : E V E R Y;
+EXCEPT : E X C E P T;
+EXCLUDE : E X C L U D E;
+EXISTS : E X I S T S;
+EXP : E X P;
+EXTRACT : E X T R A C T;
+FALSE : F A L S E;
+FETCH : F E T C H;
+FILTER : F I L T E R;
+FIRST : F I R S T;
+FK : F K;
+FLOOR : F L O O R;
+FOLLOWING : F O L L O W I N G;
+FOR : F O R;
+FORMAT : F O R M A T;
+FROM : F R O M;
+FULL : F U L L;
+FUNCTION : F U N C T I O N;
+GROUP : G R O U P;
+GROUPS : G R O U P S;
+HAVING : H A V I N G;
+HOUR : H O U R;
+ID : I D;
+IGNORE : I G N O R E;
+ILIKE : I L I K E;
+IN : I N;
+INDEX : I N D E X;
+INDICES : I N D I C E S;
+INNER : I N N E R;
+INSERT : I N S E R T;
+INSTANT : I N S T A N T;
+INTERSECT : I N T E R S E C T;
+INTO : I N T O;
+IS : I S;
+JOIN : J O I N;
+KEY : K E Y;
+LAST : L A S T;
+LATERAL : L A T E R A L;
+LEADING : L E A D I N G;
+LEFT : L E F T;
+LIKE : L I K E;
+LIMIT : L I M I T;
+LIST : L I S T;
+LISTAGG : L I S T A G G;
+LN : L N;
+LOCAL : L O C A L;
+LOCAL_DATE : L O C A L '_' D A T E ;
+LOCAL_DATETIME : L O C A L '_' D A T E T I M E;
+LOCAL_TIME : L O C A L '_' T I M E;
+MAP : M A P;
+MATERIALIZED : M A T E R I A L I Z E D;
+MAX : M A X;
+MAXELEMENT : M A X E L E M E N T;
+MAXINDEX : M A X I N D E X;
+MEMBER : M E M B E R;
+MICROSECOND : M I C R O S E C O N D;
+MILLISECOND : M I L L I S E C O N D;
+MIN : M I N;
+MINELEMENT : M I N E L E M E N T;
+MININDEX : M I N I N D E X;
+MINUTE : M I N U T E;
+MONTH : M O N T H;
+NANOSECOND : N A N O S E C O N D;
+NATURALID : N A T U R A L I D;
+NEW : N E W;
+NEXT : N E X T;
+NO : N O;
+NOT : N O T;
+NULL : N U L L;
+NULLS : N U L L S;
+OBJECT : O B J E C T;
+OF : O F;
+OFFSET : O F F S E T;
+OFFSET_DATETIME : O F F S E T '_' D A T E T I M E;
+ON : O N;
+ONLY : O N L Y;
+OR : O R;
+ORDER : O R D E R;
+OTHERS : O T H E R S;
+OUTER : O U T E R;
+OVER : O V E R;
+OVERFLOW : O V E R F L O W;
+OVERLAY : O V E R L A Y;
+PAD : P A D;
+PARTITION : P A R T I T I O N;
+PERCENT : P E R C E N T;
+PLACING : P L A C I N G;
+POSITION : P O S I T I O N;
+POWER : P O W E R;
+PRECEDING : P R E C E D I N G;
+QUARTER : Q U A R T E R;
+RANGE : R A N G E;
+RESPECT : R E S P E C T;
+RIGHT : R I G H T;
+ROLLUP : R O L L U P;
+ROW : R O W;
+ROWS : R O W S;
+SEARCH : S E A R C H;
+SECOND : S E C O N D;
+SELECT : S E L E C T;
+SET : S E T;
+SIZE : S I Z E;
+SOME : S O M E;
+SUBSTRING : S U B S T R I N G;
+SUM : S U M;
+THEN : T H E N;
+TIES : T I E S;
+TIME : T I M E;
+TIMESTAMP : T I M E S T A M P;
+TIMEZONE_HOUR : T I M E Z O N E '_' H O U R;
+TIMEZONE_MINUTE : T I M E Z O N E '_' M I N U T E;
+TO : T O;
+TRAILING : T R A I L I N G;
+TREAT : T R E A T;
+TRIM : T R I M;
+TRUE : T R U E;
+TRUNC : T R U N C;
+TRUNCATE : T R U N C A T E;
+TYPE : T Y P E;
+UNBOUNDED : U N B O U N D E D;
+UNION : U N I O N;
+UPDATE : U P D A T E;
+USING : U S I N G;
+VALUE : V A L U E;
+VALUES : V A L U E S;
+VERSION : V E R S I O N;
+VERSIONED : V E R S I O N E D;
+WEEK : W E E K;
+WHEN : W H E N;
+WHERE : W H E R E;
+WITH : W I T H;
+WITHIN : W I T H I N;
+WITHOUT : W I T H O U T;
+YEAR : Y E A R;
+
+fragment INTEGER_NUMBER : ('0' .. '9')+ ;
+fragment FLOAT_NUMBER : INTEGER_NUMBER+ '.'? INTEGER_NUMBER* (E [+-]? INTEGER_NUMBER)? ;
+fragment HEX_DIGIT : [0-9a-fA-F];
+
+
+CHARACTER : '\'' (~ ('\'' | '\\' )) '\'' ;
+STRINGLITERAL : '\'' ('\'' '\'' | ~('\''))* '\'' ;
+JAVASTRINGLITERAL : '"' ( ('\\' [btnfr"']) | ~('"'))* '"';
+INTEGER_LITERAL : INTEGER_NUMBER (L | B I)? ;
+FLOAT_LITERAL : FLOAT_NUMBER (D | F | B D)?;
+HEXLITERAL : '0' X HEX_DIGIT+ ;
+BINARY_LITERAL : [xX] '\'' HEX_DIGIT+ '\''
+ | [xX] '"' HEX_DIGIT+ '"'
+ ;
+
+IDENTIFICATION_VARIABLE : ('a' .. 'z' | 'A' .. 'Z' | '\u0080' .. '\ufffe' | '$' | '_') ('a' .. 'z' | 'A' .. 'Z' | '\u0080' .. '\ufffe' | '0' .. '9' | '$' | '_')* ;
\ No newline at end of file
diff --git a/headless-services/commons/jpql/src/main/java/org/springframework/ide/vscode/parser/hql/HqlBaseListener.java b/headless-services/commons/jpql/src/main/java/org/springframework/ide/vscode/parser/hql/HqlBaseListener.java
new file mode 100644
index 000000000..080b8972f
--- /dev/null
+++ b/headless-services/commons/jpql/src/main/java/org/springframework/ide/vscode/parser/hql/HqlBaseListener.java
@@ -0,0 +1,2009 @@
+// Generated from Hql.g4 by ANTLR 4.13.1
+package org.springframework.ide.vscode.parser.hql;
+
+/**
+ * HQL per https://docs.jboss.org/hibernate/orm/6.1/userguide/html_single/Hibernate_User_Guide.html#query-language
+ *
+ * This is a mixture of Hibernate's BNF and missing bits of grammar. There are gaps and inconsistencies in the
+ * BNF itself, explained by other fragments of their spec. Additionally, alternate labels are used to provide easier
+ * management of complex rules in the generated Visitor. Finally, there are labels applied to rule elements (op=('+'|'-')
+ * to simplify the processing.
+ *
+ * @author Greg Turnquist
+ * @since 3.1
+ */
+
+
+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 HqlListener},
+ * which can be extended to create a listener which only needs to handle a subset
+ * of the available methods.
+ */
+@SuppressWarnings("CheckReturnValue")
+public class HqlBaseListener implements HqlListener {
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation does nothing.
+ */
+ @Override public void enterStart(HqlParser.StartContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitStart(HqlParser.StartContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterQl_statement(HqlParser.Ql_statementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitQl_statement(HqlParser.Ql_statementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterSelectStatement(HqlParser.SelectStatementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitSelectStatement(HqlParser.SelectStatementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterQueryExpression(HqlParser.QueryExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitQueryExpression(HqlParser.QueryExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterWithClause(HqlParser.WithClauseContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitWithClause(HqlParser.WithClauseContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterCte(HqlParser.CteContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitCte(HqlParser.CteContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterSearchClause(HqlParser.SearchClauseContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitSearchClause(HqlParser.SearchClauseContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterSearchSpecifications(HqlParser.SearchSpecificationsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitSearchSpecifications(HqlParser.SearchSpecificationsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterSearchSpecification(HqlParser.SearchSpecificationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitSearchSpecification(HqlParser.SearchSpecificationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterCycleClause(HqlParser.CycleClauseContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitCycleClause(HqlParser.CycleClauseContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterCteAttributes(HqlParser.CteAttributesContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitCteAttributes(HqlParser.CteAttributesContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterOrderedQuery(HqlParser.OrderedQueryContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitOrderedQuery(HqlParser.OrderedQueryContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterSelectQuery(HqlParser.SelectQueryContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitSelectQuery(HqlParser.SelectQueryContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterFromQuery(HqlParser.FromQueryContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitFromQuery(HqlParser.FromQueryContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterQueryOrder(HqlParser.QueryOrderContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitQueryOrder(HqlParser.QueryOrderContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterFromClause(HqlParser.FromClauseContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitFromClause(HqlParser.FromClauseContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterEntityWithJoins(HqlParser.EntityWithJoinsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitEntityWithJoins(HqlParser.EntityWithJoinsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterJoinSpecifier(HqlParser.JoinSpecifierContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitJoinSpecifier(HqlParser.JoinSpecifierContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterFromRoot(HqlParser.FromRootContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitFromRoot(HqlParser.FromRootContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterJoin(HqlParser.JoinContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitJoin(HqlParser.JoinContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterJoinPath(HqlParser.JoinPathContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitJoinPath(HqlParser.JoinPathContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterJoinSubquery(HqlParser.JoinSubqueryContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitJoinSubquery(HqlParser.JoinSubqueryContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterUpdateStatement(HqlParser.UpdateStatementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitUpdateStatement(HqlParser.UpdateStatementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterTargetEntity(HqlParser.TargetEntityContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitTargetEntity(HqlParser.TargetEntityContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterSetClause(HqlParser.SetClauseContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitSetClause(HqlParser.SetClauseContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterAssignment(HqlParser.AssignmentContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitAssignment(HqlParser.AssignmentContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterDeleteStatement(HqlParser.DeleteStatementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitDeleteStatement(HqlParser.DeleteStatementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterInsertStatement(HqlParser.InsertStatementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitInsertStatement(HqlParser.InsertStatementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterTargetFields(HqlParser.TargetFieldsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitTargetFields(HqlParser.TargetFieldsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterValuesList(HqlParser.ValuesListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitValuesList(HqlParser.ValuesListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterValues(HqlParser.ValuesContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitValues(HqlParser.ValuesContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterInstantiation(HqlParser.InstantiationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitInstantiation(HqlParser.InstantiationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterAlias(HqlParser.AliasContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitAlias(HqlParser.AliasContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterGroupedItem(HqlParser.GroupedItemContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitGroupedItem(HqlParser.GroupedItemContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterSortedItem(HqlParser.SortedItemContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitSortedItem(HqlParser.SortedItemContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterSortExpression(HqlParser.SortExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitSortExpression(HqlParser.SortExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterSortDirection(HqlParser.SortDirectionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitSortDirection(HqlParser.SortDirectionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterNullsPrecedence(HqlParser.NullsPrecedenceContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitNullsPrecedence(HqlParser.NullsPrecedenceContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterLimitClause(HqlParser.LimitClauseContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitLimitClause(HqlParser.LimitClauseContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterOffsetClause(HqlParser.OffsetClauseContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitOffsetClause(HqlParser.OffsetClauseContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterFetchClause(HqlParser.FetchClauseContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitFetchClause(HqlParser.FetchClauseContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterSubquery(HqlParser.SubqueryContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitSubquery(HqlParser.SubqueryContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterSelectClause(HqlParser.SelectClauseContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitSelectClause(HqlParser.SelectClauseContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterSelectionList(HqlParser.SelectionListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitSelectionList(HqlParser.SelectionListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterSelection(HqlParser.SelectionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitSelection(HqlParser.SelectionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterSelectExpression(HqlParser.SelectExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitSelectExpression(HqlParser.SelectExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterMapEntrySelection(HqlParser.MapEntrySelectionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitMapEntrySelection(HqlParser.MapEntrySelectionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterJpaSelectObjectSyntax(HqlParser.JpaSelectObjectSyntaxContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitJpaSelectObjectSyntax(HqlParser.JpaSelectObjectSyntaxContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterWhereClause(HqlParser.WhereClauseContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitWhereClause(HqlParser.WhereClauseContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterJoinType(HqlParser.JoinTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitJoinType(HqlParser.JoinTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterCrossJoin(HqlParser.CrossJoinContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitCrossJoin(HqlParser.CrossJoinContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterJoinRestriction(HqlParser.JoinRestrictionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitJoinRestriction(HqlParser.JoinRestrictionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterJpaCollectionJoin(HqlParser.JpaCollectionJoinContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitJpaCollectionJoin(HqlParser.JpaCollectionJoinContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterGroupByClause(HqlParser.GroupByClauseContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitGroupByClause(HqlParser.GroupByClauseContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterOrderByClause(HqlParser.OrderByClauseContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitOrderByClause(HqlParser.OrderByClauseContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterHavingClause(HqlParser.HavingClauseContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitHavingClause(HqlParser.HavingClauseContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterSetOperator(HqlParser.SetOperatorContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitSetOperator(HqlParser.SetOperatorContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterLiteral(HqlParser.LiteralContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitLiteral(HqlParser.LiteralContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterBooleanLiteral(HqlParser.BooleanLiteralContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitBooleanLiteral(HqlParser.BooleanLiteralContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterStringLiteral(HqlParser.StringLiteralContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitStringLiteral(HqlParser.StringLiteralContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterNumericLiteral(HqlParser.NumericLiteralContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitNumericLiteral(HqlParser.NumericLiteralContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterDateTimeLiteral(HqlParser.DateTimeLiteralContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitDateTimeLiteral(HqlParser.DateTimeLiteralContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterDatetimeField(HqlParser.DatetimeFieldContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitDatetimeField(HqlParser.DatetimeFieldContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterBinaryLiteral(HqlParser.BinaryLiteralContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitBinaryLiteral(HqlParser.BinaryLiteralContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterAdditionExpression(HqlParser.AdditionExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitAdditionExpression(HqlParser.AdditionExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterFromDurationExpression(HqlParser.FromDurationExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitFromDurationExpression(HqlParser.FromDurationExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterPlainPrimaryExpression(HqlParser.PlainPrimaryExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitPlainPrimaryExpression(HqlParser.PlainPrimaryExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterTupleExpression(HqlParser.TupleExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitTupleExpression(HqlParser.TupleExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterGroupedExpression(HqlParser.GroupedExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitGroupedExpression(HqlParser.GroupedExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterSignedNumericLiteral(HqlParser.SignedNumericLiteralContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitSignedNumericLiteral(HqlParser.SignedNumericLiteralContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterToDurationExpression(HqlParser.ToDurationExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitToDurationExpression(HqlParser.ToDurationExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterSubqueryExpression(HqlParser.SubqueryExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitSubqueryExpression(HqlParser.SubqueryExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterDayOfMonthExpression(HqlParser.DayOfMonthExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitDayOfMonthExpression(HqlParser.DayOfMonthExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterDayOfWeekExpression(HqlParser.DayOfWeekExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitDayOfWeekExpression(HqlParser.DayOfWeekExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterWeekOfYearExpression(HqlParser.WeekOfYearExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitWeekOfYearExpression(HqlParser.WeekOfYearExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterHqlConcatenationExpression(HqlParser.HqlConcatenationExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitHqlConcatenationExpression(HqlParser.HqlConcatenationExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterMultiplicationExpression(HqlParser.MultiplicationExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitMultiplicationExpression(HqlParser.MultiplicationExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterSignedExpression(HqlParser.SignedExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitSignedExpression(HqlParser.SignedExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterCaseExpression(HqlParser.CaseExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitCaseExpression(HqlParser.CaseExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterLiteralExpression(HqlParser.LiteralExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitLiteralExpression(HqlParser.LiteralExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterParameterExpression(HqlParser.ParameterExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitParameterExpression(HqlParser.ParameterExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterFunctionExpression(HqlParser.FunctionExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitFunctionExpression(HqlParser.FunctionExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterGeneralPathExpression(HqlParser.GeneralPathExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitGeneralPathExpression(HqlParser.GeneralPathExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterIdentificationVariable(HqlParser.IdentificationVariableContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitIdentificationVariable(HqlParser.IdentificationVariableContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterPath(HqlParser.PathContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitPath(HqlParser.PathContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterGeneralPathFragment(HqlParser.GeneralPathFragmentContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitGeneralPathFragment(HqlParser.GeneralPathFragmentContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterIndexedPathAccessFragment(HqlParser.IndexedPathAccessFragmentContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitIndexedPathAccessFragment(HqlParser.IndexedPathAccessFragmentContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterSimplePath(HqlParser.SimplePathContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitSimplePath(HqlParser.SimplePathContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterSimplePathElement(HqlParser.SimplePathElementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitSimplePathElement(HqlParser.SimplePathElementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterCaseList(HqlParser.CaseListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitCaseList(HqlParser.CaseListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterSimpleCaseExpression(HqlParser.SimpleCaseExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitSimpleCaseExpression(HqlParser.SimpleCaseExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterSearchedCaseExpression(HqlParser.SearchedCaseExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitSearchedCaseExpression(HqlParser.SearchedCaseExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterCaseWhenExpressionClause(HqlParser.CaseWhenExpressionClauseContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitCaseWhenExpressionClause(HqlParser.CaseWhenExpressionClauseContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterCaseWhenPredicateClause(HqlParser.CaseWhenPredicateClauseContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitCaseWhenPredicateClause(HqlParser.CaseWhenPredicateClauseContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterGenericFunction(HqlParser.GenericFunctionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitGenericFunction(HqlParser.GenericFunctionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterFunctionWithSubquery(HqlParser.FunctionWithSubqueryContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitFunctionWithSubquery(HqlParser.FunctionWithSubqueryContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterCastFunctionInvocation(HqlParser.CastFunctionInvocationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitCastFunctionInvocation(HqlParser.CastFunctionInvocationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterExtractFunctionInvocation(HqlParser.ExtractFunctionInvocationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitExtractFunctionInvocation(HqlParser.ExtractFunctionInvocationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterTrimFunctionInvocation(HqlParser.TrimFunctionInvocationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitTrimFunctionInvocation(HqlParser.TrimFunctionInvocationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterEveryFunctionInvocation(HqlParser.EveryFunctionInvocationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitEveryFunctionInvocation(HqlParser.EveryFunctionInvocationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterAnyFunctionInvocation(HqlParser.AnyFunctionInvocationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitAnyFunctionInvocation(HqlParser.AnyFunctionInvocationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterTreatedPathInvocation(HqlParser.TreatedPathInvocationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitTreatedPathInvocation(HqlParser.TreatedPathInvocationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterFunctionArguments(HqlParser.FunctionArgumentsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitFunctionArguments(HqlParser.FunctionArgumentsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterFilterClause(HqlParser.FilterClauseContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitFilterClause(HqlParser.FilterClauseContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterWithinGroup(HqlParser.WithinGroupContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitWithinGroup(HqlParser.WithinGroupContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterOverClause(HqlParser.OverClauseContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitOverClause(HqlParser.OverClauseContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterPartitionClause(HqlParser.PartitionClauseContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitPartitionClause(HqlParser.PartitionClauseContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterFrameClause(HqlParser.FrameClauseContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitFrameClause(HqlParser.FrameClauseContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterUnboundedPrecedingFrameStart(HqlParser.UnboundedPrecedingFrameStartContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitUnboundedPrecedingFrameStart(HqlParser.UnboundedPrecedingFrameStartContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterExpressionPrecedingFrameStart(HqlParser.ExpressionPrecedingFrameStartContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitExpressionPrecedingFrameStart(HqlParser.ExpressionPrecedingFrameStartContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterCurrentRowFrameStart(HqlParser.CurrentRowFrameStartContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitCurrentRowFrameStart(HqlParser.CurrentRowFrameStartContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterExpressionFollowingFrameStart(HqlParser.ExpressionFollowingFrameStartContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitExpressionFollowingFrameStart(HqlParser.ExpressionFollowingFrameStartContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterCurrentRowFrameExclusion(HqlParser.CurrentRowFrameExclusionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitCurrentRowFrameExclusion(HqlParser.CurrentRowFrameExclusionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterGroupFrameExclusion(HqlParser.GroupFrameExclusionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitGroupFrameExclusion(HqlParser.GroupFrameExclusionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterTiesFrameExclusion(HqlParser.TiesFrameExclusionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitTiesFrameExclusion(HqlParser.TiesFrameExclusionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterNoOthersFrameExclusion(HqlParser.NoOthersFrameExclusionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitNoOthersFrameExclusion(HqlParser.NoOthersFrameExclusionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterExpressionPrecedingFrameEnd(HqlParser.ExpressionPrecedingFrameEndContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitExpressionPrecedingFrameEnd(HqlParser.ExpressionPrecedingFrameEndContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterCurrentRowFrameEnd(HqlParser.CurrentRowFrameEndContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitCurrentRowFrameEnd(HqlParser.CurrentRowFrameEndContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterExpressionFollowingFrameEnd(HqlParser.ExpressionFollowingFrameEndContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitExpressionFollowingFrameEnd(HqlParser.ExpressionFollowingFrameEndContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterUnboundedFollowingFrameEnd(HqlParser.UnboundedFollowingFrameEndContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitUnboundedFollowingFrameEnd(HqlParser.UnboundedFollowingFrameEndContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterCastFunction(HqlParser.CastFunctionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitCastFunction(HqlParser.CastFunctionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterCastTarget(HqlParser.CastTargetContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitCastTarget(HqlParser.CastTargetContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterCastTargetType(HqlParser.CastTargetTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitCastTargetType(HqlParser.CastTargetTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterExtractFunction(HqlParser.ExtractFunctionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitExtractFunction(HqlParser.ExtractFunctionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterTrimFunction(HqlParser.TrimFunctionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitTrimFunction(HqlParser.TrimFunctionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterDateTimeFunction(HqlParser.DateTimeFunctionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitDateTimeFunction(HqlParser.DateTimeFunctionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterEveryFunction(HqlParser.EveryFunctionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitEveryFunction(HqlParser.EveryFunctionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterAnyFunction(HqlParser.AnyFunctionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitAnyFunction(HqlParser.AnyFunctionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterTreatedPath(HqlParser.TreatedPathContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitTreatedPath(HqlParser.TreatedPathContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterPathContinutation(HqlParser.PathContinutationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitPathContinutation(HqlParser.PathContinutationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterNullExpressionPredicate(HqlParser.NullExpressionPredicateContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitNullExpressionPredicate(HqlParser.NullExpressionPredicateContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterBetweenPredicate(HqlParser.BetweenPredicateContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitBetweenPredicate(HqlParser.BetweenPredicateContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterOrPredicate(HqlParser.OrPredicateContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitOrPredicate(HqlParser.OrPredicateContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterRelationalPredicate(HqlParser.RelationalPredicateContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitRelationalPredicate(HqlParser.RelationalPredicateContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterExistsPredicate(HqlParser.ExistsPredicateContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitExistsPredicate(HqlParser.ExistsPredicateContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterCollectionPredicate(HqlParser.CollectionPredicateContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitCollectionPredicate(HqlParser.CollectionPredicateContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterAndPredicate(HqlParser.AndPredicateContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitAndPredicate(HqlParser.AndPredicateContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterGroupedPredicate(HqlParser.GroupedPredicateContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitGroupedPredicate(HqlParser.GroupedPredicateContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterLikePredicate(HqlParser.LikePredicateContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitLikePredicate(HqlParser.LikePredicateContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterInPredicate(HqlParser.InPredicateContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitInPredicate(HqlParser.InPredicateContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterNotPredicate(HqlParser.NotPredicateContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitNotPredicate(HqlParser.NotPredicateContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterExpressionPredicate(HqlParser.ExpressionPredicateContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitExpressionPredicate(HqlParser.ExpressionPredicateContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterExpressionOrPredicate(HqlParser.ExpressionOrPredicateContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitExpressionOrPredicate(HqlParser.ExpressionOrPredicateContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterRelationalExpression(HqlParser.RelationalExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitRelationalExpression(HqlParser.RelationalExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterBetweenExpression(HqlParser.BetweenExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitBetweenExpression(HqlParser.BetweenExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterDealingWithNullExpression(HqlParser.DealingWithNullExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitDealingWithNullExpression(HqlParser.DealingWithNullExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterStringPatternMatching(HqlParser.StringPatternMatchingContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitStringPatternMatching(HqlParser.StringPatternMatchingContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterInExpression(HqlParser.InExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitInExpression(HqlParser.InExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterInList(HqlParser.InListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitInList(HqlParser.InListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterExistsExpression(HqlParser.ExistsExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitExistsExpression(HqlParser.ExistsExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterCollectionExpression(HqlParser.CollectionExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitCollectionExpression(HqlParser.CollectionExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterInstantiationTarget(HqlParser.InstantiationTargetContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitInstantiationTarget(HqlParser.InstantiationTargetContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterInstantiationArguments(HqlParser.InstantiationArgumentsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitInstantiationArguments(HqlParser.InstantiationArgumentsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterInstantiationArgument(HqlParser.InstantiationArgumentContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitInstantiationArgument(HqlParser.InstantiationArgumentContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterParameterOrIntegerLiteral(HqlParser.ParameterOrIntegerLiteralContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitParameterOrIntegerLiteral(HqlParser.ParameterOrIntegerLiteralContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterParameterOrNumberLiteral(HqlParser.ParameterOrNumberLiteralContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitParameterOrNumberLiteral(HqlParser.ParameterOrNumberLiteralContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterVariable(HqlParser.VariableContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitVariable(HqlParser.VariableContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterParameter(HqlParser.ParameterContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitParameter(HqlParser.ParameterContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterEntityName(HqlParser.EntityNameContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitEntityName(HqlParser.EntityNameContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterIdentifier(HqlParser.IdentifierContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitIdentifier(HqlParser.IdentifierContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterCharacter(HqlParser.CharacterContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitCharacter(HqlParser.CharacterContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterFunctionName(HqlParser.FunctionNameContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitFunctionName(HqlParser.FunctionNameContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterReservedWord(HqlParser.ReservedWordContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitReservedWord(HqlParser.ReservedWordContext 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/headless-services/commons/jpql/src/main/java/org/springframework/ide/vscode/parser/hql/HqlLexer.java b/headless-services/commons/jpql/src/main/java/org/springframework/ide/vscode/parser/hql/HqlLexer.java
new file mode 100644
index 000000000..dbdf0727b
--- /dev/null
+++ b/headless-services/commons/jpql/src/main/java/org/springframework/ide/vscode/parser/hql/HqlLexer.java
@@ -0,0 +1,1328 @@
+// Generated from Hql.g4 by ANTLR 4.13.1
+package org.springframework.ide.vscode.parser.hql;
+
+/**
+ * HQL per https://docs.jboss.org/hibernate/orm/6.1/userguide/html_single/Hibernate_User_Guide.html#query-language
+ *
+ * This is a mixture of Hibernate's BNF and missing bits of grammar. There are gaps and inconsistencies in the
+ * BNF itself, explained by other fragments of their spec. Additionally, alternate labels are used to provide easier
+ * management of complex rules in the generated Visitor. Finally, there are labels applied to rule elements (op=('+'|'-')
+ * to simplify the processing.
+ *
+ * @author Greg Turnquist
+ * @since 3.1
+ */
+
+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 HqlLexer 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
+ T__0=1, T__1=2, T__2=3, T__3=4, T__4=5, T__5=6, T__6=7, T__7=8, T__8=9,
+ T__9=10, T__10=11, T__11=12, T__12=13, T__13=14, T__14=15, T__15=16, T__16=17,
+ T__17=18, T__18=19, T__19=20, T__20=21, T__21=22, T__22=23, WS=24, ALL=25,
+ AND=26, ANY=27, AS=28, ASC=29, ASTERISK=30, AVG=31, BETWEEN=32, BOTH=33,
+ BREADTH=34, BY=35, CASE=36, CAST=37, CEILING=38, COLLATE=39, COUNT=40,
+ CROSS=41, CUBE=42, CURRENT=43, CURRENT_DATE=44, CURRENT_INSTANT=45, CURRENT_TIME=46,
+ CURRENT_TIMESTAMP=47, CYCLE=48, DATE=49, DATETIME=50, DAY=51, DEFAULT=52,
+ DELETE=53, DEPTH=54, DESC=55, DISTINCT=56, ELEMENT=57, ELEMENTS=58, ELSE=59,
+ EMPTY=60, END=61, ENTRY=62, EPOCH=63, ERROR=64, ESCAPE=65, EVERY=66, EXCEPT=67,
+ EXCLUDE=68, EXISTS=69, EXP=70, EXTRACT=71, FALSE=72, FETCH=73, FILTER=74,
+ FIRST=75, FK=76, FLOOR=77, FOLLOWING=78, FOR=79, FORMAT=80, FROM=81, FULL=82,
+ FUNCTION=83, GROUP=84, GROUPS=85, HAVING=86, HOUR=87, ID=88, IGNORE=89,
+ ILIKE=90, IN=91, INDEX=92, INDICES=93, INNER=94, INSERT=95, INSTANT=96,
+ INTERSECT=97, INTO=98, IS=99, JOIN=100, KEY=101, LAST=102, LATERAL=103,
+ LEADING=104, LEFT=105, LIKE=106, LIMIT=107, LIST=108, LISTAGG=109, LN=110,
+ LOCAL=111, LOCAL_DATE=112, LOCAL_DATETIME=113, LOCAL_TIME=114, MAP=115,
+ MATERIALIZED=116, MAX=117, MAXELEMENT=118, MAXINDEX=119, MEMBER=120, MICROSECOND=121,
+ MILLISECOND=122, MIN=123, MINELEMENT=124, MININDEX=125, MINUTE=126, MONTH=127,
+ NANOSECOND=128, NATURALID=129, NEW=130, NEXT=131, NO=132, NOT=133, NULL=134,
+ NULLS=135, OBJECT=136, OF=137, OFFSET=138, OFFSET_DATETIME=139, ON=140,
+ ONLY=141, OR=142, ORDER=143, OTHERS=144, OUTER=145, OVER=146, OVERFLOW=147,
+ OVERLAY=148, PAD=149, PARTITION=150, PERCENT=151, PLACING=152, POSITION=153,
+ POWER=154, PRECEDING=155, QUARTER=156, RANGE=157, RESPECT=158, RIGHT=159,
+ ROLLUP=160, ROW=161, ROWS=162, SEARCH=163, SECOND=164, SELECT=165, SET=166,
+ SIZE=167, SOME=168, SUBSTRING=169, SUM=170, THEN=171, TIES=172, TIME=173,
+ TIMESTAMP=174, TIMEZONE_HOUR=175, TIMEZONE_MINUTE=176, TO=177, TRAILING=178,
+ TREAT=179, TRIM=180, TRUE=181, TRUNC=182, TRUNCATE=183, TYPE=184, UNBOUNDED=185,
+ UNION=186, UPDATE=187, USING=188, VALUE=189, VALUES=190, VERSION=191,
+ VERSIONED=192, WEEK=193, WHEN=194, WHERE=195, WITH=196, WITHIN=197, WITHOUT=198,
+ YEAR=199, CHARACTER=200, STRINGLITERAL=201, JAVASTRINGLITERAL=202, INTEGER_LITERAL=203,
+ FLOAT_LITERAL=204, HEXLITERAL=205, BINARY_LITERAL=206, IDENTIFICATION_VARIABLE=207;
+ public static String[] channelNames = {
+ "DEFAULT_TOKEN_CHANNEL", "HIDDEN"
+ };
+
+ public static String[] modeNames = {
+ "DEFAULT_MODE"
+ };
+
+ private static String[] makeRuleNames() {
+ return new String[] {
+ "T__0", "T__1", "T__2", "T__3", "T__4", "T__5", "T__6", "T__7", "T__8",
+ "T__9", "T__10", "T__11", "T__12", "T__13", "T__14", "T__15", "T__16",
+ "T__17", "T__18", "T__19", "T__20", "T__21", "T__22", "WS", "A", "B",
+ "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P",
+ "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "ALL", "AND", "ANY",
+ "AS", "ASC", "ASTERISK", "AVG", "BETWEEN", "BOTH", "BREADTH", "BY", "CASE",
+ "CAST", "CEILING", "COLLATE", "COUNT", "CROSS", "CUBE", "CURRENT", "CURRENT_DATE",
+ "CURRENT_INSTANT", "CURRENT_TIME", "CURRENT_TIMESTAMP", "CYCLE", "DATE",
+ "DATETIME", "DAY", "DEFAULT", "DELETE", "DEPTH", "DESC", "DISTINCT",
+ "ELEMENT", "ELEMENTS", "ELSE", "EMPTY", "END", "ENTRY", "EPOCH", "ERROR",
+ "ESCAPE", "EVERY", "EXCEPT", "EXCLUDE", "EXISTS", "EXP", "EXTRACT", "FALSE",
+ "FETCH", "FILTER", "FIRST", "FK", "FLOOR", "FOLLOWING", "FOR", "FORMAT",
+ "FROM", "FULL", "FUNCTION", "GROUP", "GROUPS", "HAVING", "HOUR", "ID",
+ "IGNORE", "ILIKE", "IN", "INDEX", "INDICES", "INNER", "INSERT", "INSTANT",
+ "INTERSECT", "INTO", "IS", "JOIN", "KEY", "LAST", "LATERAL", "LEADING",
+ "LEFT", "LIKE", "LIMIT", "LIST", "LISTAGG", "LN", "LOCAL", "LOCAL_DATE",
+ "LOCAL_DATETIME", "LOCAL_TIME", "MAP", "MATERIALIZED", "MAX", "MAXELEMENT",
+ "MAXINDEX", "MEMBER", "MICROSECOND", "MILLISECOND", "MIN", "MINELEMENT",
+ "MININDEX", "MINUTE", "MONTH", "NANOSECOND", "NATURALID", "NEW", "NEXT",
+ "NO", "NOT", "NULL", "NULLS", "OBJECT", "OF", "OFFSET", "OFFSET_DATETIME",
+ "ON", "ONLY", "OR", "ORDER", "OTHERS", "OUTER", "OVER", "OVERFLOW", "OVERLAY",
+ "PAD", "PARTITION", "PERCENT", "PLACING", "POSITION", "POWER", "PRECEDING",
+ "QUARTER", "RANGE", "RESPECT", "RIGHT", "ROLLUP", "ROW", "ROWS", "SEARCH",
+ "SECOND", "SELECT", "SET", "SIZE", "SOME", "SUBSTRING", "SUM", "THEN",
+ "TIES", "TIME", "TIMESTAMP", "TIMEZONE_HOUR", "TIMEZONE_MINUTE", "TO",
+ "TRAILING", "TREAT", "TRIM", "TRUE", "TRUNC", "TRUNCATE", "TYPE", "UNBOUNDED",
+ "UNION", "UPDATE", "USING", "VALUE", "VALUES", "VERSION", "VERSIONED",
+ "WEEK", "WHEN", "WHERE", "WITH", "WITHIN", "WITHOUT", "YEAR", "INTEGER_NUMBER",
+ "FLOAT_NUMBER", "HEX_DIGIT", "CHARACTER", "STRINGLITERAL", "JAVASTRINGLITERAL",
+ "INTEGER_LITERAL", "FLOAT_LITERAL", "HEXLITERAL", "BINARY_LITERAL", "IDENTIFICATION_VARIABLE"
+ };
+ }
+ public static final String[] ruleNames = makeRuleNames();
+
+ private static String[] makeLiteralNames() {
+ return new String[] {
+ null, "','", "'('", "')'", "'='", "'%'", "'{'", "'}'", "'+'", "'-'",
+ "'/'", "'||'", "'['", "']'", "'.'", "'>'", "'>='", "'<'", "'<='", "'<>'",
+ "'!='", "'^='", "':'", "'?'", null, null, null, null, null, null, "'*'"
+ };
+ }
+ private static final String[] _LITERAL_NAMES = makeLiteralNames();
+ private static String[] makeSymbolicNames() {
+ return new String[] {
+ null, null, null, null, null, null, null, null, null, null, null, null,
+ null, null, null, null, null, null, null, null, null, null, null, null,
+ "WS", "ALL", "AND", "ANY", "AS", "ASC", "ASTERISK", "AVG", "BETWEEN",
+ "BOTH", "BREADTH", "BY", "CASE", "CAST", "CEILING", "COLLATE", "COUNT",
+ "CROSS", "CUBE", "CURRENT", "CURRENT_DATE", "CURRENT_INSTANT", "CURRENT_TIME",
+ "CURRENT_TIMESTAMP", "CYCLE", "DATE", "DATETIME", "DAY", "DEFAULT", "DELETE",
+ "DEPTH", "DESC", "DISTINCT", "ELEMENT", "ELEMENTS", "ELSE", "EMPTY",
+ "END", "ENTRY", "EPOCH", "ERROR", "ESCAPE", "EVERY", "EXCEPT", "EXCLUDE",
+ "EXISTS", "EXP", "EXTRACT", "FALSE", "FETCH", "FILTER", "FIRST", "FK",
+ "FLOOR", "FOLLOWING", "FOR", "FORMAT", "FROM", "FULL", "FUNCTION", "GROUP",
+ "GROUPS", "HAVING", "HOUR", "ID", "IGNORE", "ILIKE", "IN", "INDEX", "INDICES",
+ "INNER", "INSERT", "INSTANT", "INTERSECT", "INTO", "IS", "JOIN", "KEY",
+ "LAST", "LATERAL", "LEADING", "LEFT", "LIKE", "LIMIT", "LIST", "LISTAGG",
+ "LN", "LOCAL", "LOCAL_DATE", "LOCAL_DATETIME", "LOCAL_TIME", "MAP", "MATERIALIZED",
+ "MAX", "MAXELEMENT", "MAXINDEX", "MEMBER", "MICROSECOND", "MILLISECOND",
+ "MIN", "MINELEMENT", "MININDEX", "MINUTE", "MONTH", "NANOSECOND", "NATURALID",
+ "NEW", "NEXT", "NO", "NOT", "NULL", "NULLS", "OBJECT", "OF", "OFFSET",
+ "OFFSET_DATETIME", "ON", "ONLY", "OR", "ORDER", "OTHERS", "OUTER", "OVER",
+ "OVERFLOW", "OVERLAY", "PAD", "PARTITION", "PERCENT", "PLACING", "POSITION",
+ "POWER", "PRECEDING", "QUARTER", "RANGE", "RESPECT", "RIGHT", "ROLLUP",
+ "ROW", "ROWS", "SEARCH", "SECOND", "SELECT", "SET", "SIZE", "SOME", "SUBSTRING",
+ "SUM", "THEN", "TIES", "TIME", "TIMESTAMP", "TIMEZONE_HOUR", "TIMEZONE_MINUTE",
+ "TO", "TRAILING", "TREAT", "TRIM", "TRUE", "TRUNC", "TRUNCATE", "TYPE",
+ "UNBOUNDED", "UNION", "UPDATE", "USING", "VALUE", "VALUES", "VERSION",
+ "VERSIONED", "WEEK", "WHEN", "WHERE", "WITH", "WITHIN", "WITHOUT", "YEAR",
+ "CHARACTER", "STRINGLITERAL", "JAVASTRINGLITERAL", "INTEGER_LITERAL",
+ "FLOAT_LITERAL", "HEXLITERAL", "BINARY_LITERAL", "IDENTIFICATION_VARIABLE"
+ };
+ }
+ 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 HqlLexer(CharStream input) {
+ super(input);
+ _interp = new LexerATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache);
+ }
+
+ @Override
+ public String getGrammarFileName() { return "Hql.g4"; }
+
+ @Override
+ public String[] getRuleNames() { return ruleNames; }
+
+ @Override
+ public String getSerializedATN() { return _serializedATN; }
+
+ @Override
+ public String[] getChannelNames() { return channelNames; }
+
+ @Override
+ public String[] getModeNames() { return modeNames; }
+
+ @Override
+ public ATN getATN() { return _ATN; }
+
+ public static final String _serializedATN =
+ "\u0004\u0000\u00cf\u074f\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/\u0002"+
+ "0\u00070\u00021\u00071\u00022\u00072\u00023\u00073\u00024\u00074\u0002"+
+ "5\u00075\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\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_\u0007_\u0002`\u0007`\u0002a\u0007a\u0002"+
+ "b\u0007b\u0002c\u0007c\u0002d\u0007d\u0002e\u0007e\u0002f\u0007f\u0002"+
+ "g\u0007g\u0002h\u0007h\u0002i\u0007i\u0002j\u0007j\u0002k\u0007k\u0002"+
+ "l\u0007l\u0002m\u0007m\u0002n\u0007n\u0002o\u0007o\u0002p\u0007p\u0002"+
+ "q\u0007q\u0002r\u0007r\u0002s\u0007s\u0002t\u0007t\u0002u\u0007u\u0002"+
+ "v\u0007v\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\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"+
+ "\u0001\u0000\u0001\u0000\u0001\u0001\u0001\u0001\u0001\u0002\u0001\u0002"+
+ "\u0001\u0003\u0001\u0003\u0001\u0004\u0001\u0004\u0001\u0005\u0001\u0005"+
+ "\u0001\u0006\u0001\u0006\u0001\u0007\u0001\u0007\u0001\b\u0001\b\u0001"+
+ "\t\u0001\t\u0001\n\u0001\n\u0001\n\u0001\u000b\u0001\u000b\u0001\f\u0001"+
+ "\f\u0001\r\u0001\r\u0001\u000e\u0001\u000e\u0001\u000f\u0001\u000f\u0001"+
+ "\u000f\u0001\u0010\u0001\u0010\u0001\u0011\u0001\u0011\u0001\u0011\u0001"+
+ "\u0012\u0001\u0012\u0001\u0012\u0001\u0013\u0001\u0013\u0001\u0013\u0001"+
+ "\u0014\u0001\u0014\u0001\u0014\u0001\u0015\u0001\u0015\u0001\u0016\u0001"+
+ "\u0016\u0001\u0017\u0001\u0017\u0001\u0017\u0001\u0017\u0001\u0018\u0001"+
+ "\u0018\u0001\u0019\u0001\u0019\u0001\u001a\u0001\u001a\u0001\u001b\u0001"+
+ "\u001b\u0001\u001c\u0001\u001c\u0001\u001d\u0001\u001d\u0001\u001e\u0001"+
+ "\u001e\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/\u00010\u00010\u00011\u0001"+
+ "1\u00012\u00012\u00012\u00012\u00013\u00013\u00013\u00013\u00014\u0001"+
+ "4\u00014\u00014\u00015\u00015\u00015\u00016\u00016\u00016\u00016\u0001"+
+ "7\u00017\u00018\u00018\u00018\u00018\u00019\u00019\u00019\u00019\u0001"+
+ "9\u00019\u00019\u00019\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@\u0001A\u0001A\u0001A\u0001A\u0001"+
+ "A\u0001A\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001C\u0001C\u0001"+
+ "C\u0001C\u0001C\u0001D\u0001D\u0001D\u0001D\u0001D\u0001D\u0001D\u0001"+
+ "D\u0001E\u0001E\u0001E\u0001E\u0001E\u0001E\u0001E\u0001E\u0001E\u0001"+
+ "E\u0001E\u0001E\u0001E\u0001F\u0001F\u0001F\u0001F\u0001F\u0001F\u0001"+
+ "F\u0001F\u0001F\u0001F\u0001F\u0001F\u0001F\u0001F\u0001F\u0001F\u0001"+
+ "G\u0001G\u0001G\u0001G\u0001G\u0001G\u0001G\u0001G\u0001G\u0001G\u0001"+
+ "G\u0001G\u0001G\u0001H\u0001H\u0001H\u0001H\u0001H\u0001H\u0001H\u0001"+
+ "H\u0001H\u0001H\u0001H\u0001H\u0001H\u0001H\u0001H\u0001H\u0001H\u0001"+
+ "H\u0001I\u0001I\u0001I\u0001I\u0001I\u0001I\u0001J\u0001J\u0001J\u0001"+
+ "J\u0001J\u0001K\u0001K\u0001K\u0001K\u0001K\u0001K\u0001K\u0001K\u0001"+
+ "K\u0001L\u0001L\u0001L\u0001L\u0001M\u0001M\u0001M\u0001M\u0001M\u0001"+
+ "M\u0001M\u0001M\u0001N\u0001N\u0001N\u0001N\u0001N\u0001N\u0001N\u0001"+
+ "O\u0001O\u0001O\u0001O\u0001O\u0001O\u0001P\u0001P\u0001P\u0001P\u0001"+
+ "P\u0001Q\u0001Q\u0001Q\u0001Q\u0001Q\u0001Q\u0001Q\u0001Q\u0001Q\u0001"+
+ "R\u0001R\u0001R\u0001R\u0001R\u0001R\u0001R\u0001R\u0001S\u0001S\u0001"+
+ "S\u0001S\u0001S\u0001S\u0001S\u0001S\u0001S\u0001T\u0001T\u0001T\u0001"+
+ "T\u0001T\u0001U\u0001U\u0001U\u0001U\u0001U\u0001U\u0001V\u0001V\u0001"+
+ "V\u0001V\u0001W\u0001W\u0001W\u0001W\u0001W\u0001W\u0001X\u0001X\u0001"+
+ "X\u0001X\u0001X\u0001X\u0001Y\u0001Y\u0001Y\u0001Y\u0001Y\u0001Y\u0001"+
+ "Z\u0001Z\u0001Z\u0001Z\u0001Z\u0001Z\u0001Z\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`\u0001a\u0001a\u0001"+
+ "a\u0001a\u0001a\u0001a\u0001b\u0001b\u0001b\u0001b\u0001b\u0001b\u0001"+
+ "c\u0001c\u0001c\u0001c\u0001c\u0001c\u0001c\u0001d\u0001d\u0001d\u0001"+
+ "d\u0001d\u0001d\u0001e\u0001e\u0001e\u0001f\u0001f\u0001f\u0001f\u0001"+
+ "f\u0001f\u0001g\u0001g\u0001g\u0001g\u0001g\u0001g\u0001g\u0001g\u0001"+
+ "g\u0001g\u0001h\u0001h\u0001h\u0001h\u0001i\u0001i\u0001i\u0001i\u0001"+
+ "i\u0001i\u0001i\u0001j\u0001j\u0001j\u0001j\u0001j\u0001k\u0001k\u0001"+
+ "k\u0001k\u0001k\u0001l\u0001l\u0001l\u0001l\u0001l\u0001l\u0001l\u0001"+
+ "l\u0001l\u0001m\u0001m\u0001m\u0001m\u0001m\u0001m\u0001n\u0001n\u0001"+
+ "n\u0001n\u0001n\u0001n\u0001n\u0001o\u0001o\u0001o\u0001o\u0001o\u0001"+
+ "o\u0001o\u0001p\u0001p\u0001p\u0001p\u0001p\u0001q\u0001q\u0001q\u0001"+
+ "r\u0001r\u0001r\u0001r\u0001r\u0001r\u0001r\u0001s\u0001s\u0001s\u0001"+
+ "s\u0001s\u0001s\u0001t\u0001t\u0001t\u0001u\u0001u\u0001u\u0001u\u0001"+
+ "u\u0001u\u0001v\u0001v\u0001v\u0001v\u0001v\u0001v\u0001v\u0001v\u0001"+
+ "w\u0001w\u0001w\u0001w\u0001w\u0001w\u0001x\u0001x\u0001x\u0001x\u0001"+
+ "x\u0001x\u0001x\u0001y\u0001y\u0001y\u0001y\u0001y\u0001y\u0001y\u0001"+
+ "y\u0001z\u0001z\u0001z\u0001z\u0001z\u0001z\u0001z\u0001z\u0001z\u0001"+
+ "z\u0001{\u0001{\u0001{\u0001{\u0001{\u0001|\u0001|\u0001|\u0001}\u0001"+
+ "}\u0001}\u0001}\u0001}\u0001~\u0001~\u0001~\u0001~\u0001\u007f\u0001\u007f"+
+ "\u0001\u007f\u0001\u007f\u0001\u007f\u0001\u0080\u0001\u0080\u0001\u0080"+
+ "\u0001\u0080\u0001\u0080\u0001\u0080\u0001\u0080\u0001\u0080\u0001\u0081"+
+ "\u0001\u0081\u0001\u0081\u0001\u0081\u0001\u0081\u0001\u0081\u0001\u0081"+
+ "\u0001\u0081\u0001\u0082\u0001\u0082\u0001\u0082\u0001\u0082\u0001\u0082"+
+ "\u0001\u0083\u0001\u0083\u0001\u0083\u0001\u0083\u0001\u0083\u0001\u0084"+
+ "\u0001\u0084\u0001\u0084\u0001\u0084\u0001\u0084\u0001\u0084\u0001\u0085"+
+ "\u0001\u0085\u0001\u0085\u0001\u0085\u0001\u0085\u0001\u0086\u0001\u0086"+
+ "\u0001\u0086\u0001\u0086\u0001\u0086\u0001\u0086\u0001\u0086\u0001\u0086"+
+ "\u0001\u0087\u0001\u0087\u0001\u0087\u0001\u0088\u0001\u0088\u0001\u0088"+
+ "\u0001\u0088\u0001\u0088\u0001\u0088\u0001\u0089\u0001\u0089\u0001\u0089"+
+ "\u0001\u0089\u0001\u0089\u0001\u0089\u0001\u0089\u0001\u0089\u0001\u0089"+
+ "\u0001\u0089\u0001\u0089\u0001\u008a\u0001\u008a\u0001\u008a\u0001\u008a"+
+ "\u0001\u008a\u0001\u008a\u0001\u008a\u0001\u008a\u0001\u008a\u0001\u008a"+
+ "\u0001\u008a\u0001\u008a\u0001\u008a\u0001\u008a\u0001\u008a\u0001\u008b"+
+ "\u0001\u008b\u0001\u008b\u0001\u008b\u0001\u008b\u0001\u008b\u0001\u008b"+
+ "\u0001\u008b\u0001\u008b\u0001\u008b\u0001\u008b\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\u008d\u0001\u008d"+
+ "\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008e\u0001\u008e\u0001\u008e"+
+ "\u0001\u008e\u0001\u008f\u0001\u008f\u0001\u008f\u0001\u008f\u0001\u008f"+
+ "\u0001\u008f\u0001\u008f\u0001\u008f\u0001\u008f\u0001\u008f\u0001\u008f"+
+ "\u0001\u0090\u0001\u0090\u0001\u0090\u0001\u0090\u0001\u0090\u0001\u0090"+
+ "\u0001\u0090\u0001\u0090\u0001\u0090\u0001\u0091\u0001\u0091\u0001\u0091"+
+ "\u0001\u0091\u0001\u0091\u0001\u0091\u0001\u0091\u0001\u0092\u0001\u0092"+
+ "\u0001\u0092\u0001\u0092\u0001\u0092\u0001\u0092\u0001\u0092\u0001\u0092"+
+ "\u0001\u0092\u0001\u0092\u0001\u0092\u0001\u0092\u0001\u0093\u0001\u0093"+
+ "\u0001\u0093\u0001\u0093\u0001\u0093\u0001\u0093\u0001\u0093\u0001\u0093"+
+ "\u0001\u0093\u0001\u0093\u0001\u0093\u0001\u0093\u0001\u0094\u0001\u0094"+
+ "\u0001\u0094\u0001\u0094\u0001\u0095\u0001\u0095\u0001\u0095\u0001\u0095"+
+ "\u0001\u0095\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\u0096\u0001\u0096\u0001\u0096\u0001\u0097\u0001\u0097"+
+ "\u0001\u0097\u0001\u0097\u0001\u0097\u0001\u0097\u0001\u0097\u0001\u0098"+
+ "\u0001\u0098\u0001\u0098\u0001\u0098\u0001\u0098\u0001\u0098\u0001\u0099"+
+ "\u0001\u0099\u0001\u0099\u0001\u0099\u0001\u0099\u0001\u0099\u0001\u0099"+
+ "\u0001\u0099\u0001\u0099\u0001\u0099\u0001\u0099\u0001\u009a\u0001\u009a"+
+ "\u0001\u009a\u0001\u009a\u0001\u009a\u0001\u009a\u0001\u009a\u0001\u009a"+
+ "\u0001\u009a\u0001\u009a\u0001\u009b\u0001\u009b\u0001\u009b\u0001\u009b"+
+ "\u0001\u009c\u0001\u009c\u0001\u009c\u0001\u009c\u0001\u009c\u0001\u009d"+
+ "\u0001\u009d\u0001\u009d\u0001\u009e\u0001\u009e\u0001\u009e\u0001\u009e"+
+ "\u0001\u009f\u0001\u009f\u0001\u009f\u0001\u009f\u0001\u009f\u0001\u00a0"+
+ "\u0001\u00a0\u0001\u00a0\u0001\u00a0\u0001\u00a0\u0001\u00a0\u0001\u00a1"+
+ "\u0001\u00a1\u0001\u00a1\u0001\u00a1\u0001\u00a1\u0001\u00a1\u0001\u00a1"+
+ "\u0001\u00a2\u0001\u00a2\u0001\u00a2\u0001\u00a3\u0001\u00a3\u0001\u00a3"+
+ "\u0001\u00a3\u0001\u00a3\u0001\u00a3\u0001\u00a3\u0001\u00a4\u0001\u00a4"+
+ "\u0001\u00a4\u0001\u00a4\u0001\u00a4\u0001\u00a4\u0001\u00a4\u0001\u00a4"+
+ "\u0001\u00a4\u0001\u00a4\u0001\u00a4\u0001\u00a4\u0001\u00a4\u0001\u00a4"+
+ "\u0001\u00a4\u0001\u00a4\u0001\u00a5\u0001\u00a5\u0001\u00a5\u0001\u00a6"+
+ "\u0001\u00a6\u0001\u00a6\u0001\u00a6\u0001\u00a6\u0001\u00a7\u0001\u00a7"+
+ "\u0001\u00a7\u0001\u00a8\u0001\u00a8\u0001\u00a8\u0001\u00a8\u0001\u00a8"+
+ "\u0001\u00a8\u0001\u00a9\u0001\u00a9\u0001\u00a9\u0001\u00a9\u0001\u00a9"+
+ "\u0001\u00a9\u0001\u00a9\u0001\u00aa\u0001\u00aa\u0001\u00aa\u0001\u00aa"+
+ "\u0001\u00aa\u0001\u00aa\u0001\u00ab\u0001\u00ab\u0001\u00ab\u0001\u00ab"+
+ "\u0001\u00ab\u0001\u00ac\u0001\u00ac\u0001\u00ac\u0001\u00ac\u0001\u00ac"+
+ "\u0001\u00ac\u0001\u00ac\u0001\u00ac\u0001\u00ac\u0001\u00ad\u0001\u00ad"+
+ "\u0001\u00ad\u0001\u00ad\u0001\u00ad\u0001\u00ad\u0001\u00ad\u0001\u00ad"+
+ "\u0001\u00ae\u0001\u00ae\u0001\u00ae\u0001\u00ae\u0001\u00af\u0001\u00af"+
+ "\u0001\u00af\u0001\u00af\u0001\u00af\u0001\u00af\u0001\u00af\u0001\u00af"+
+ "\u0001\u00af\u0001\u00af\u0001\u00b0\u0001\u00b0\u0001\u00b0\u0001\u00b0"+
+ "\u0001\u00b0\u0001\u00b0\u0001\u00b0\u0001\u00b0\u0001\u00b1\u0001\u00b1"+
+ "\u0001\u00b1\u0001\u00b1\u0001\u00b1\u0001\u00b1\u0001\u00b1\u0001\u00b1"+
+ "\u0001\u00b2\u0001\u00b2\u0001\u00b2\u0001\u00b2\u0001\u00b2\u0001\u00b2"+
+ "\u0001\u00b2\u0001\u00b2\u0001\u00b2\u0001\u00b3\u0001\u00b3\u0001\u00b3"+
+ "\u0001\u00b3\u0001\u00b3\u0001\u00b3\u0001\u00b4\u0001\u00b4\u0001\u00b4"+
+ "\u0001\u00b4\u0001\u00b4\u0001\u00b4\u0001\u00b4\u0001\u00b4\u0001\u00b4"+
+ "\u0001\u00b4\u0001\u00b5\u0001\u00b5\u0001\u00b5\u0001\u00b5\u0001\u00b5"+
+ "\u0001\u00b5\u0001\u00b5\u0001\u00b5\u0001\u00b6\u0001\u00b6\u0001\u00b6"+
+ "\u0001\u00b6\u0001\u00b6\u0001\u00b6\u0001\u00b7\u0001\u00b7\u0001\u00b7"+
+ "\u0001\u00b7\u0001\u00b7\u0001\u00b7\u0001\u00b7\u0001\u00b7\u0001\u00b8"+
+ "\u0001\u00b8\u0001\u00b8\u0001\u00b8\u0001\u00b8\u0001\u00b8\u0001\u00b9"+
+ "\u0001\u00b9\u0001\u00b9\u0001\u00b9\u0001\u00b9\u0001\u00b9\u0001\u00b9"+
+ "\u0001\u00ba\u0001\u00ba\u0001\u00ba\u0001\u00ba\u0001\u00bb\u0001\u00bb"+
+ "\u0001\u00bb\u0001\u00bb\u0001\u00bb\u0001\u00bc\u0001\u00bc\u0001\u00bc"+
+ "\u0001\u00bc\u0001\u00bc\u0001\u00bc\u0001\u00bc\u0001\u00bd\u0001\u00bd"+
+ "\u0001\u00bd\u0001\u00bd\u0001\u00bd\u0001\u00bd\u0001\u00bd\u0001\u00be"+
+ "\u0001\u00be\u0001\u00be\u0001\u00be\u0001\u00be\u0001\u00be\u0001\u00be"+
+ "\u0001\u00bf\u0001\u00bf\u0001\u00bf\u0001\u00bf\u0001\u00c0\u0001\u00c0"+
+ "\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c1\u0001\u00c1\u0001\u00c1"+
+ "\u0001\u00c1\u0001\u00c1\u0001\u00c2\u0001\u00c2\u0001\u00c2\u0001\u00c2"+
+ "\u0001\u00c2\u0001\u00c2\u0001\u00c2\u0001\u00c2\u0001\u00c2\u0001\u00c2"+
+ "\u0001\u00c3\u0001\u00c3\u0001\u00c3\u0001\u00c3\u0001\u00c4\u0001\u00c4"+
+ "\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c5\u0001\u00c5\u0001\u00c5"+
+ "\u0001\u00c5\u0001\u00c5\u0001\u00c6\u0001\u00c6\u0001\u00c6\u0001\u00c6"+
+ "\u0001\u00c6\u0001\u00c7\u0001\u00c7\u0001\u00c7\u0001\u00c7\u0001\u00c7"+
+ "\u0001\u00c7\u0001\u00c7\u0001\u00c7\u0001\u00c7\u0001\u00c7\u0001\u00c8"+
+ "\u0001\u00c8\u0001\u00c8\u0001\u00c8\u0001\u00c8\u0001\u00c8\u0001\u00c8"+
+ "\u0001\u00c8\u0001\u00c8\u0001\u00c8\u0001\u00c8\u0001\u00c8\u0001\u00c8"+
+ "\u0001\u00c8\u0001\u00c9\u0001\u00c9\u0001\u00c9\u0001\u00c9\u0001\u00c9"+
+ "\u0001\u00c9\u0001\u00c9\u0001\u00c9\u0001\u00c9\u0001\u00c9\u0001\u00c9"+
+ "\u0001\u00c9\u0001\u00c9\u0001\u00c9\u0001\u00c9\u0001\u00c9\u0001\u00ca"+
+ "\u0001\u00ca\u0001\u00ca\u0001\u00cb\u0001\u00cb\u0001\u00cb\u0001\u00cb"+
+ "\u0001\u00cb\u0001\u00cb\u0001\u00cb\u0001\u00cb\u0001\u00cb\u0001\u00cc"+
+ "\u0001\u00cc\u0001\u00cc\u0001\u00cc\u0001\u00cc\u0001\u00cc\u0001\u00cd"+
+ "\u0001\u00cd\u0001\u00cd\u0001\u00cd\u0001\u00cd\u0001\u00ce\u0001\u00ce"+
+ "\u0001\u00ce\u0001\u00ce\u0001\u00ce\u0001\u00cf\u0001\u00cf\u0001\u00cf"+
+ "\u0001\u00cf\u0001\u00cf\u0001\u00cf\u0001\u00d0\u0001\u00d0\u0001\u00d0"+
+ "\u0001\u00d0\u0001\u00d0\u0001\u00d0\u0001\u00d0\u0001\u00d0\u0001\u00d0"+
+ "\u0001\u00d1\u0001\u00d1\u0001\u00d1\u0001\u00d1\u0001\u00d1\u0001\u00d2"+
+ "\u0001\u00d2\u0001\u00d2\u0001\u00d2\u0001\u00d2\u0001\u00d2\u0001\u00d2"+
+ "\u0001\u00d2\u0001\u00d2\u0001\u00d2\u0001\u00d3\u0001\u00d3\u0001\u00d3"+
+ "\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0001\u00d4\u0001\u00d4\u0001\u00d4"+
+ "\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001\u00d5\u0001\u00d5"+
+ "\u0001\u00d5\u0001\u00d5\u0001\u00d5\u0001\u00d5\u0001\u00d6\u0001\u00d6"+
+ "\u0001\u00d6\u0001\u00d6\u0001\u00d6\u0001\u00d6\u0001\u00d7\u0001\u00d7"+
+ "\u0001\u00d7\u0001\u00d7\u0001\u00d7\u0001\u00d7\u0001\u00d7\u0001\u00d8"+
+ "\u0001\u00d8\u0001\u00d8\u0001\u00d8\u0001\u00d8\u0001\u00d8\u0001\u00d8"+
+ "\u0001\u00d8\u0001\u00d9\u0001\u00d9\u0001\u00d9\u0001\u00d9\u0001\u00d9"+
+ "\u0001\u00d9\u0001\u00d9\u0001\u00d9\u0001\u00d9\u0001\u00d9\u0001\u00da"+
+ "\u0001\u00da\u0001\u00da\u0001\u00da\u0001\u00da\u0001\u00db\u0001\u00db"+
+ "\u0001\u00db\u0001\u00db\u0001\u00db\u0001\u00dc\u0001\u00dc\u0001\u00dc"+
+ "\u0001\u00dc\u0001\u00dc\u0001\u00dc\u0001\u00dd\u0001\u00dd\u0001\u00dd"+
+ "\u0001\u00dd\u0001\u00dd\u0001\u00de\u0001\u00de\u0001\u00de\u0001\u00de"+
+ "\u0001\u00de\u0001\u00de\u0001\u00de\u0001\u00df\u0001\u00df\u0001\u00df"+
+ "\u0001\u00df\u0001\u00df\u0001\u00df\u0001\u00df\u0001\u00df\u0001\u00e0"+
+ "\u0001\u00e0\u0001\u00e0\u0001\u00e0\u0001\u00e0\u0001\u00e1\u0004\u00e1"+
+ "\u06e9\b\u00e1\u000b\u00e1\f\u00e1\u06ea\u0001\u00e2\u0004\u00e2\u06ee"+
+ "\b\u00e2\u000b\u00e2\f\u00e2\u06ef\u0001\u00e2\u0003\u00e2\u06f3\b\u00e2"+
+ "\u0001\u00e2\u0005\u00e2\u06f6\b\u00e2\n\u00e2\f\u00e2\u06f9\t\u00e2\u0001"+
+ "\u00e2\u0001\u00e2\u0003\u00e2\u06fd\b\u00e2\u0001\u00e2\u0001\u00e2\u0003"+
+ "\u00e2\u0701\b\u00e2\u0001\u00e3\u0001\u00e3\u0001\u00e4\u0001\u00e4\u0001"+
+ "\u00e4\u0001\u00e4\u0001\u00e5\u0001\u00e5\u0001\u00e5\u0001\u00e5\u0005"+
+ "\u00e5\u070d\b\u00e5\n\u00e5\f\u00e5\u0710\t\u00e5\u0001\u00e5\u0001\u00e5"+
+ "\u0001\u00e6\u0001\u00e6\u0001\u00e6\u0001\u00e6\u0005\u00e6\u0718\b\u00e6"+
+ "\n\u00e6\f\u00e6\u071b\t\u00e6\u0001\u00e6\u0001\u00e6\u0001\u00e7\u0001"+
+ "\u00e7\u0001\u00e7\u0001\u00e7\u0001\u00e7\u0003\u00e7\u0724\b\u00e7\u0001"+
+ "\u00e8\u0001\u00e8\u0001\u00e8\u0001\u00e8\u0001\u00e8\u0001\u00e8\u0003"+
+ "\u00e8\u072c\b\u00e8\u0001\u00e9\u0001\u00e9\u0001\u00e9\u0004\u00e9\u0731"+
+ "\b\u00e9\u000b\u00e9\f\u00e9\u0732\u0001\u00ea\u0001\u00ea\u0001\u00ea"+
+ "\u0004\u00ea\u0738\b\u00ea\u000b\u00ea\f\u00ea\u0739\u0001\u00ea\u0001"+
+ "\u00ea\u0001\u00ea\u0001\u00ea\u0001\u00ea\u0004\u00ea\u0741\b\u00ea\u000b"+
+ "\u00ea\f\u00ea\u0742\u0001\u00ea\u0001\u00ea\u0003\u00ea\u0747\b\u00ea"+
+ "\u0001\u00eb\u0001\u00eb\u0005\u00eb\u074b\b\u00eb\n\u00eb\f\u00eb\u074e"+
+ "\t\u00eb\u0000\u0000\u00ec\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\u00003\u00005\u00007\u00009\u0000"+
+ ";\u0000=\u0000?\u0000A\u0000C\u0000E\u0000G\u0000I\u0000K\u0000M\u0000"+
+ "O\u0000Q\u0000S\u0000U\u0000W\u0000Y\u0000[\u0000]\u0000_\u0000a\u0000"+
+ "c\u0000e\u0019g\u001ai\u001bk\u001cm\u001do\u001eq\u001fs u!w\"y#{$}%"+
+ "\u007f&\u0081\'\u0083(\u0085)\u0087*\u0089+\u008b,\u008d-\u008f.\u0091"+
+ "/\u00930\u00951\u00972\u00993\u009b4\u009d5\u009f6\u00a17\u00a38\u00a5"+
+ "9\u00a7:\u00a9;\u00ab<\u00ad=\u00af>\u00b1?\u00b3@\u00b5A\u00b7B\u00b9"+
+ "C\u00bbD\u00bdE\u00bfF\u00c1G\u00c3H\u00c5I\u00c7J\u00c9K\u00cbL\u00cd"+
+ "M\u00cfN\u00d1O\u00d3P\u00d5Q\u00d7R\u00d9S\u00dbT\u00ddU\u00dfV\u00e1"+
+ "W\u00e3X\u00e5Y\u00e7Z\u00e9[\u00eb\\\u00ed]\u00ef^\u00f1_\u00f3`\u00f5"+
+ "a\u00f7b\u00f9c\u00fbd\u00fde\u00fff\u0101g\u0103h\u0105i\u0107j\u0109"+
+ "k\u010bl\u010dm\u010fn\u0111o\u0113p\u0115q\u0117r\u0119s\u011bt\u011d"+
+ "u\u011fv\u0121w\u0123x\u0125y\u0127z\u0129{\u012b|\u012d}\u012f~\u0131"+
+ "\u007f\u0133\u0080\u0135\u0081\u0137\u0082\u0139\u0083\u013b\u0084\u013d"+
+ "\u0085\u013f\u0086\u0141\u0087\u0143\u0088\u0145\u0089\u0147\u008a\u0149"+
+ "\u008b\u014b\u008c\u014d\u008d\u014f\u008e\u0151\u008f\u0153\u0090\u0155"+
+ "\u0091\u0157\u0092\u0159\u0093\u015b\u0094\u015d\u0095\u015f\u0096\u0161"+
+ "\u0097\u0163\u0098\u0165\u0099\u0167\u009a\u0169\u009b\u016b\u009c\u016d"+
+ "\u009d\u016f\u009e\u0171\u009f\u0173\u00a0\u0175\u00a1\u0177\u00a2\u0179"+
+ "\u00a3\u017b\u00a4\u017d\u00a5\u017f\u00a6\u0181\u00a7\u0183\u00a8\u0185"+
+ "\u00a9\u0187\u00aa\u0189\u00ab\u018b\u00ac\u018d\u00ad\u018f\u00ae\u0191"+
+ "\u00af\u0193\u00b0\u0195\u00b1\u0197\u00b2\u0199\u00b3\u019b\u00b4\u019d"+
+ "\u00b5\u019f\u00b6\u01a1\u00b7\u01a3\u00b8\u01a5\u00b9\u01a7\u00ba\u01a9"+
+ "\u00bb\u01ab\u00bc\u01ad\u00bd\u01af\u00be\u01b1\u00bf\u01b3\u00c0\u01b5"+
+ "\u00c1\u01b7\u00c2\u01b9\u00c3\u01bb\u00c4\u01bd\u00c5\u01bf\u00c6\u01c1"+
+ "\u00c7\u01c3\u0000\u01c5\u0000\u01c7\u0000\u01c9\u00c8\u01cb\u00c9\u01cd"+
+ "\u00ca\u01cf\u00cb\u01d1\u00cc\u01d3\u00cd\u01d5\u00ce\u01d7\u00cf\u0001"+
+ "\u0000#\u0003\u0000\t\n\r\r \u0002\u0000AAaa\u0002\u0000BBbb\u0002\u0000"+
+ "CCcc\u0002\u0000DDdd\u0002\u0000EEee\u0002\u0000FFff\u0002\u0000GGgg\u0002"+
+ "\u0000HHhh\u0002\u0000IIii\u0002\u0000JJjj\u0002\u0000KKkk\u0002\u0000"+
+ "LLll\u0002\u0000MMmm\u0002\u0000NNnn\u0002\u0000OOoo\u0002\u0000PPpp\u0002"+
+ "\u0000QQqq\u0002\u0000RRrr\u0002\u0000SSss\u0002\u0000TTtt\u0002\u0000"+
+ "UUuu\u0002\u0000VVvv\u0002\u0000WWww\u0002\u0000XXxx\u0002\u0000YYyy\u0002"+
+ "\u0000ZZzz\u0002\u0000++--\u0003\u000009AFaf\u0002\u0000\'\'\\\\\u0001"+
+ "\u0000\'\'\u0007\u0000\"\"\'\'bbffnnrrtt\u0001\u0000\"\"\u0005\u0000$"+
+ "$AZ__az\u0080\u8000\ufffe\u0006\u0000$$09AZ__az\u0080\u8000\ufffe\u0745"+
+ "\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\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\u007f"+
+ "\u0001\u0000\u0000\u0000\u0000\u0081\u0001\u0000\u0000\u0000\u0000\u0083"+
+ "\u0001\u0000\u0000\u0000\u0000\u0085\u0001\u0000\u0000\u0000\u0000\u0087"+
+ "\u0001\u0000\u0000\u0000\u0000\u0089\u0001\u0000\u0000\u0000\u0000\u008b"+
+ "\u0001\u0000\u0000\u0000\u0000\u008d\u0001\u0000\u0000\u0000\u0000\u008f"+
+ "\u0001\u0000\u0000\u0000\u0000\u0091\u0001\u0000\u0000\u0000\u0000\u0093"+
+ "\u0001\u0000\u0000\u0000\u0000\u0095\u0001\u0000\u0000\u0000\u0000\u0097"+
+ "\u0001\u0000\u0000\u0000\u0000\u0099\u0001\u0000\u0000\u0000\u0000\u009b"+
+ "\u0001\u0000\u0000\u0000\u0000\u009d\u0001\u0000\u0000\u0000\u0000\u009f"+
+ "\u0001\u0000\u0000\u0000\u0000\u00a1\u0001\u0000\u0000\u0000\u0000\u00a3"+
+ "\u0001\u0000\u0000\u0000\u0000\u00a5\u0001\u0000\u0000\u0000\u0000\u00a7"+
+ "\u0001\u0000\u0000\u0000\u0000\u00a9\u0001\u0000\u0000\u0000\u0000\u00ab"+
+ "\u0001\u0000\u0000\u0000\u0000\u00ad\u0001\u0000\u0000\u0000\u0000\u00af"+
+ "\u0001\u0000\u0000\u0000\u0000\u00b1\u0001\u0000\u0000\u0000\u0000\u00b3"+
+ "\u0001\u0000\u0000\u0000\u0000\u00b5\u0001\u0000\u0000\u0000\u0000\u00b7"+
+ "\u0001\u0000\u0000\u0000\u0000\u00b9\u0001\u0000\u0000\u0000\u0000\u00bb"+
+ "\u0001\u0000\u0000\u0000\u0000\u00bd\u0001\u0000\u0000\u0000\u0000\u00bf"+
+ "\u0001\u0000\u0000\u0000\u0000\u00c1\u0001\u0000\u0000\u0000\u0000\u00c3"+
+ "\u0001\u0000\u0000\u0000\u0000\u00c5\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\u0125\u0001\u0000\u0000\u0000\u0000\u0127"+
+ "\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\u0000\u0133"+
+ "\u0001\u0000\u0000\u0000\u0000\u0135\u0001\u0000\u0000\u0000\u0000\u0137"+
+ "\u0001\u0000\u0000\u0000\u0000\u0139\u0001\u0000\u0000\u0000\u0000\u013b"+
+ "\u0001\u0000\u0000\u0000\u0000\u013d\u0001\u0000\u0000\u0000\u0000\u013f"+
+ "\u0001\u0000\u0000\u0000\u0000\u0141\u0001\u0000\u0000\u0000\u0000\u0143"+
+ "\u0001\u0000\u0000\u0000\u0000\u0145\u0001\u0000\u0000\u0000\u0000\u0147"+
+ "\u0001\u0000\u0000\u0000\u0000\u0149\u0001\u0000\u0000\u0000\u0000\u014b"+
+ "\u0001\u0000\u0000\u0000\u0000\u014d\u0001\u0000\u0000\u0000\u0000\u014f"+
+ "\u0001\u0000\u0000\u0000\u0000\u0151\u0001\u0000\u0000\u0000\u0000\u0153"+
+ "\u0001\u0000\u0000\u0000\u0000\u0155\u0001\u0000\u0000\u0000\u0000\u0157"+
+ "\u0001\u0000\u0000\u0000\u0000\u0159\u0001\u0000\u0000\u0000\u0000\u015b"+
+ "\u0001\u0000\u0000\u0000\u0000\u015d\u0001\u0000\u0000\u0000\u0000\u015f"+
+ "\u0001\u0000\u0000\u0000\u0000\u0161\u0001\u0000\u0000\u0000\u0000\u0163"+
+ "\u0001\u0000\u0000\u0000\u0000\u0165\u0001\u0000\u0000\u0000\u0000\u0167"+
+ "\u0001\u0000\u0000\u0000\u0000\u0169\u0001\u0000\u0000\u0000\u0000\u016b"+
+ "\u0001\u0000\u0000\u0000\u0000\u016d\u0001\u0000\u0000\u0000\u0000\u016f"+
+ "\u0001\u0000\u0000\u0000\u0000\u0171\u0001\u0000\u0000\u0000\u0000\u0173"+
+ "\u0001\u0000\u0000\u0000\u0000\u0175\u0001\u0000\u0000\u0000\u0000\u0177"+
+ "\u0001\u0000\u0000\u0000\u0000\u0179\u0001\u0000\u0000\u0000\u0000\u017b"+
+ "\u0001\u0000\u0000\u0000\u0000\u017d\u0001\u0000\u0000\u0000\u0000\u017f"+
+ "\u0001\u0000\u0000\u0000\u0000\u0181\u0001\u0000\u0000\u0000\u0000\u0183"+
+ "\u0001\u0000\u0000\u0000\u0000\u0185\u0001\u0000\u0000\u0000\u0000\u0187"+
+ "\u0001\u0000\u0000\u0000\u0000\u0189\u0001\u0000\u0000\u0000\u0000\u018b"+
+ "\u0001\u0000\u0000\u0000\u0000\u018d\u0001\u0000\u0000\u0000\u0000\u018f"+
+ "\u0001\u0000\u0000\u0000\u0000\u0191\u0001\u0000\u0000\u0000\u0000\u0193"+
+ "\u0001\u0000\u0000\u0000\u0000\u0195\u0001\u0000\u0000\u0000\u0000\u0197"+
+ "\u0001\u0000\u0000\u0000\u0000\u0199\u0001\u0000\u0000\u0000\u0000\u019b"+
+ "\u0001\u0000\u0000\u0000\u0000\u019d\u0001\u0000\u0000\u0000\u0000\u019f"+
+ "\u0001\u0000\u0000\u0000\u0000\u01a1\u0001\u0000\u0000\u0000\u0000\u01a3"+
+ "\u0001\u0000\u0000\u0000\u0000\u01a5\u0001\u0000\u0000\u0000\u0000\u01a7"+
+ "\u0001\u0000\u0000\u0000\u0000\u01a9\u0001\u0000\u0000\u0000\u0000\u01ab"+
+ "\u0001\u0000\u0000\u0000\u0000\u01ad\u0001\u0000\u0000\u0000\u0000\u01af"+
+ "\u0001\u0000\u0000\u0000\u0000\u01b1\u0001\u0000\u0000\u0000\u0000\u01b3"+
+ "\u0001\u0000\u0000\u0000\u0000\u01b5\u0001\u0000\u0000\u0000\u0000\u01b7"+
+ "\u0001\u0000\u0000\u0000\u0000\u01b9\u0001\u0000\u0000\u0000\u0000\u01bb"+
+ "\u0001\u0000\u0000\u0000\u0000\u01bd\u0001\u0000\u0000\u0000\u0000\u01bf"+
+ "\u0001\u0000\u0000\u0000\u0000\u01c1\u0001\u0000\u0000\u0000\u0000\u01c9"+
+ "\u0001\u0000\u0000\u0000\u0000\u01cb\u0001\u0000\u0000\u0000\u0000\u01cd"+
+ "\u0001\u0000\u0000\u0000\u0000\u01cf\u0001\u0000\u0000\u0000\u0000\u01d1"+
+ "\u0001\u0000\u0000\u0000\u0000\u01d3\u0001\u0000\u0000\u0000\u0000\u01d5"+
+ "\u0001\u0000\u0000\u0000\u0000\u01d7\u0001\u0000\u0000\u0000\u0001\u01d9"+
+ "\u0001\u0000\u0000\u0000\u0003\u01db\u0001\u0000\u0000\u0000\u0005\u01dd"+
+ "\u0001\u0000\u0000\u0000\u0007\u01df\u0001\u0000\u0000\u0000\t\u01e1\u0001"+
+ "\u0000\u0000\u0000\u000b\u01e3\u0001\u0000\u0000\u0000\r\u01e5\u0001\u0000"+
+ "\u0000\u0000\u000f\u01e7\u0001\u0000\u0000\u0000\u0011\u01e9\u0001\u0000"+
+ "\u0000\u0000\u0013\u01eb\u0001\u0000\u0000\u0000\u0015\u01ed\u0001\u0000"+
+ "\u0000\u0000\u0017\u01f0\u0001\u0000\u0000\u0000\u0019\u01f2\u0001\u0000"+
+ "\u0000\u0000\u001b\u01f4\u0001\u0000\u0000\u0000\u001d\u01f6\u0001\u0000"+
+ "\u0000\u0000\u001f\u01f8\u0001\u0000\u0000\u0000!\u01fb\u0001\u0000\u0000"+
+ "\u0000#\u01fd\u0001\u0000\u0000\u0000%\u0200\u0001\u0000\u0000\u0000\'"+
+ "\u0203\u0001\u0000\u0000\u0000)\u0206\u0001\u0000\u0000\u0000+\u0209\u0001"+
+ "\u0000\u0000\u0000-\u020b\u0001\u0000\u0000\u0000/\u020d\u0001\u0000\u0000"+
+ "\u00001\u0211\u0001\u0000\u0000\u00003\u0213\u0001\u0000\u0000\u00005"+
+ "\u0215\u0001\u0000\u0000\u00007\u0217\u0001\u0000\u0000\u00009\u0219\u0001"+
+ "\u0000\u0000\u0000;\u021b\u0001\u0000\u0000\u0000=\u021d\u0001\u0000\u0000"+
+ "\u0000?\u021f\u0001\u0000\u0000\u0000A\u0221\u0001\u0000\u0000\u0000C"+
+ "\u0223\u0001\u0000\u0000\u0000E\u0225\u0001\u0000\u0000\u0000G\u0227\u0001"+
+ "\u0000\u0000\u0000I\u0229\u0001\u0000\u0000\u0000K\u022b\u0001\u0000\u0000"+
+ "\u0000M\u022d\u0001\u0000\u0000\u0000O\u022f\u0001\u0000\u0000\u0000Q"+
+ "\u0231\u0001\u0000\u0000\u0000S\u0233\u0001\u0000\u0000\u0000U\u0235\u0001"+
+ "\u0000\u0000\u0000W\u0237\u0001\u0000\u0000\u0000Y\u0239\u0001\u0000\u0000"+
+ "\u0000[\u023b\u0001\u0000\u0000\u0000]\u023d\u0001\u0000\u0000\u0000_"+
+ "\u023f\u0001\u0000\u0000\u0000a\u0241\u0001\u0000\u0000\u0000c\u0243\u0001"+
+ "\u0000\u0000\u0000e\u0245\u0001\u0000\u0000\u0000g\u0249\u0001\u0000\u0000"+
+ "\u0000i\u024d\u0001\u0000\u0000\u0000k\u0251\u0001\u0000\u0000\u0000m"+
+ "\u0254\u0001\u0000\u0000\u0000o\u0258\u0001\u0000\u0000\u0000q\u025a\u0001"+
+ "\u0000\u0000\u0000s\u025e\u0001\u0000\u0000\u0000u\u0266\u0001\u0000\u0000"+
+ "\u0000w\u026b\u0001\u0000\u0000\u0000y\u0273\u0001\u0000\u0000\u0000{"+
+ "\u0276\u0001\u0000\u0000\u0000}\u027b\u0001\u0000\u0000\u0000\u007f\u0280"+
+ "\u0001\u0000\u0000\u0000\u0081\u0288\u0001\u0000\u0000\u0000\u0083\u0290"+
+ "\u0001\u0000\u0000\u0000\u0085\u0296\u0001\u0000\u0000\u0000\u0087\u029c"+
+ "\u0001\u0000\u0000\u0000\u0089\u02a1\u0001\u0000\u0000\u0000\u008b\u02a9"+
+ "\u0001\u0000\u0000\u0000\u008d\u02b6\u0001\u0000\u0000\u0000\u008f\u02c6"+
+ "\u0001\u0000\u0000\u0000\u0091\u02d3\u0001\u0000\u0000\u0000\u0093\u02e5"+
+ "\u0001\u0000\u0000\u0000\u0095\u02eb\u0001\u0000\u0000\u0000\u0097\u02f0"+
+ "\u0001\u0000\u0000\u0000\u0099\u02f9\u0001\u0000\u0000\u0000\u009b\u02fd"+
+ "\u0001\u0000\u0000\u0000\u009d\u0305\u0001\u0000\u0000\u0000\u009f\u030c"+
+ "\u0001\u0000\u0000\u0000\u00a1\u0312\u0001\u0000\u0000\u0000\u00a3\u0317"+
+ "\u0001\u0000\u0000\u0000\u00a5\u0320\u0001\u0000\u0000\u0000\u00a7\u0328"+
+ "\u0001\u0000\u0000\u0000\u00a9\u0331\u0001\u0000\u0000\u0000\u00ab\u0336"+
+ "\u0001\u0000\u0000\u0000\u00ad\u033c\u0001\u0000\u0000\u0000\u00af\u0340"+
+ "\u0001\u0000\u0000\u0000\u00b1\u0346\u0001\u0000\u0000\u0000\u00b3\u034c"+
+ "\u0001\u0000\u0000\u0000\u00b5\u0352\u0001\u0000\u0000\u0000\u00b7\u0359"+
+ "\u0001\u0000\u0000\u0000\u00b9\u035f\u0001\u0000\u0000\u0000\u00bb\u0366"+
+ "\u0001\u0000\u0000\u0000\u00bd\u036e\u0001\u0000\u0000\u0000\u00bf\u0375"+
+ "\u0001\u0000\u0000\u0000\u00c1\u0379\u0001\u0000\u0000\u0000\u00c3\u0381"+
+ "\u0001\u0000\u0000\u0000\u00c5\u0387\u0001\u0000\u0000\u0000\u00c7\u038d"+
+ "\u0001\u0000\u0000\u0000\u00c9\u0394\u0001\u0000\u0000\u0000\u00cb\u039a"+
+ "\u0001\u0000\u0000\u0000\u00cd\u039d\u0001\u0000\u0000\u0000\u00cf\u03a3"+
+ "\u0001\u0000\u0000\u0000\u00d1\u03ad\u0001\u0000\u0000\u0000\u00d3\u03b1"+
+ "\u0001\u0000\u0000\u0000\u00d5\u03b8\u0001\u0000\u0000\u0000\u00d7\u03bd"+
+ "\u0001\u0000\u0000\u0000\u00d9\u03c2\u0001\u0000\u0000\u0000\u00db\u03cb"+
+ "\u0001\u0000\u0000\u0000\u00dd\u03d1\u0001\u0000\u0000\u0000\u00df\u03d8"+
+ "\u0001\u0000\u0000\u0000\u00e1\u03df\u0001\u0000\u0000\u0000\u00e3\u03e4"+
+ "\u0001\u0000\u0000\u0000\u00e5\u03e7\u0001\u0000\u0000\u0000\u00e7\u03ee"+
+ "\u0001\u0000\u0000\u0000\u00e9\u03f4\u0001\u0000\u0000\u0000\u00eb\u03f7"+
+ "\u0001\u0000\u0000\u0000\u00ed\u03fd\u0001\u0000\u0000\u0000\u00ef\u0405"+
+ "\u0001\u0000\u0000\u0000\u00f1\u040b\u0001\u0000\u0000\u0000\u00f3\u0412"+
+ "\u0001\u0000\u0000\u0000\u00f5\u041a\u0001\u0000\u0000\u0000\u00f7\u0424"+
+ "\u0001\u0000\u0000\u0000\u00f9\u0429\u0001\u0000\u0000\u0000\u00fb\u042c"+
+ "\u0001\u0000\u0000\u0000\u00fd\u0431\u0001\u0000\u0000\u0000\u00ff\u0435"+
+ "\u0001\u0000\u0000\u0000\u0101\u043a\u0001\u0000\u0000\u0000\u0103\u0442"+
+ "\u0001\u0000\u0000\u0000\u0105\u044a\u0001\u0000\u0000\u0000\u0107\u044f"+
+ "\u0001\u0000\u0000\u0000\u0109\u0454\u0001\u0000\u0000\u0000\u010b\u045a"+
+ "\u0001\u0000\u0000\u0000\u010d\u045f\u0001\u0000\u0000\u0000\u010f\u0467"+
+ "\u0001\u0000\u0000\u0000\u0111\u046a\u0001\u0000\u0000\u0000\u0113\u0470"+
+ "\u0001\u0000\u0000\u0000\u0115\u047b\u0001\u0000\u0000\u0000\u0117\u048a"+
+ "\u0001\u0000\u0000\u0000\u0119\u0495\u0001\u0000\u0000\u0000\u011b\u0499"+
+ "\u0001\u0000\u0000\u0000\u011d\u04a6\u0001\u0000\u0000\u0000\u011f\u04aa"+
+ "\u0001\u0000\u0000\u0000\u0121\u04b5\u0001\u0000\u0000\u0000\u0123\u04be"+
+ "\u0001\u0000\u0000\u0000\u0125\u04c5\u0001\u0000\u0000\u0000\u0127\u04d1"+
+ "\u0001\u0000\u0000\u0000\u0129\u04dd\u0001\u0000\u0000\u0000\u012b\u04e1"+
+ "\u0001\u0000\u0000\u0000\u012d\u04ec\u0001\u0000\u0000\u0000\u012f\u04f5"+
+ "\u0001\u0000\u0000\u0000\u0131\u04fc\u0001\u0000\u0000\u0000\u0133\u0502"+
+ "\u0001\u0000\u0000\u0000\u0135\u050d\u0001\u0000\u0000\u0000\u0137\u0517"+
+ "\u0001\u0000\u0000\u0000\u0139\u051b\u0001\u0000\u0000\u0000\u013b\u0520"+
+ "\u0001\u0000\u0000\u0000\u013d\u0523\u0001\u0000\u0000\u0000\u013f\u0527"+
+ "\u0001\u0000\u0000\u0000\u0141\u052c\u0001\u0000\u0000\u0000\u0143\u0532"+
+ "\u0001\u0000\u0000\u0000\u0145\u0539\u0001\u0000\u0000\u0000\u0147\u053c"+
+ "\u0001\u0000\u0000\u0000\u0149\u0543\u0001\u0000\u0000\u0000\u014b\u0553"+
+ "\u0001\u0000\u0000\u0000\u014d\u0556\u0001\u0000\u0000\u0000\u014f\u055b"+
+ "\u0001\u0000\u0000\u0000\u0151\u055e\u0001\u0000\u0000\u0000\u0153\u0564"+
+ "\u0001\u0000\u0000\u0000\u0155\u056b\u0001\u0000\u0000\u0000\u0157\u0571"+
+ "\u0001\u0000\u0000\u0000\u0159\u0576\u0001\u0000\u0000\u0000\u015b\u057f"+
+ "\u0001\u0000\u0000\u0000\u015d\u0587\u0001\u0000\u0000\u0000\u015f\u058b"+
+ "\u0001\u0000\u0000\u0000\u0161\u0595\u0001\u0000\u0000\u0000\u0163\u059d"+
+ "\u0001\u0000\u0000\u0000\u0165\u05a5\u0001\u0000\u0000\u0000\u0167\u05ae"+
+ "\u0001\u0000\u0000\u0000\u0169\u05b4\u0001\u0000\u0000\u0000\u016b\u05be"+
+ "\u0001\u0000\u0000\u0000\u016d\u05c6\u0001\u0000\u0000\u0000\u016f\u05cc"+
+ "\u0001\u0000\u0000\u0000\u0171\u05d4\u0001\u0000\u0000\u0000\u0173\u05da"+
+ "\u0001\u0000\u0000\u0000\u0175\u05e1\u0001\u0000\u0000\u0000\u0177\u05e5"+
+ "\u0001\u0000\u0000\u0000\u0179\u05ea\u0001\u0000\u0000\u0000\u017b\u05f1"+
+ "\u0001\u0000\u0000\u0000\u017d\u05f8\u0001\u0000\u0000\u0000\u017f\u05ff"+
+ "\u0001\u0000\u0000\u0000\u0181\u0603\u0001\u0000\u0000\u0000\u0183\u0608"+
+ "\u0001\u0000\u0000\u0000\u0185\u060d\u0001\u0000\u0000\u0000\u0187\u0617"+
+ "\u0001\u0000\u0000\u0000\u0189\u061b\u0001\u0000\u0000\u0000\u018b\u0620"+
+ "\u0001\u0000\u0000\u0000\u018d\u0625\u0001\u0000\u0000\u0000\u018f\u062a"+
+ "\u0001\u0000\u0000\u0000\u0191\u0634\u0001\u0000\u0000\u0000\u0193\u0642"+
+ "\u0001\u0000\u0000\u0000\u0195\u0652\u0001\u0000\u0000\u0000\u0197\u0655"+
+ "\u0001\u0000\u0000\u0000\u0199\u065e\u0001\u0000\u0000\u0000\u019b\u0664"+
+ "\u0001\u0000\u0000\u0000\u019d\u0669\u0001\u0000\u0000\u0000\u019f\u066e"+
+ "\u0001\u0000\u0000\u0000\u01a1\u0674\u0001\u0000\u0000\u0000\u01a3\u067d"+
+ "\u0001\u0000\u0000\u0000\u01a5\u0682\u0001\u0000\u0000\u0000\u01a7\u068c"+
+ "\u0001\u0000\u0000\u0000\u01a9\u0692\u0001\u0000\u0000\u0000\u01ab\u0699"+
+ "\u0001\u0000\u0000\u0000\u01ad\u069f\u0001\u0000\u0000\u0000\u01af\u06a5"+
+ "\u0001\u0000\u0000\u0000\u01b1\u06ac\u0001\u0000\u0000\u0000\u01b3\u06b4"+
+ "\u0001\u0000\u0000\u0000\u01b5\u06be\u0001\u0000\u0000\u0000\u01b7\u06c3"+
+ "\u0001\u0000\u0000\u0000\u01b9\u06c8\u0001\u0000\u0000\u0000\u01bb\u06ce"+
+ "\u0001\u0000\u0000\u0000\u01bd\u06d3\u0001\u0000\u0000\u0000\u01bf\u06da"+
+ "\u0001\u0000\u0000\u0000\u01c1\u06e2\u0001\u0000\u0000\u0000\u01c3\u06e8"+
+ "\u0001\u0000\u0000\u0000\u01c5\u06ed\u0001\u0000\u0000\u0000\u01c7\u0702"+
+ "\u0001\u0000\u0000\u0000\u01c9\u0704\u0001\u0000\u0000\u0000\u01cb\u0708"+
+ "\u0001\u0000\u0000\u0000\u01cd\u0713\u0001\u0000\u0000\u0000\u01cf\u071e"+
+ "\u0001\u0000\u0000\u0000\u01d1\u0725\u0001\u0000\u0000\u0000\u01d3\u072d"+
+ "\u0001\u0000\u0000\u0000\u01d5\u0746\u0001\u0000\u0000\u0000\u01d7\u0748"+
+ "\u0001\u0000\u0000\u0000\u01d9\u01da\u0005,\u0000\u0000\u01da\u0002\u0001"+
+ "\u0000\u0000\u0000\u01db\u01dc\u0005(\u0000\u0000\u01dc\u0004\u0001\u0000"+
+ "\u0000\u0000\u01dd\u01de\u0005)\u0000\u0000\u01de\u0006\u0001\u0000\u0000"+
+ "\u0000\u01df\u01e0\u0005=\u0000\u0000\u01e0\b\u0001\u0000\u0000\u0000"+
+ "\u01e1\u01e2\u0005%\u0000\u0000\u01e2\n\u0001\u0000\u0000\u0000\u01e3"+
+ "\u01e4\u0005{\u0000\u0000\u01e4\f\u0001\u0000\u0000\u0000\u01e5\u01e6"+
+ "\u0005}\u0000\u0000\u01e6\u000e\u0001\u0000\u0000\u0000\u01e7\u01e8\u0005"+
+ "+\u0000\u0000\u01e8\u0010\u0001\u0000\u0000\u0000\u01e9\u01ea\u0005-\u0000"+
+ "\u0000\u01ea\u0012\u0001\u0000\u0000\u0000\u01eb\u01ec\u0005/\u0000\u0000"+
+ "\u01ec\u0014\u0001\u0000\u0000\u0000\u01ed\u01ee\u0005|\u0000\u0000\u01ee"+
+ "\u01ef\u0005|\u0000\u0000\u01ef\u0016\u0001\u0000\u0000\u0000\u01f0\u01f1"+
+ "\u0005[\u0000\u0000\u01f1\u0018\u0001\u0000\u0000\u0000\u01f2\u01f3\u0005"+
+ "]\u0000\u0000\u01f3\u001a\u0001\u0000\u0000\u0000\u01f4\u01f5\u0005.\u0000"+
+ "\u0000\u01f5\u001c\u0001\u0000\u0000\u0000\u01f6\u01f7\u0005>\u0000\u0000"+
+ "\u01f7\u001e\u0001\u0000\u0000\u0000\u01f8\u01f9\u0005>\u0000\u0000\u01f9"+
+ "\u01fa\u0005=\u0000\u0000\u01fa \u0001\u0000\u0000\u0000\u01fb\u01fc\u0005"+
+ "<\u0000\u0000\u01fc\"\u0001\u0000\u0000\u0000\u01fd\u01fe\u0005<\u0000"+
+ "\u0000\u01fe\u01ff\u0005=\u0000\u0000\u01ff$\u0001\u0000\u0000\u0000\u0200"+
+ "\u0201\u0005<\u0000\u0000\u0201\u0202\u0005>\u0000\u0000\u0202&\u0001"+
+ "\u0000\u0000\u0000\u0203\u0204\u0005!\u0000\u0000\u0204\u0205\u0005=\u0000"+
+ "\u0000\u0205(\u0001\u0000\u0000\u0000\u0206\u0207\u0005^\u0000\u0000\u0207"+
+ "\u0208\u0005=\u0000\u0000\u0208*\u0001\u0000\u0000\u0000\u0209\u020a\u0005"+
+ ":\u0000\u0000\u020a,\u0001\u0000\u0000\u0000\u020b\u020c\u0005?\u0000"+
+ "\u0000\u020c.\u0001\u0000\u0000\u0000\u020d\u020e\u0007\u0000\u0000\u0000"+
+ "\u020e\u020f\u0001\u0000\u0000\u0000\u020f\u0210\u0006\u0017\u0000\u0000"+
+ "\u02100\u0001\u0000\u0000\u0000\u0211\u0212\u0007\u0001\u0000\u0000\u0212"+
+ "2\u0001\u0000\u0000\u0000\u0213\u0214\u0007\u0002\u0000\u0000\u02144\u0001"+
+ "\u0000\u0000\u0000\u0215\u0216\u0007\u0003\u0000\u0000\u02166\u0001\u0000"+
+ "\u0000\u0000\u0217\u0218\u0007\u0004\u0000\u0000\u02188\u0001\u0000\u0000"+
+ "\u0000\u0219\u021a\u0007\u0005\u0000\u0000\u021a:\u0001\u0000\u0000\u0000"+
+ "\u021b\u021c\u0007\u0006\u0000\u0000\u021c<\u0001\u0000\u0000\u0000\u021d"+
+ "\u021e\u0007\u0007\u0000\u0000\u021e>\u0001\u0000\u0000\u0000\u021f\u0220"+
+ "\u0007\b\u0000\u0000\u0220@\u0001\u0000\u0000\u0000\u0221\u0222\u0007"+
+ "\t\u0000\u0000\u0222B\u0001\u0000\u0000\u0000\u0223\u0224\u0007\n\u0000"+
+ "\u0000\u0224D\u0001\u0000\u0000\u0000\u0225\u0226\u0007\u000b\u0000\u0000"+
+ "\u0226F\u0001\u0000\u0000\u0000\u0227\u0228\u0007\f\u0000\u0000\u0228"+
+ "H\u0001\u0000\u0000\u0000\u0229\u022a\u0007\r\u0000\u0000\u022aJ\u0001"+
+ "\u0000\u0000\u0000\u022b\u022c\u0007\u000e\u0000\u0000\u022cL\u0001\u0000"+
+ "\u0000\u0000\u022d\u022e\u0007\u000f\u0000\u0000\u022eN\u0001\u0000\u0000"+
+ "\u0000\u022f\u0230\u0007\u0010\u0000\u0000\u0230P\u0001\u0000\u0000\u0000"+
+ "\u0231\u0232\u0007\u0011\u0000\u0000\u0232R\u0001\u0000\u0000\u0000\u0233"+
+ "\u0234\u0007\u0012\u0000\u0000\u0234T\u0001\u0000\u0000\u0000\u0235\u0236"+
+ "\u0007\u0013\u0000\u0000\u0236V\u0001\u0000\u0000\u0000\u0237\u0238\u0007"+
+ "\u0014\u0000\u0000\u0238X\u0001\u0000\u0000\u0000\u0239\u023a\u0007\u0015"+
+ "\u0000\u0000\u023aZ\u0001\u0000\u0000\u0000\u023b\u023c\u0007\u0016\u0000"+
+ "\u0000\u023c\\\u0001\u0000\u0000\u0000\u023d\u023e\u0007\u0017\u0000\u0000"+
+ "\u023e^\u0001\u0000\u0000\u0000\u023f\u0240\u0007\u0018\u0000\u0000\u0240"+
+ "`\u0001\u0000\u0000\u0000\u0241\u0242\u0007\u0019\u0000\u0000\u0242b\u0001"+
+ "\u0000\u0000\u0000\u0243\u0244\u0007\u001a\u0000\u0000\u0244d\u0001\u0000"+
+ "\u0000\u0000\u0245\u0246\u00031\u0018\u0000\u0246\u0247\u0003G#\u0000"+
+ "\u0247\u0248\u0003G#\u0000\u0248f\u0001\u0000\u0000\u0000\u0249\u024a"+
+ "\u00031\u0018\u0000\u024a\u024b\u0003K%\u0000\u024b\u024c\u00037\u001b"+
+ "\u0000\u024ch\u0001\u0000\u0000\u0000\u024d\u024e\u00031\u0018\u0000\u024e"+
+ "\u024f\u0003K%\u0000\u024f\u0250\u0003a0\u0000\u0250j\u0001\u0000\u0000"+
+ "\u0000\u0251\u0252\u00031\u0018\u0000\u0252\u0253\u0003U*\u0000\u0253"+
+ "l\u0001\u0000\u0000\u0000\u0254\u0255\u00031\u0018\u0000\u0255\u0256\u0003"+
+ "U*\u0000\u0256\u0257\u00035\u001a\u0000\u0257n\u0001\u0000\u0000\u0000"+
+ "\u0258\u0259\u0005*\u0000\u0000\u0259p\u0001\u0000\u0000\u0000\u025a\u025b"+
+ "\u00031\u0018\u0000\u025b\u025c\u0003[-\u0000\u025c\u025d\u0003=\u001e"+
+ "\u0000\u025dr\u0001\u0000\u0000\u0000\u025e\u025f\u00033\u0019\u0000\u025f"+
+ "\u0260\u00039\u001c\u0000\u0260\u0261\u0003W+\u0000\u0261\u0262\u0003"+
+ "].\u0000\u0262\u0263\u00039\u001c\u0000\u0263\u0264\u00039\u001c\u0000"+
+ "\u0264\u0265\u0003K%\u0000\u0265t\u0001\u0000\u0000\u0000\u0266\u0267"+
+ "\u00033\u0019\u0000\u0267\u0268\u0003M&\u0000\u0268\u0269\u0003W+\u0000"+
+ "\u0269\u026a\u0003?\u001f\u0000\u026av\u0001\u0000\u0000\u0000\u026b\u026c"+
+ "\u00033\u0019\u0000\u026c\u026d\u0003S)\u0000\u026d\u026e\u00039\u001c"+
+ "\u0000\u026e\u026f\u00031\u0018\u0000\u026f\u0270\u00037\u001b\u0000\u0270"+
+ "\u0271\u0003W+\u0000\u0271\u0272\u0003?\u001f\u0000\u0272x\u0001\u0000"+
+ "\u0000\u0000\u0273\u0274\u00033\u0019\u0000\u0274\u0275\u0003a0\u0000"+
+ "\u0275z\u0001\u0000\u0000\u0000\u0276\u0277\u00035\u001a\u0000\u0277\u0278"+
+ "\u00031\u0018\u0000\u0278\u0279\u0003U*\u0000\u0279\u027a\u00039\u001c"+
+ "\u0000\u027a|\u0001\u0000\u0000\u0000\u027b\u027c\u00035\u001a\u0000\u027c"+
+ "\u027d\u00031\u0018\u0000\u027d\u027e\u0003U*\u0000\u027e\u027f\u0003"+
+ "W+\u0000\u027f~\u0001\u0000\u0000\u0000\u0280\u0281\u00035\u001a\u0000"+
+ "\u0281\u0282\u00039\u001c\u0000\u0282\u0283\u0003A \u0000\u0283\u0284"+
+ "\u0003G#\u0000\u0284\u0285\u0003A \u0000\u0285\u0286\u0003K%\u0000\u0286"+
+ "\u0287\u0003=\u001e\u0000\u0287\u0080\u0001\u0000\u0000\u0000\u0288\u0289"+
+ "\u00035\u001a\u0000\u0289\u028a\u0003M&\u0000\u028a\u028b\u0003G#\u0000"+
+ "\u028b\u028c\u0003G#\u0000\u028c\u028d\u00031\u0018\u0000\u028d\u028e"+
+ "\u0003W+\u0000\u028e\u028f\u00039\u001c\u0000\u028f\u0082\u0001\u0000"+
+ "\u0000\u0000\u0290\u0291\u00035\u001a\u0000\u0291\u0292\u0003M&\u0000"+
+ "\u0292\u0293\u0003Y,\u0000\u0293\u0294\u0003K%\u0000\u0294\u0295\u0003"+
+ "W+\u0000\u0295\u0084\u0001\u0000\u0000\u0000\u0296\u0297\u00035\u001a"+
+ "\u0000\u0297\u0298\u0003S)\u0000\u0298\u0299\u0003M&\u0000\u0299\u029a"+
+ "\u0003U*\u0000\u029a\u029b\u0003U*\u0000\u029b\u0086\u0001\u0000\u0000"+
+ "\u0000\u029c\u029d\u00035\u001a\u0000\u029d\u029e\u0003Y,\u0000\u029e"+
+ "\u029f\u00033\u0019\u0000\u029f\u02a0\u00039\u001c\u0000\u02a0\u0088\u0001"+
+ "\u0000\u0000\u0000\u02a1\u02a2\u00035\u001a\u0000\u02a2\u02a3\u0003Y,"+
+ "\u0000\u02a3\u02a4\u0003S)\u0000\u02a4\u02a5\u0003S)\u0000\u02a5\u02a6"+
+ "\u00039\u001c\u0000\u02a6\u02a7\u0003K%\u0000\u02a7\u02a8\u0003W+\u0000"+
+ "\u02a8\u008a\u0001\u0000\u0000\u0000\u02a9\u02aa\u00035\u001a\u0000\u02aa"+
+ "\u02ab\u0003Y,\u0000\u02ab\u02ac\u0003S)\u0000\u02ac\u02ad\u0003S)\u0000"+
+ "\u02ad\u02ae\u00039\u001c\u0000\u02ae\u02af\u0003K%\u0000\u02af\u02b0"+
+ "\u0003W+\u0000\u02b0\u02b1\u0005_\u0000\u0000\u02b1\u02b2\u00037\u001b"+
+ "\u0000\u02b2\u02b3\u00031\u0018\u0000\u02b3\u02b4\u0003W+\u0000\u02b4"+
+ "\u02b5\u00039\u001c\u0000\u02b5\u008c\u0001\u0000\u0000\u0000\u02b6\u02b7"+
+ "\u00035\u001a\u0000\u02b7\u02b8\u0003Y,\u0000\u02b8\u02b9\u0003S)\u0000"+
+ "\u02b9\u02ba\u0003S)\u0000\u02ba\u02bb\u00039\u001c\u0000\u02bb\u02bc"+
+ "\u0003K%\u0000\u02bc\u02bd\u0003W+\u0000\u02bd\u02be\u0005_\u0000\u0000"+
+ "\u02be\u02bf\u0003A \u0000\u02bf\u02c0\u0003K%\u0000\u02c0\u02c1\u0003"+
+ "U*\u0000\u02c1\u02c2\u0003W+\u0000\u02c2\u02c3\u00031\u0018\u0000\u02c3"+
+ "\u02c4\u0003K%\u0000\u02c4\u02c5\u0003W+\u0000\u02c5\u008e\u0001\u0000"+
+ "\u0000\u0000\u02c6\u02c7\u00035\u001a\u0000\u02c7\u02c8\u0003Y,\u0000"+
+ "\u02c8\u02c9\u0003S)\u0000\u02c9\u02ca\u0003S)\u0000\u02ca\u02cb\u0003"+
+ "9\u001c\u0000\u02cb\u02cc\u0003K%\u0000\u02cc\u02cd\u0003W+\u0000\u02cd"+
+ "\u02ce\u0005_\u0000\u0000\u02ce\u02cf\u0003W+\u0000\u02cf\u02d0\u0003"+
+ "A \u0000\u02d0\u02d1\u0003I$\u0000\u02d1\u02d2\u00039\u001c\u0000\u02d2"+
+ "\u0090\u0001\u0000\u0000\u0000\u02d3\u02d4\u00035\u001a\u0000\u02d4\u02d5"+
+ "\u0003Y,\u0000\u02d5\u02d6\u0003S)\u0000\u02d6\u02d7\u0003S)\u0000\u02d7"+
+ "\u02d8\u00039\u001c\u0000\u02d8\u02d9\u0003K%\u0000\u02d9\u02da\u0003"+
+ "W+\u0000\u02da\u02db\u0005_\u0000\u0000\u02db\u02dc\u0003W+\u0000\u02dc"+
+ "\u02dd\u0003A \u0000\u02dd\u02de\u0003I$\u0000\u02de\u02df\u00039\u001c"+
+ "\u0000\u02df\u02e0\u0003U*\u0000\u02e0\u02e1\u0003W+\u0000\u02e1\u02e2"+
+ "\u00031\u0018\u0000\u02e2\u02e3\u0003I$\u0000\u02e3\u02e4\u0003O\'\u0000"+
+ "\u02e4\u0092\u0001\u0000\u0000\u0000\u02e5\u02e6\u00035\u001a\u0000\u02e6"+
+ "\u02e7\u0003a0\u0000\u02e7\u02e8\u00035\u001a\u0000\u02e8\u02e9\u0003"+
+ "G#\u0000\u02e9\u02ea\u00039\u001c\u0000\u02ea\u0094\u0001\u0000\u0000"+
+ "\u0000\u02eb\u02ec\u00037\u001b\u0000\u02ec\u02ed\u00031\u0018\u0000\u02ed"+
+ "\u02ee\u0003W+\u0000\u02ee\u02ef\u00039\u001c\u0000\u02ef\u0096\u0001"+
+ "\u0000\u0000\u0000\u02f0\u02f1\u00037\u001b\u0000\u02f1\u02f2\u00031\u0018"+
+ "\u0000\u02f2\u02f3\u0003W+\u0000\u02f3\u02f4\u00039\u001c\u0000\u02f4"+
+ "\u02f5\u0003W+\u0000\u02f5\u02f6\u0003A \u0000\u02f6\u02f7\u0003I$\u0000"+
+ "\u02f7\u02f8\u00039\u001c\u0000\u02f8\u0098\u0001\u0000\u0000\u0000\u02f9"+
+ "\u02fa\u00037\u001b\u0000\u02fa\u02fb\u00031\u0018\u0000\u02fb\u02fc\u0003"+
+ "a0\u0000\u02fc\u009a\u0001\u0000\u0000\u0000\u02fd\u02fe\u00037\u001b"+
+ "\u0000\u02fe\u02ff\u00039\u001c\u0000\u02ff\u0300\u0003;\u001d\u0000\u0300"+
+ "\u0301\u00031\u0018\u0000\u0301\u0302\u0003Y,\u0000\u0302\u0303\u0003"+
+ "G#\u0000\u0303\u0304\u0003W+\u0000\u0304\u009c\u0001\u0000\u0000\u0000"+
+ "\u0305\u0306\u00037\u001b\u0000\u0306\u0307\u00039\u001c\u0000\u0307\u0308"+
+ "\u0003G#\u0000\u0308\u0309\u00039\u001c\u0000\u0309\u030a\u0003W+\u0000"+
+ "\u030a\u030b\u00039\u001c\u0000\u030b\u009e\u0001\u0000\u0000\u0000\u030c"+
+ "\u030d\u00037\u001b\u0000\u030d\u030e\u00039\u001c\u0000\u030e\u030f\u0003"+
+ "O\'\u0000\u030f\u0310\u0003W+\u0000\u0310\u0311\u0003?\u001f\u0000\u0311"+
+ "\u00a0\u0001\u0000\u0000\u0000\u0312\u0313\u00037\u001b\u0000\u0313\u0314"+
+ "\u00039\u001c\u0000\u0314\u0315\u0003U*\u0000\u0315\u0316\u00035\u001a"+
+ "\u0000\u0316\u00a2\u0001\u0000\u0000\u0000\u0317\u0318\u00037\u001b\u0000"+
+ "\u0318\u0319\u0003A \u0000\u0319\u031a\u0003U*\u0000\u031a\u031b\u0003"+
+ "W+\u0000\u031b\u031c\u0003A \u0000\u031c\u031d\u0003K%\u0000\u031d\u031e"+
+ "\u00035\u001a\u0000\u031e\u031f\u0003W+\u0000\u031f\u00a4\u0001\u0000"+
+ "\u0000\u0000\u0320\u0321\u00039\u001c\u0000\u0321\u0322\u0003G#\u0000"+
+ "\u0322\u0323\u00039\u001c\u0000\u0323\u0324\u0003I$\u0000\u0324\u0325"+
+ "\u00039\u001c\u0000\u0325\u0326\u0003K%\u0000\u0326\u0327\u0003W+\u0000"+
+ "\u0327\u00a6\u0001\u0000\u0000\u0000\u0328\u0329\u00039\u001c\u0000\u0329"+
+ "\u032a\u0003G#\u0000\u032a\u032b\u00039\u001c\u0000\u032b\u032c\u0003"+
+ "I$\u0000\u032c\u032d\u00039\u001c\u0000\u032d\u032e\u0003K%\u0000\u032e"+
+ "\u032f\u0003W+\u0000\u032f\u0330\u0003U*\u0000\u0330\u00a8\u0001\u0000"+
+ "\u0000\u0000\u0331\u0332\u00039\u001c\u0000\u0332\u0333\u0003G#\u0000"+
+ "\u0333\u0334\u0003U*\u0000\u0334\u0335\u00039\u001c\u0000\u0335\u00aa"+
+ "\u0001\u0000\u0000\u0000\u0336\u0337\u00039\u001c\u0000\u0337\u0338\u0003"+
+ "I$\u0000\u0338\u0339\u0003O\'\u0000\u0339\u033a\u0003W+\u0000\u033a\u033b"+
+ "\u0003a0\u0000\u033b\u00ac\u0001\u0000\u0000\u0000\u033c\u033d\u00039"+
+ "\u001c\u0000\u033d\u033e\u0003K%\u0000\u033e\u033f\u00037\u001b\u0000"+
+ "\u033f\u00ae\u0001\u0000\u0000\u0000\u0340\u0341\u00039\u001c\u0000\u0341"+
+ "\u0342\u0003K%\u0000\u0342\u0343\u0003W+\u0000\u0343\u0344\u0003S)\u0000"+
+ "\u0344\u0345\u0003a0\u0000\u0345\u00b0\u0001\u0000\u0000\u0000\u0346\u0347"+
+ "\u00039\u001c\u0000\u0347\u0348\u0003O\'\u0000\u0348\u0349\u0003M&\u0000"+
+ "\u0349\u034a\u00035\u001a\u0000\u034a\u034b\u0003?\u001f\u0000\u034b\u00b2"+
+ "\u0001\u0000\u0000\u0000\u034c\u034d\u00039\u001c\u0000\u034d\u034e\u0003"+
+ "S)\u0000\u034e\u034f\u0003S)\u0000\u034f\u0350\u0003M&\u0000\u0350\u0351"+
+ "\u0003S)\u0000\u0351\u00b4\u0001\u0000\u0000\u0000\u0352\u0353\u00039"+
+ "\u001c\u0000\u0353\u0354\u0003U*\u0000\u0354\u0355\u00035\u001a\u0000"+
+ "\u0355\u0356\u00031\u0018\u0000\u0356\u0357\u0003O\'\u0000\u0357\u0358"+
+ "\u00039\u001c\u0000\u0358\u00b6\u0001\u0000\u0000\u0000\u0359\u035a\u0003"+
+ "9\u001c\u0000\u035a\u035b\u0003[-\u0000\u035b\u035c\u00039\u001c\u0000"+
+ "\u035c\u035d\u0003S)\u0000\u035d\u035e\u0003a0\u0000\u035e\u00b8\u0001"+
+ "\u0000\u0000\u0000\u035f\u0360\u00039\u001c\u0000\u0360\u0361\u0003_/"+
+ "\u0000\u0361\u0362\u00035\u001a\u0000\u0362\u0363\u00039\u001c\u0000\u0363"+
+ "\u0364\u0003O\'\u0000\u0364\u0365\u0003W+\u0000\u0365\u00ba\u0001\u0000"+
+ "\u0000\u0000\u0366\u0367\u00039\u001c\u0000\u0367\u0368\u0003_/\u0000"+
+ "\u0368\u0369\u00035\u001a\u0000\u0369\u036a\u0003G#\u0000\u036a\u036b"+
+ "\u0003Y,\u0000\u036b\u036c\u00037\u001b\u0000\u036c\u036d\u00039\u001c"+
+ "\u0000\u036d\u00bc\u0001\u0000\u0000\u0000\u036e\u036f\u00039\u001c\u0000"+
+ "\u036f\u0370\u0003_/\u0000\u0370\u0371\u0003A \u0000\u0371\u0372\u0003"+
+ "U*\u0000\u0372\u0373\u0003W+\u0000\u0373\u0374\u0003U*\u0000\u0374\u00be"+
+ "\u0001\u0000\u0000\u0000\u0375\u0376\u00039\u001c\u0000\u0376\u0377\u0003"+
+ "_/\u0000\u0377\u0378\u0003O\'\u0000\u0378\u00c0\u0001\u0000\u0000\u0000"+
+ "\u0379\u037a\u00039\u001c\u0000\u037a\u037b\u0003_/\u0000\u037b\u037c"+
+ "\u0003W+\u0000\u037c\u037d\u0003S)\u0000\u037d\u037e\u00031\u0018\u0000"+
+ "\u037e\u037f\u00035\u001a\u0000\u037f\u0380\u0003W+\u0000\u0380\u00c2"+
+ "\u0001\u0000\u0000\u0000\u0381\u0382\u0003;\u001d\u0000\u0382\u0383\u0003"+
+ "1\u0018\u0000\u0383\u0384\u0003G#\u0000\u0384\u0385\u0003U*\u0000\u0385"+
+ "\u0386\u00039\u001c\u0000\u0386\u00c4\u0001\u0000\u0000\u0000\u0387\u0388"+
+ "\u0003;\u001d\u0000\u0388\u0389\u00039\u001c\u0000\u0389\u038a\u0003W"+
+ "+\u0000\u038a\u038b\u00035\u001a\u0000\u038b\u038c\u0003?\u001f\u0000"+
+ "\u038c\u00c6\u0001\u0000\u0000\u0000\u038d\u038e\u0003;\u001d\u0000\u038e"+
+ "\u038f\u0003A \u0000\u038f\u0390\u0003G#\u0000\u0390\u0391\u0003W+\u0000"+
+ "\u0391\u0392\u00039\u001c\u0000\u0392\u0393\u0003S)\u0000\u0393\u00c8"+
+ "\u0001\u0000\u0000\u0000\u0394\u0395\u0003;\u001d\u0000\u0395\u0396\u0003"+
+ "A \u0000\u0396\u0397\u0003S)\u0000\u0397\u0398\u0003U*\u0000\u0398\u0399"+
+ "\u0003W+\u0000\u0399\u00ca\u0001\u0000\u0000\u0000\u039a\u039b\u0003;"+
+ "\u001d\u0000\u039b\u039c\u0003E\"\u0000\u039c\u00cc\u0001\u0000\u0000"+
+ "\u0000\u039d\u039e\u0003;\u001d\u0000\u039e\u039f\u0003G#\u0000\u039f"+
+ "\u03a0\u0003M&\u0000\u03a0\u03a1\u0003M&\u0000\u03a1\u03a2\u0003S)\u0000"+
+ "\u03a2\u00ce\u0001\u0000\u0000\u0000\u03a3\u03a4\u0003;\u001d\u0000\u03a4"+
+ "\u03a5\u0003M&\u0000\u03a5\u03a6\u0003G#\u0000\u03a6\u03a7\u0003G#\u0000"+
+ "\u03a7\u03a8\u0003M&\u0000\u03a8\u03a9\u0003].\u0000\u03a9\u03aa\u0003"+
+ "A \u0000\u03aa\u03ab\u0003K%\u0000\u03ab\u03ac\u0003=\u001e\u0000\u03ac"+
+ "\u00d0\u0001\u0000\u0000\u0000\u03ad\u03ae\u0003;\u001d\u0000\u03ae\u03af"+
+ "\u0003M&\u0000\u03af\u03b0\u0003S)\u0000\u03b0\u00d2\u0001\u0000\u0000"+
+ "\u0000\u03b1\u03b2\u0003;\u001d\u0000\u03b2\u03b3\u0003M&\u0000\u03b3"+
+ "\u03b4\u0003S)\u0000\u03b4\u03b5\u0003I$\u0000\u03b5\u03b6\u00031\u0018"+
+ "\u0000\u03b6\u03b7\u0003W+\u0000\u03b7\u00d4\u0001\u0000\u0000\u0000\u03b8"+
+ "\u03b9\u0003;\u001d\u0000\u03b9\u03ba\u0003S)\u0000\u03ba\u03bb\u0003"+
+ "M&\u0000\u03bb\u03bc\u0003I$\u0000\u03bc\u00d6\u0001\u0000\u0000\u0000"+
+ "\u03bd\u03be\u0003;\u001d\u0000\u03be\u03bf\u0003Y,\u0000\u03bf\u03c0"+
+ "\u0003G#\u0000\u03c0\u03c1\u0003G#\u0000\u03c1\u00d8\u0001\u0000\u0000"+
+ "\u0000\u03c2\u03c3\u0003;\u001d\u0000\u03c3\u03c4\u0003Y,\u0000\u03c4"+
+ "\u03c5\u0003K%\u0000\u03c5\u03c6\u00035\u001a\u0000\u03c6\u03c7\u0003"+
+ "W+\u0000\u03c7\u03c8\u0003A \u0000\u03c8\u03c9\u0003M&\u0000\u03c9\u03ca"+
+ "\u0003K%\u0000\u03ca\u00da\u0001\u0000\u0000\u0000\u03cb\u03cc\u0003="+
+ "\u001e\u0000\u03cc\u03cd\u0003S)\u0000\u03cd\u03ce\u0003M&\u0000\u03ce"+
+ "\u03cf\u0003Y,\u0000\u03cf\u03d0\u0003O\'\u0000\u03d0\u00dc\u0001\u0000"+
+ "\u0000\u0000\u03d1\u03d2\u0003=\u001e\u0000\u03d2\u03d3\u0003S)\u0000"+
+ "\u03d3\u03d4\u0003M&\u0000\u03d4\u03d5\u0003Y,\u0000\u03d5\u03d6\u0003"+
+ "O\'\u0000\u03d6\u03d7\u0003U*\u0000\u03d7\u00de\u0001\u0000\u0000\u0000"+
+ "\u03d8\u03d9\u0003?\u001f\u0000\u03d9\u03da\u00031\u0018\u0000\u03da\u03db"+
+ "\u0003[-\u0000\u03db\u03dc\u0003A \u0000\u03dc\u03dd\u0003K%\u0000\u03dd"+
+ "\u03de\u0003=\u001e\u0000\u03de\u00e0\u0001\u0000\u0000\u0000\u03df\u03e0"+
+ "\u0003?\u001f\u0000\u03e0\u03e1\u0003M&\u0000\u03e1\u03e2\u0003Y,\u0000"+
+ "\u03e2\u03e3\u0003S)\u0000\u03e3\u00e2\u0001\u0000\u0000\u0000\u03e4\u03e5"+
+ "\u0003A \u0000\u03e5\u03e6\u00037\u001b\u0000\u03e6\u00e4\u0001\u0000"+
+ "\u0000\u0000\u03e7\u03e8\u0003A \u0000\u03e8\u03e9\u0003=\u001e\u0000"+
+ "\u03e9\u03ea\u0003K%\u0000\u03ea\u03eb\u0003M&\u0000\u03eb\u03ec\u0003"+
+ "S)\u0000\u03ec\u03ed\u00039\u001c\u0000\u03ed\u00e6\u0001\u0000\u0000"+
+ "\u0000\u03ee\u03ef\u0003A \u0000\u03ef\u03f0\u0003G#\u0000\u03f0\u03f1"+
+ "\u0003A \u0000\u03f1\u03f2\u0003E\"\u0000\u03f2\u03f3\u00039\u001c\u0000"+
+ "\u03f3\u00e8\u0001\u0000\u0000\u0000\u03f4\u03f5\u0003A \u0000\u03f5\u03f6"+
+ "\u0003K%\u0000\u03f6\u00ea\u0001\u0000\u0000\u0000\u03f7\u03f8\u0003A"+
+ " \u0000\u03f8\u03f9\u0003K%\u0000\u03f9\u03fa\u00037\u001b\u0000\u03fa"+
+ "\u03fb\u00039\u001c\u0000\u03fb\u03fc\u0003_/\u0000\u03fc\u00ec\u0001"+
+ "\u0000\u0000\u0000\u03fd\u03fe\u0003A \u0000\u03fe\u03ff\u0003K%\u0000"+
+ "\u03ff\u0400\u00037\u001b\u0000\u0400\u0401\u0003A \u0000\u0401\u0402"+
+ "\u00035\u001a\u0000\u0402\u0403\u00039\u001c\u0000\u0403\u0404\u0003U"+
+ "*\u0000\u0404\u00ee\u0001\u0000\u0000\u0000\u0405\u0406\u0003A \u0000"+
+ "\u0406\u0407\u0003K%\u0000\u0407\u0408\u0003K%\u0000\u0408\u0409\u0003"+
+ "9\u001c\u0000\u0409\u040a\u0003S)\u0000\u040a\u00f0\u0001\u0000\u0000"+
+ "\u0000\u040b\u040c\u0003A \u0000\u040c\u040d\u0003K%\u0000\u040d\u040e"+
+ "\u0003U*\u0000\u040e\u040f\u00039\u001c\u0000\u040f\u0410\u0003S)\u0000"+
+ "\u0410\u0411\u0003W+\u0000\u0411\u00f2\u0001\u0000\u0000\u0000\u0412\u0413"+
+ "\u0003A \u0000\u0413\u0414\u0003K%\u0000\u0414\u0415\u0003U*\u0000\u0415"+
+ "\u0416\u0003W+\u0000\u0416\u0417\u00031\u0018\u0000\u0417\u0418\u0003"+
+ "K%\u0000\u0418\u0419\u0003W+\u0000\u0419\u00f4\u0001\u0000\u0000\u0000"+
+ "\u041a\u041b\u0003A \u0000\u041b\u041c\u0003K%\u0000\u041c\u041d\u0003"+
+ "W+\u0000\u041d\u041e\u00039\u001c\u0000\u041e\u041f\u0003S)\u0000\u041f"+
+ "\u0420\u0003U*\u0000\u0420\u0421\u00039\u001c\u0000\u0421\u0422\u0003"+
+ "5\u001a\u0000\u0422\u0423\u0003W+\u0000\u0423\u00f6\u0001\u0000\u0000"+
+ "\u0000\u0424\u0425\u0003A \u0000\u0425\u0426\u0003K%\u0000\u0426\u0427"+
+ "\u0003W+\u0000\u0427\u0428\u0003M&\u0000\u0428\u00f8\u0001\u0000\u0000"+
+ "\u0000\u0429\u042a\u0003A \u0000\u042a\u042b\u0003U*\u0000\u042b\u00fa"+
+ "\u0001\u0000\u0000\u0000\u042c\u042d\u0003C!\u0000\u042d\u042e\u0003M"+
+ "&\u0000\u042e\u042f\u0003A \u0000\u042f\u0430\u0003K%\u0000\u0430\u00fc"+
+ "\u0001\u0000\u0000\u0000\u0431\u0432\u0003E\"\u0000\u0432\u0433\u0003"+
+ "9\u001c\u0000\u0433\u0434\u0003a0\u0000\u0434\u00fe\u0001\u0000\u0000"+
+ "\u0000\u0435\u0436\u0003G#\u0000\u0436\u0437\u00031\u0018\u0000\u0437"+
+ "\u0438\u0003U*\u0000\u0438\u0439\u0003W+\u0000\u0439\u0100\u0001\u0000"+
+ "\u0000\u0000\u043a\u043b\u0003G#\u0000\u043b\u043c\u00031\u0018\u0000"+
+ "\u043c\u043d\u0003W+\u0000\u043d\u043e\u00039\u001c\u0000\u043e\u043f"+
+ "\u0003S)\u0000\u043f\u0440\u00031\u0018\u0000\u0440\u0441\u0003G#\u0000"+
+ "\u0441\u0102\u0001\u0000\u0000\u0000\u0442\u0443\u0003G#\u0000\u0443\u0444"+
+ "\u00039\u001c\u0000\u0444\u0445\u00031\u0018\u0000\u0445\u0446\u00037"+
+ "\u001b\u0000\u0446\u0447\u0003A \u0000\u0447\u0448\u0003K%\u0000\u0448"+
+ "\u0449\u0003=\u001e\u0000\u0449\u0104\u0001\u0000\u0000\u0000\u044a\u044b"+
+ "\u0003G#\u0000\u044b\u044c\u00039\u001c\u0000\u044c\u044d\u0003;\u001d"+
+ "\u0000\u044d\u044e\u0003W+\u0000\u044e\u0106\u0001\u0000\u0000\u0000\u044f"+
+ "\u0450\u0003G#\u0000\u0450\u0451\u0003A \u0000\u0451\u0452\u0003E\"\u0000"+
+ "\u0452\u0453\u00039\u001c\u0000\u0453\u0108\u0001\u0000\u0000\u0000\u0454"+
+ "\u0455\u0003G#\u0000\u0455\u0456\u0003A \u0000\u0456\u0457\u0003I$\u0000"+
+ "\u0457\u0458\u0003A \u0000\u0458\u0459\u0003W+\u0000\u0459\u010a\u0001"+
+ "\u0000\u0000\u0000\u045a\u045b\u0003G#\u0000\u045b\u045c\u0003A \u0000"+
+ "\u045c\u045d\u0003U*\u0000\u045d\u045e\u0003W+\u0000\u045e\u010c\u0001"+
+ "\u0000\u0000\u0000\u045f\u0460\u0003G#\u0000\u0460\u0461\u0003A \u0000"+
+ "\u0461\u0462\u0003U*\u0000\u0462\u0463\u0003W+\u0000\u0463\u0464\u0003"+
+ "1\u0018\u0000\u0464\u0465\u0003=\u001e\u0000\u0465\u0466\u0003=\u001e"+
+ "\u0000\u0466\u010e\u0001\u0000\u0000\u0000\u0467\u0468\u0003G#\u0000\u0468"+
+ "\u0469\u0003K%\u0000\u0469\u0110\u0001\u0000\u0000\u0000\u046a\u046b\u0003"+
+ "G#\u0000\u046b\u046c\u0003M&\u0000\u046c\u046d\u00035\u001a\u0000\u046d"+
+ "\u046e\u00031\u0018\u0000\u046e\u046f\u0003G#\u0000\u046f\u0112\u0001"+
+ "\u0000\u0000\u0000\u0470\u0471\u0003G#\u0000\u0471\u0472\u0003M&\u0000"+
+ "\u0472\u0473\u00035\u001a\u0000\u0473\u0474\u00031\u0018\u0000\u0474\u0475"+
+ "\u0003G#\u0000\u0475\u0476\u0005_\u0000\u0000\u0476\u0477\u00037\u001b"+
+ "\u0000\u0477\u0478\u00031\u0018\u0000\u0478\u0479\u0003W+\u0000\u0479"+
+ "\u047a\u00039\u001c\u0000\u047a\u0114\u0001\u0000\u0000\u0000\u047b\u047c"+
+ "\u0003G#\u0000\u047c\u047d\u0003M&\u0000\u047d\u047e\u00035\u001a\u0000"+
+ "\u047e\u047f\u00031\u0018\u0000\u047f\u0480\u0003G#\u0000\u0480\u0481"+
+ "\u0005_\u0000\u0000\u0481\u0482\u00037\u001b\u0000\u0482\u0483\u00031"+
+ "\u0018\u0000\u0483\u0484\u0003W+\u0000\u0484\u0485\u00039\u001c\u0000"+
+ "\u0485\u0486\u0003W+\u0000\u0486\u0487\u0003A \u0000\u0487\u0488\u0003"+
+ "I$\u0000\u0488\u0489\u00039\u001c\u0000\u0489\u0116\u0001\u0000\u0000"+
+ "\u0000\u048a\u048b\u0003G#\u0000\u048b\u048c\u0003M&\u0000\u048c\u048d"+
+ "\u00035\u001a\u0000\u048d\u048e\u00031\u0018\u0000\u048e\u048f\u0003G"+
+ "#\u0000\u048f\u0490\u0005_\u0000\u0000\u0490\u0491\u0003W+\u0000\u0491"+
+ "\u0492\u0003A \u0000\u0492\u0493\u0003I$\u0000\u0493\u0494\u00039\u001c"+
+ "\u0000\u0494\u0118\u0001\u0000\u0000\u0000\u0495\u0496\u0003I$\u0000\u0496"+
+ "\u0497\u00031\u0018\u0000\u0497\u0498\u0003O\'\u0000\u0498\u011a\u0001"+
+ "\u0000\u0000\u0000\u0499\u049a\u0003I$\u0000\u049a\u049b\u00031\u0018"+
+ "\u0000\u049b\u049c\u0003W+\u0000\u049c\u049d\u00039\u001c\u0000\u049d"+
+ "\u049e\u0003S)\u0000\u049e\u049f\u0003A \u0000\u049f\u04a0\u00031\u0018"+
+ "\u0000\u04a0\u04a1\u0003G#\u0000\u04a1\u04a2\u0003A \u0000\u04a2\u04a3"+
+ "\u0003c1\u0000\u04a3\u04a4\u00039\u001c\u0000\u04a4\u04a5\u00037\u001b"+
+ "\u0000\u04a5\u011c\u0001\u0000\u0000\u0000\u04a6\u04a7\u0003I$\u0000\u04a7"+
+ "\u04a8\u00031\u0018\u0000\u04a8\u04a9\u0003_/\u0000\u04a9\u011e\u0001"+
+ "\u0000\u0000\u0000\u04aa\u04ab\u0003I$\u0000\u04ab\u04ac\u00031\u0018"+
+ "\u0000\u04ac\u04ad\u0003_/\u0000\u04ad\u04ae\u00039\u001c\u0000\u04ae"+
+ "\u04af\u0003G#\u0000\u04af\u04b0\u00039\u001c\u0000\u04b0\u04b1\u0003"+
+ "I$\u0000\u04b1\u04b2\u00039\u001c\u0000\u04b2\u04b3\u0003K%\u0000\u04b3"+
+ "\u04b4\u0003W+\u0000\u04b4\u0120\u0001\u0000\u0000\u0000\u04b5\u04b6\u0003"+
+ "I$\u0000\u04b6\u04b7\u00031\u0018\u0000\u04b7\u04b8\u0003_/\u0000\u04b8"+
+ "\u04b9\u0003A \u0000\u04b9\u04ba\u0003K%\u0000\u04ba\u04bb\u00037\u001b"+
+ "\u0000\u04bb\u04bc\u00039\u001c\u0000\u04bc\u04bd\u0003_/\u0000\u04bd"+
+ "\u0122\u0001\u0000\u0000\u0000\u04be\u04bf\u0003I$\u0000\u04bf\u04c0\u0003"+
+ "9\u001c\u0000\u04c0\u04c1\u0003I$\u0000\u04c1\u04c2\u00033\u0019\u0000"+
+ "\u04c2\u04c3\u00039\u001c\u0000\u04c3\u04c4\u0003S)\u0000\u04c4\u0124"+
+ "\u0001\u0000\u0000\u0000\u04c5\u04c6\u0003I$\u0000\u04c6\u04c7\u0003A"+
+ " \u0000\u04c7\u04c8\u00035\u001a\u0000\u04c8\u04c9\u0003S)\u0000\u04c9"+
+ "\u04ca\u0003M&\u0000\u04ca\u04cb\u0003U*\u0000\u04cb\u04cc\u00039\u001c"+
+ "\u0000\u04cc\u04cd\u00035\u001a\u0000\u04cd\u04ce\u0003M&\u0000\u04ce"+
+ "\u04cf\u0003K%\u0000\u04cf\u04d0\u00037\u001b\u0000\u04d0\u0126\u0001"+
+ "\u0000\u0000\u0000\u04d1\u04d2\u0003I$\u0000\u04d2\u04d3\u0003A \u0000"+
+ "\u04d3\u04d4\u0003G#\u0000\u04d4\u04d5\u0003G#\u0000\u04d5\u04d6\u0003"+
+ "A \u0000\u04d6\u04d7\u0003U*\u0000\u04d7\u04d8\u00039\u001c\u0000\u04d8"+
+ "\u04d9\u00035\u001a\u0000\u04d9\u04da\u0003M&\u0000\u04da\u04db\u0003"+
+ "K%\u0000\u04db\u04dc\u00037\u001b\u0000\u04dc\u0128\u0001\u0000\u0000"+
+ "\u0000\u04dd\u04de\u0003I$\u0000\u04de\u04df\u0003A \u0000\u04df\u04e0"+
+ "\u0003K%\u0000\u04e0\u012a\u0001\u0000\u0000\u0000\u04e1\u04e2\u0003I"+
+ "$\u0000\u04e2\u04e3\u0003A \u0000\u04e3\u04e4\u0003K%\u0000\u04e4\u04e5"+
+ "\u00039\u001c\u0000\u04e5\u04e6\u0003G#\u0000\u04e6\u04e7\u00039\u001c"+
+ "\u0000\u04e7\u04e8\u0003I$\u0000\u04e8\u04e9\u00039\u001c\u0000\u04e9"+
+ "\u04ea\u0003K%\u0000\u04ea\u04eb\u0003W+\u0000\u04eb\u012c\u0001\u0000"+
+ "\u0000\u0000\u04ec\u04ed\u0003I$\u0000\u04ed\u04ee\u0003A \u0000\u04ee"+
+ "\u04ef\u0003K%\u0000\u04ef\u04f0\u0003A \u0000\u04f0\u04f1\u0003K%\u0000"+
+ "\u04f1\u04f2\u00037\u001b\u0000\u04f2\u04f3\u00039\u001c\u0000\u04f3\u04f4"+
+ "\u0003_/\u0000\u04f4\u012e\u0001\u0000\u0000\u0000\u04f5\u04f6\u0003I"+
+ "$\u0000\u04f6\u04f7\u0003A \u0000\u04f7\u04f8\u0003K%\u0000\u04f8\u04f9"+
+ "\u0003Y,\u0000\u04f9\u04fa\u0003W+\u0000\u04fa\u04fb\u00039\u001c\u0000"+
+ "\u04fb\u0130\u0001\u0000\u0000\u0000\u04fc\u04fd\u0003I$\u0000\u04fd\u04fe"+
+ "\u0003M&\u0000\u04fe\u04ff\u0003K%\u0000\u04ff\u0500\u0003W+\u0000\u0500"+
+ "\u0501\u0003?\u001f\u0000\u0501\u0132\u0001\u0000\u0000\u0000\u0502\u0503"+
+ "\u0003K%\u0000\u0503\u0504\u00031\u0018\u0000\u0504\u0505\u0003K%\u0000"+
+ "\u0505\u0506\u0003M&\u0000\u0506\u0507\u0003U*\u0000\u0507\u0508\u0003"+
+ "9\u001c\u0000\u0508\u0509\u00035\u001a\u0000\u0509\u050a\u0003M&\u0000"+
+ "\u050a\u050b\u0003K%\u0000\u050b\u050c\u00037\u001b\u0000\u050c\u0134"+
+ "\u0001\u0000\u0000\u0000\u050d\u050e\u0003K%\u0000\u050e\u050f\u00031"+
+ "\u0018\u0000\u050f\u0510\u0003W+\u0000\u0510\u0511\u0003Y,\u0000\u0511"+
+ "\u0512\u0003S)\u0000\u0512\u0513\u00031\u0018\u0000\u0513\u0514\u0003"+
+ "G#\u0000\u0514\u0515\u0003A \u0000\u0515\u0516\u00037\u001b\u0000\u0516"+
+ "\u0136\u0001\u0000\u0000\u0000\u0517\u0518\u0003K%\u0000\u0518\u0519\u0003"+
+ "9\u001c\u0000\u0519\u051a\u0003].\u0000\u051a\u0138\u0001\u0000\u0000"+
+ "\u0000\u051b\u051c\u0003K%\u0000\u051c\u051d\u00039\u001c\u0000\u051d"+
+ "\u051e\u0003_/\u0000\u051e\u051f\u0003W+\u0000\u051f\u013a\u0001\u0000"+
+ "\u0000\u0000\u0520\u0521\u0003K%\u0000\u0521\u0522\u0003M&\u0000\u0522"+
+ "\u013c\u0001\u0000\u0000\u0000\u0523\u0524\u0003K%\u0000\u0524\u0525\u0003"+
+ "M&\u0000\u0525\u0526\u0003W+\u0000\u0526\u013e\u0001\u0000\u0000\u0000"+
+ "\u0527\u0528\u0003K%\u0000\u0528\u0529\u0003Y,\u0000\u0529\u052a\u0003"+
+ "G#\u0000\u052a\u052b\u0003G#\u0000\u052b\u0140\u0001\u0000\u0000\u0000"+
+ "\u052c\u052d\u0003K%\u0000\u052d\u052e\u0003Y,\u0000\u052e\u052f\u0003"+
+ "G#\u0000\u052f\u0530\u0003G#\u0000\u0530\u0531\u0003U*\u0000\u0531\u0142"+
+ "\u0001\u0000\u0000\u0000\u0532\u0533\u0003M&\u0000\u0533\u0534\u00033"+
+ "\u0019\u0000\u0534\u0535\u0003C!\u0000\u0535\u0536\u00039\u001c\u0000"+
+ "\u0536\u0537\u00035\u001a\u0000\u0537\u0538\u0003W+\u0000\u0538\u0144"+
+ "\u0001\u0000\u0000\u0000\u0539\u053a\u0003M&\u0000\u053a\u053b\u0003;"+
+ "\u001d\u0000\u053b\u0146\u0001\u0000\u0000\u0000\u053c\u053d\u0003M&\u0000"+
+ "\u053d\u053e\u0003;\u001d\u0000\u053e\u053f\u0003;\u001d\u0000\u053f\u0540"+
+ "\u0003U*\u0000\u0540\u0541\u00039\u001c\u0000\u0541\u0542\u0003W+\u0000"+
+ "\u0542\u0148\u0001\u0000\u0000\u0000\u0543\u0544\u0003M&\u0000\u0544\u0545"+
+ "\u0003;\u001d\u0000\u0545\u0546\u0003;\u001d\u0000\u0546\u0547\u0003U"+
+ "*\u0000\u0547\u0548\u00039\u001c\u0000\u0548\u0549\u0003W+\u0000\u0549"+
+ "\u054a\u0005_\u0000\u0000\u054a\u054b\u00037\u001b\u0000\u054b\u054c\u0003"+
+ "1\u0018\u0000\u054c\u054d\u0003W+\u0000\u054d\u054e\u00039\u001c\u0000"+
+ "\u054e\u054f\u0003W+\u0000\u054f\u0550\u0003A \u0000\u0550\u0551\u0003"+
+ "I$\u0000\u0551\u0552\u00039\u001c\u0000\u0552\u014a\u0001\u0000\u0000"+
+ "\u0000\u0553\u0554\u0003M&\u0000\u0554\u0555\u0003K%\u0000\u0555\u014c"+
+ "\u0001\u0000\u0000\u0000\u0556\u0557\u0003M&\u0000\u0557\u0558\u0003K"+
+ "%\u0000\u0558\u0559\u0003G#\u0000\u0559\u055a\u0003a0\u0000\u055a\u014e"+
+ "\u0001\u0000\u0000\u0000\u055b\u055c\u0003M&\u0000\u055c\u055d\u0003S"+
+ ")\u0000\u055d\u0150\u0001\u0000\u0000\u0000\u055e\u055f\u0003M&\u0000"+
+ "\u055f\u0560\u0003S)\u0000\u0560\u0561\u00037\u001b\u0000\u0561\u0562"+
+ "\u00039\u001c\u0000\u0562\u0563\u0003S)\u0000\u0563\u0152\u0001\u0000"+
+ "\u0000\u0000\u0564\u0565\u0003M&\u0000\u0565\u0566\u0003W+\u0000\u0566"+
+ "\u0567\u0003?\u001f\u0000\u0567\u0568\u00039\u001c\u0000\u0568\u0569\u0003"+
+ "S)\u0000\u0569\u056a\u0003U*\u0000\u056a\u0154\u0001\u0000\u0000\u0000"+
+ "\u056b\u056c\u0003M&\u0000\u056c\u056d\u0003Y,\u0000\u056d\u056e\u0003"+
+ "W+\u0000\u056e\u056f\u00039\u001c\u0000\u056f\u0570\u0003S)\u0000\u0570"+
+ "\u0156\u0001\u0000\u0000\u0000\u0571\u0572\u0003M&\u0000\u0572\u0573\u0003"+
+ "[-\u0000\u0573\u0574\u00039\u001c\u0000\u0574\u0575\u0003S)\u0000\u0575"+
+ "\u0158\u0001\u0000\u0000\u0000\u0576\u0577\u0003M&\u0000\u0577\u0578\u0003"+
+ "[-\u0000\u0578\u0579\u00039\u001c\u0000\u0579\u057a\u0003S)\u0000\u057a"+
+ "\u057b\u0003;\u001d\u0000\u057b\u057c\u0003G#\u0000\u057c\u057d\u0003"+
+ "M&\u0000\u057d\u057e\u0003].\u0000\u057e\u015a\u0001\u0000\u0000\u0000"+
+ "\u057f\u0580\u0003M&\u0000\u0580\u0581\u0003[-\u0000\u0581\u0582\u0003"+
+ "9\u001c\u0000\u0582\u0583\u0003S)\u0000\u0583\u0584\u0003G#\u0000\u0584"+
+ "\u0585\u00031\u0018\u0000\u0585\u0586\u0003a0\u0000\u0586\u015c\u0001"+
+ "\u0000\u0000\u0000\u0587\u0588\u0003O\'\u0000\u0588\u0589\u00031\u0018"+
+ "\u0000\u0589\u058a\u00037\u001b\u0000\u058a\u015e\u0001\u0000\u0000\u0000"+
+ "\u058b\u058c\u0003O\'\u0000\u058c\u058d\u00031\u0018\u0000\u058d\u058e"+
+ "\u0003S)\u0000\u058e\u058f\u0003W+\u0000\u058f\u0590\u0003A \u0000\u0590"+
+ "\u0591\u0003W+\u0000\u0591\u0592\u0003A \u0000\u0592\u0593\u0003M&\u0000"+
+ "\u0593\u0594\u0003K%\u0000\u0594\u0160\u0001\u0000\u0000\u0000\u0595\u0596"+
+ "\u0003O\'\u0000\u0596\u0597\u00039\u001c\u0000\u0597\u0598\u0003S)\u0000"+
+ "\u0598\u0599\u00035\u001a\u0000\u0599\u059a\u00039\u001c\u0000\u059a\u059b"+
+ "\u0003K%\u0000\u059b\u059c\u0003W+\u0000\u059c\u0162\u0001\u0000\u0000"+
+ "\u0000\u059d\u059e\u0003O\'\u0000\u059e\u059f\u0003G#\u0000\u059f\u05a0"+
+ "\u00031\u0018\u0000\u05a0\u05a1\u00035\u001a\u0000\u05a1\u05a2\u0003A"+
+ " \u0000\u05a2\u05a3\u0003K%\u0000\u05a3\u05a4\u0003=\u001e\u0000\u05a4"+
+ "\u0164\u0001\u0000\u0000\u0000\u05a5\u05a6\u0003O\'\u0000\u05a6\u05a7"+
+ "\u0003M&\u0000\u05a7\u05a8\u0003U*\u0000\u05a8\u05a9\u0003A \u0000\u05a9"+
+ "\u05aa\u0003W+\u0000\u05aa\u05ab\u0003A \u0000\u05ab\u05ac\u0003M&\u0000"+
+ "\u05ac\u05ad\u0003K%\u0000\u05ad\u0166\u0001\u0000\u0000\u0000\u05ae\u05af"+
+ "\u0003O\'\u0000\u05af\u05b0\u0003M&\u0000\u05b0\u05b1\u0003].\u0000\u05b1"+
+ "\u05b2\u00039\u001c\u0000\u05b2\u05b3\u0003S)\u0000\u05b3\u0168\u0001"+
+ "\u0000\u0000\u0000\u05b4\u05b5\u0003O\'\u0000\u05b5\u05b6\u0003S)\u0000"+
+ "\u05b6\u05b7\u00039\u001c\u0000\u05b7\u05b8\u00035\u001a\u0000\u05b8\u05b9"+
+ "\u00039\u001c\u0000\u05b9\u05ba\u00037\u001b\u0000\u05ba\u05bb\u0003A"+
+ " \u0000\u05bb\u05bc\u0003K%\u0000\u05bc\u05bd\u0003=\u001e\u0000\u05bd"+
+ "\u016a\u0001\u0000\u0000\u0000\u05be\u05bf\u0003Q(\u0000\u05bf\u05c0\u0003"+
+ "Y,\u0000\u05c0\u05c1\u00031\u0018\u0000\u05c1\u05c2\u0003S)\u0000\u05c2"+
+ "\u05c3\u0003W+\u0000\u05c3\u05c4\u00039\u001c\u0000\u05c4\u05c5\u0003"+
+ "S)\u0000\u05c5\u016c\u0001\u0000\u0000\u0000\u05c6\u05c7\u0003S)\u0000"+
+ "\u05c7\u05c8\u00031\u0018\u0000\u05c8\u05c9\u0003K%\u0000\u05c9\u05ca"+
+ "\u0003=\u001e\u0000\u05ca\u05cb\u00039\u001c\u0000\u05cb\u016e\u0001\u0000"+
+ "\u0000\u0000\u05cc\u05cd\u0003S)\u0000\u05cd\u05ce\u00039\u001c\u0000"+
+ "\u05ce\u05cf\u0003U*\u0000\u05cf\u05d0\u0003O\'\u0000\u05d0\u05d1\u0003"+
+ "9\u001c\u0000\u05d1\u05d2\u00035\u001a\u0000\u05d2\u05d3\u0003W+\u0000"+
+ "\u05d3\u0170\u0001\u0000\u0000\u0000\u05d4\u05d5\u0003S)\u0000\u05d5\u05d6"+
+ "\u0003A \u0000\u05d6\u05d7\u0003=\u001e\u0000\u05d7\u05d8\u0003?\u001f"+
+ "\u0000\u05d8\u05d9\u0003W+\u0000\u05d9\u0172\u0001\u0000\u0000\u0000\u05da"+
+ "\u05db\u0003S)\u0000\u05db\u05dc\u0003M&\u0000\u05dc\u05dd\u0003G#\u0000"+
+ "\u05dd\u05de\u0003G#\u0000\u05de\u05df\u0003Y,\u0000\u05df\u05e0\u0003"+
+ "O\'\u0000\u05e0\u0174\u0001\u0000\u0000\u0000\u05e1\u05e2\u0003S)\u0000"+
+ "\u05e2\u05e3\u0003M&\u0000\u05e3\u05e4\u0003].\u0000\u05e4\u0176\u0001"+
+ "\u0000\u0000\u0000\u05e5\u05e6\u0003S)\u0000\u05e6\u05e7\u0003M&\u0000"+
+ "\u05e7\u05e8\u0003].\u0000\u05e8\u05e9\u0003U*\u0000\u05e9\u0178\u0001"+
+ "\u0000\u0000\u0000\u05ea\u05eb\u0003U*\u0000\u05eb\u05ec\u00039\u001c"+
+ "\u0000\u05ec\u05ed\u00031\u0018\u0000\u05ed\u05ee\u0003S)\u0000\u05ee"+
+ "\u05ef\u00035\u001a\u0000\u05ef\u05f0\u0003?\u001f\u0000\u05f0\u017a\u0001"+
+ "\u0000\u0000\u0000\u05f1\u05f2\u0003U*\u0000\u05f2\u05f3\u00039\u001c"+
+ "\u0000\u05f3\u05f4\u00035\u001a\u0000\u05f4\u05f5\u0003M&\u0000\u05f5"+
+ "\u05f6\u0003K%\u0000\u05f6\u05f7\u00037\u001b\u0000\u05f7\u017c\u0001"+
+ "\u0000\u0000\u0000\u05f8\u05f9\u0003U*\u0000\u05f9\u05fa\u00039\u001c"+
+ "\u0000\u05fa\u05fb\u0003G#\u0000\u05fb\u05fc\u00039\u001c\u0000\u05fc"+
+ "\u05fd\u00035\u001a\u0000\u05fd\u05fe\u0003W+\u0000\u05fe\u017e\u0001"+
+ "\u0000\u0000\u0000\u05ff\u0600\u0003U*\u0000\u0600\u0601\u00039\u001c"+
+ "\u0000\u0601\u0602\u0003W+\u0000\u0602\u0180\u0001\u0000\u0000\u0000\u0603"+
+ "\u0604\u0003U*\u0000\u0604\u0605\u0003A \u0000\u0605\u0606\u0003c1\u0000"+
+ "\u0606\u0607\u00039\u001c\u0000\u0607\u0182\u0001\u0000\u0000\u0000\u0608"+
+ "\u0609\u0003U*\u0000\u0609\u060a\u0003M&\u0000\u060a\u060b\u0003I$\u0000"+
+ "\u060b\u060c\u00039\u001c\u0000\u060c\u0184\u0001\u0000\u0000\u0000\u060d"+
+ "\u060e\u0003U*\u0000\u060e\u060f\u0003Y,\u0000\u060f\u0610\u00033\u0019"+
+ "\u0000\u0610\u0611\u0003U*\u0000\u0611\u0612\u0003W+\u0000\u0612\u0613"+
+ "\u0003S)\u0000\u0613\u0614\u0003A \u0000\u0614\u0615\u0003K%\u0000\u0615"+
+ "\u0616\u0003=\u001e\u0000\u0616\u0186\u0001\u0000\u0000\u0000\u0617\u0618"+
+ "\u0003U*\u0000\u0618\u0619\u0003Y,\u0000\u0619\u061a\u0003I$\u0000\u061a"+
+ "\u0188\u0001\u0000\u0000\u0000\u061b\u061c\u0003W+\u0000\u061c\u061d\u0003"+
+ "?\u001f\u0000\u061d\u061e\u00039\u001c\u0000\u061e\u061f\u0003K%\u0000"+
+ "\u061f\u018a\u0001\u0000\u0000\u0000\u0620\u0621\u0003W+\u0000\u0621\u0622"+
+ "\u0003A \u0000\u0622\u0623\u00039\u001c\u0000\u0623\u0624\u0003U*\u0000"+
+ "\u0624\u018c\u0001\u0000\u0000\u0000\u0625\u0626\u0003W+\u0000\u0626\u0627"+
+ "\u0003A \u0000\u0627\u0628\u0003I$\u0000\u0628\u0629\u00039\u001c\u0000"+
+ "\u0629\u018e\u0001\u0000\u0000\u0000\u062a\u062b\u0003W+\u0000\u062b\u062c"+
+ "\u0003A \u0000\u062c\u062d\u0003I$\u0000\u062d\u062e\u00039\u001c\u0000"+
+ "\u062e\u062f\u0003U*\u0000\u062f\u0630\u0003W+\u0000\u0630\u0631\u0003"+
+ "1\u0018\u0000\u0631\u0632\u0003I$\u0000\u0632\u0633\u0003O\'\u0000\u0633"+
+ "\u0190\u0001\u0000\u0000\u0000\u0634\u0635\u0003W+\u0000\u0635\u0636\u0003"+
+ "A \u0000\u0636\u0637\u0003I$\u0000\u0637\u0638\u00039\u001c\u0000\u0638"+
+ "\u0639\u0003c1\u0000\u0639\u063a\u0003M&\u0000\u063a\u063b\u0003K%\u0000"+
+ "\u063b\u063c\u00039\u001c\u0000\u063c\u063d\u0005_\u0000\u0000\u063d\u063e"+
+ "\u0003?\u001f\u0000\u063e\u063f\u0003M&\u0000\u063f\u0640\u0003Y,\u0000"+
+ "\u0640\u0641\u0003S)\u0000\u0641\u0192\u0001\u0000\u0000\u0000\u0642\u0643"+
+ "\u0003W+\u0000\u0643\u0644\u0003A \u0000\u0644\u0645\u0003I$\u0000\u0645"+
+ "\u0646\u00039\u001c\u0000\u0646\u0647\u0003c1\u0000\u0647\u0648\u0003"+
+ "M&\u0000\u0648\u0649\u0003K%\u0000\u0649\u064a\u00039\u001c\u0000\u064a"+
+ "\u064b\u0005_\u0000\u0000\u064b\u064c\u0003I$\u0000\u064c\u064d\u0003"+
+ "A \u0000\u064d\u064e\u0003K%\u0000\u064e\u064f\u0003Y,\u0000\u064f\u0650"+
+ "\u0003W+\u0000\u0650\u0651\u00039\u001c\u0000\u0651\u0194\u0001\u0000"+
+ "\u0000\u0000\u0652\u0653\u0003W+\u0000\u0653\u0654\u0003M&\u0000\u0654"+
+ "\u0196\u0001\u0000\u0000\u0000\u0655\u0656\u0003W+\u0000\u0656\u0657\u0003"+
+ "S)\u0000\u0657\u0658\u00031\u0018\u0000\u0658\u0659\u0003A \u0000\u0659"+
+ "\u065a\u0003G#\u0000\u065a\u065b\u0003A \u0000\u065b\u065c\u0003K%\u0000"+
+ "\u065c\u065d\u0003=\u001e\u0000\u065d\u0198\u0001\u0000\u0000\u0000\u065e"+
+ "\u065f\u0003W+\u0000\u065f\u0660\u0003S)\u0000\u0660\u0661\u00039\u001c"+
+ "\u0000\u0661\u0662\u00031\u0018\u0000\u0662\u0663\u0003W+\u0000\u0663"+
+ "\u019a\u0001\u0000\u0000\u0000\u0664\u0665\u0003W+\u0000\u0665\u0666\u0003"+
+ "S)\u0000\u0666\u0667\u0003A \u0000\u0667\u0668\u0003I$\u0000\u0668\u019c"+
+ "\u0001\u0000\u0000\u0000\u0669\u066a\u0003W+\u0000\u066a\u066b\u0003S"+
+ ")\u0000\u066b\u066c\u0003Y,\u0000\u066c\u066d\u00039\u001c\u0000\u066d"+
+ "\u019e\u0001\u0000\u0000\u0000\u066e\u066f\u0003W+\u0000\u066f\u0670\u0003"+
+ "S)\u0000\u0670\u0671\u0003Y,\u0000\u0671\u0672\u0003K%\u0000\u0672\u0673"+
+ "\u00035\u001a\u0000\u0673\u01a0\u0001\u0000\u0000\u0000\u0674\u0675\u0003"+
+ "W+\u0000\u0675\u0676\u0003S)\u0000\u0676\u0677\u0003Y,\u0000\u0677\u0678"+
+ "\u0003K%\u0000\u0678\u0679\u00035\u001a\u0000\u0679\u067a\u00031\u0018"+
+ "\u0000\u067a\u067b\u0003W+\u0000\u067b\u067c\u00039\u001c\u0000\u067c"+
+ "\u01a2\u0001\u0000\u0000\u0000\u067d\u067e\u0003W+\u0000\u067e\u067f\u0003"+
+ "a0\u0000\u067f\u0680\u0003O\'\u0000\u0680\u0681\u00039\u001c\u0000\u0681"+
+ "\u01a4\u0001\u0000\u0000\u0000\u0682\u0683\u0003Y,\u0000\u0683\u0684\u0003"+
+ "K%\u0000\u0684\u0685\u00033\u0019\u0000\u0685\u0686\u0003M&\u0000\u0686"+
+ "\u0687\u0003Y,\u0000\u0687\u0688\u0003K%\u0000\u0688\u0689\u00037\u001b"+
+ "\u0000\u0689\u068a\u00039\u001c\u0000\u068a\u068b\u00037\u001b\u0000\u068b"+
+ "\u01a6\u0001\u0000\u0000\u0000\u068c\u068d\u0003Y,\u0000\u068d\u068e\u0003"+
+ "K%\u0000\u068e\u068f\u0003A \u0000\u068f\u0690\u0003M&\u0000\u0690\u0691"+
+ "\u0003K%\u0000\u0691\u01a8\u0001\u0000\u0000\u0000\u0692\u0693\u0003Y"+
+ ",\u0000\u0693\u0694\u0003O\'\u0000\u0694\u0695\u00037\u001b\u0000\u0695"+
+ "\u0696\u00031\u0018\u0000\u0696\u0697\u0003W+\u0000\u0697\u0698\u0003"+
+ "9\u001c\u0000\u0698\u01aa\u0001\u0000\u0000\u0000\u0699\u069a\u0003Y,"+
+ "\u0000\u069a\u069b\u0003U*\u0000\u069b\u069c\u0003A \u0000\u069c\u069d"+
+ "\u0003K%\u0000\u069d\u069e\u0003=\u001e\u0000\u069e\u01ac\u0001\u0000"+
+ "\u0000\u0000\u069f\u06a0\u0003[-\u0000\u06a0\u06a1\u00031\u0018\u0000"+
+ "\u06a1\u06a2\u0003G#\u0000\u06a2\u06a3\u0003Y,\u0000\u06a3\u06a4\u0003"+
+ "9\u001c\u0000\u06a4\u01ae\u0001\u0000\u0000\u0000\u06a5\u06a6\u0003[-"+
+ "\u0000\u06a6\u06a7\u00031\u0018\u0000\u06a7\u06a8\u0003G#\u0000\u06a8"+
+ "\u06a9\u0003Y,\u0000\u06a9\u06aa\u00039\u001c\u0000\u06aa\u06ab\u0003"+
+ "U*\u0000\u06ab\u01b0\u0001\u0000\u0000\u0000\u06ac\u06ad\u0003[-\u0000"+
+ "\u06ad\u06ae\u00039\u001c\u0000\u06ae\u06af\u0003S)\u0000\u06af\u06b0"+
+ "\u0003U*\u0000\u06b0\u06b1\u0003A \u0000\u06b1\u06b2\u0003M&\u0000\u06b2"+
+ "\u06b3\u0003K%\u0000\u06b3\u01b2\u0001\u0000\u0000\u0000\u06b4\u06b5\u0003"+
+ "[-\u0000\u06b5\u06b6\u00039\u001c\u0000\u06b6\u06b7\u0003S)\u0000\u06b7"+
+ "\u06b8\u0003U*\u0000\u06b8\u06b9\u0003A \u0000\u06b9\u06ba\u0003M&\u0000"+
+ "\u06ba\u06bb\u0003K%\u0000\u06bb\u06bc\u00039\u001c\u0000\u06bc\u06bd"+
+ "\u00037\u001b\u0000\u06bd\u01b4\u0001\u0000\u0000\u0000\u06be\u06bf\u0003"+
+ "].\u0000\u06bf\u06c0\u00039\u001c\u0000\u06c0\u06c1\u00039\u001c\u0000"+
+ "\u06c1\u06c2\u0003E\"\u0000\u06c2\u01b6\u0001\u0000\u0000\u0000\u06c3"+
+ "\u06c4\u0003].\u0000\u06c4\u06c5\u0003?\u001f\u0000\u06c5\u06c6\u0003"+
+ "9\u001c\u0000\u06c6\u06c7\u0003K%\u0000\u06c7\u01b8\u0001\u0000\u0000"+
+ "\u0000\u06c8\u06c9\u0003].\u0000\u06c9\u06ca\u0003?\u001f\u0000\u06ca"+
+ "\u06cb\u00039\u001c\u0000\u06cb\u06cc\u0003S)\u0000\u06cc\u06cd\u0003"+
+ "9\u001c\u0000\u06cd\u01ba\u0001\u0000\u0000\u0000\u06ce\u06cf\u0003]."+
+ "\u0000\u06cf\u06d0\u0003A \u0000\u06d0\u06d1\u0003W+\u0000\u06d1\u06d2"+
+ "\u0003?\u001f\u0000\u06d2\u01bc\u0001\u0000\u0000\u0000\u06d3\u06d4\u0003"+
+ "].\u0000\u06d4\u06d5\u0003A \u0000\u06d5\u06d6\u0003W+\u0000\u06d6\u06d7"+
+ "\u0003?\u001f\u0000\u06d7\u06d8\u0003A \u0000\u06d8\u06d9\u0003K%\u0000"+
+ "\u06d9\u01be\u0001\u0000\u0000\u0000\u06da\u06db\u0003].\u0000\u06db\u06dc"+
+ "\u0003A \u0000\u06dc\u06dd\u0003W+\u0000\u06dd\u06de\u0003?\u001f\u0000"+
+ "\u06de\u06df\u0003M&\u0000\u06df\u06e0\u0003Y,\u0000\u06e0\u06e1\u0003"+
+ "W+\u0000\u06e1\u01c0\u0001\u0000\u0000\u0000\u06e2\u06e3\u0003a0\u0000"+
+ "\u06e3\u06e4\u00039\u001c\u0000\u06e4\u06e5\u00031\u0018\u0000\u06e5\u06e6"+
+ "\u0003S)\u0000\u06e6\u01c2\u0001\u0000\u0000\u0000\u06e7\u06e9\u00020"+
+ "9\u0000\u06e8\u06e7\u0001\u0000\u0000\u0000\u06e9\u06ea\u0001\u0000\u0000"+
+ "\u0000\u06ea\u06e8\u0001\u0000\u0000\u0000\u06ea\u06eb\u0001\u0000\u0000"+
+ "\u0000\u06eb\u01c4\u0001\u0000\u0000\u0000\u06ec\u06ee\u0003\u01c3\u00e1"+
+ "\u0000\u06ed\u06ec\u0001\u0000\u0000\u0000\u06ee\u06ef\u0001\u0000\u0000"+
+ "\u0000\u06ef\u06ed\u0001\u0000\u0000\u0000\u06ef\u06f0\u0001\u0000\u0000"+
+ "\u0000\u06f0\u06f2\u0001\u0000\u0000\u0000\u06f1\u06f3\u0005.\u0000\u0000"+
+ "\u06f2\u06f1\u0001\u0000\u0000\u0000\u06f2\u06f3\u0001\u0000\u0000\u0000"+
+ "\u06f3\u06f7\u0001\u0000\u0000\u0000\u06f4\u06f6\u0003\u01c3\u00e1\u0000"+
+ "\u06f5\u06f4\u0001\u0000\u0000\u0000\u06f6\u06f9\u0001\u0000\u0000\u0000"+
+ "\u06f7\u06f5\u0001\u0000\u0000\u0000\u06f7\u06f8\u0001\u0000\u0000\u0000"+
+ "\u06f8\u0700\u0001\u0000\u0000\u0000\u06f9\u06f7\u0001\u0000\u0000\u0000"+
+ "\u06fa\u06fc\u00039\u001c\u0000\u06fb\u06fd\u0007\u001b\u0000\u0000\u06fc"+
+ "\u06fb\u0001\u0000\u0000\u0000\u06fc\u06fd\u0001\u0000\u0000\u0000\u06fd"+
+ "\u06fe\u0001\u0000\u0000\u0000\u06fe\u06ff\u0003\u01c3\u00e1\u0000\u06ff"+
+ "\u0701\u0001\u0000\u0000\u0000\u0700\u06fa\u0001\u0000\u0000\u0000\u0700"+
+ "\u0701\u0001\u0000\u0000\u0000\u0701\u01c6\u0001\u0000\u0000\u0000\u0702"+
+ "\u0703\u0007\u001c\u0000\u0000\u0703\u01c8\u0001\u0000\u0000\u0000\u0704"+
+ "\u0705\u0005\'\u0000\u0000\u0705\u0706\b\u001d\u0000\u0000\u0706\u0707"+
+ "\u0005\'\u0000\u0000\u0707\u01ca\u0001\u0000\u0000\u0000\u0708\u070e\u0005"+
+ "\'\u0000\u0000\u0709\u070a\u0005\'\u0000\u0000\u070a\u070d\u0005\'\u0000"+
+ "\u0000\u070b\u070d\b\u001e\u0000\u0000\u070c\u0709\u0001\u0000\u0000\u0000"+
+ "\u070c\u070b\u0001\u0000\u0000\u0000\u070d\u0710\u0001\u0000\u0000\u0000"+
+ "\u070e\u070c\u0001\u0000\u0000\u0000\u070e\u070f\u0001\u0000\u0000\u0000"+
+ "\u070f\u0711\u0001\u0000\u0000\u0000\u0710\u070e\u0001\u0000\u0000\u0000"+
+ "\u0711\u0712\u0005\'\u0000\u0000\u0712\u01cc\u0001\u0000\u0000\u0000\u0713"+
+ "\u0719\u0005\"\u0000\u0000\u0714\u0715\u0005\\\u0000\u0000\u0715\u0718"+
+ "\u0007\u001f\u0000\u0000\u0716\u0718\b \u0000\u0000\u0717\u0714\u0001"+
+ "\u0000\u0000\u0000\u0717\u0716\u0001\u0000\u0000\u0000\u0718\u071b\u0001"+
+ "\u0000\u0000\u0000\u0719\u0717\u0001\u0000\u0000\u0000\u0719\u071a\u0001"+
+ "\u0000\u0000\u0000\u071a\u071c\u0001\u0000\u0000\u0000\u071b\u0719\u0001"+
+ "\u0000\u0000\u0000\u071c\u071d\u0005\"\u0000\u0000\u071d\u01ce\u0001\u0000"+
+ "\u0000\u0000\u071e\u0723\u0003\u01c3\u00e1\u0000\u071f\u0724\u0003G#\u0000"+
+ "\u0720\u0721\u00033\u0019\u0000\u0721\u0722\u0003A \u0000\u0722\u0724"+
+ "\u0001\u0000\u0000\u0000\u0723\u071f\u0001\u0000\u0000\u0000\u0723\u0720"+
+ "\u0001\u0000\u0000\u0000\u0723\u0724\u0001\u0000\u0000\u0000\u0724\u01d0"+
+ "\u0001\u0000\u0000\u0000\u0725\u072b\u0003\u01c5\u00e2\u0000\u0726\u072c"+
+ "\u00037\u001b\u0000\u0727\u072c\u0003;\u001d\u0000\u0728\u0729\u00033"+
+ "\u0019\u0000\u0729\u072a\u00037\u001b\u0000\u072a\u072c\u0001\u0000\u0000"+
+ "\u0000\u072b\u0726\u0001\u0000\u0000\u0000\u072b\u0727\u0001\u0000\u0000"+
+ "\u0000\u072b\u0728\u0001\u0000\u0000\u0000\u072b\u072c\u0001\u0000\u0000"+
+ "\u0000\u072c\u01d2\u0001\u0000\u0000\u0000\u072d\u072e\u00050\u0000\u0000"+
+ "\u072e\u0730\u0003_/\u0000\u072f\u0731\u0003\u01c7\u00e3\u0000\u0730\u072f"+
+ "\u0001\u0000\u0000\u0000\u0731\u0732\u0001\u0000\u0000\u0000\u0732\u0730"+
+ "\u0001\u0000\u0000\u0000\u0732\u0733\u0001\u0000\u0000\u0000\u0733\u01d4"+
+ "\u0001\u0000\u0000\u0000\u0734\u0735\u0007\u0018\u0000\u0000\u0735\u0737"+
+ "\u0005\'\u0000\u0000\u0736\u0738\u0003\u01c7\u00e3\u0000\u0737\u0736\u0001"+
+ "\u0000\u0000\u0000\u0738\u0739\u0001\u0000\u0000\u0000\u0739\u0737\u0001"+
+ "\u0000\u0000\u0000\u0739\u073a\u0001\u0000\u0000\u0000\u073a\u073b\u0001"+
+ "\u0000\u0000\u0000\u073b\u073c\u0005\'\u0000\u0000\u073c\u0747\u0001\u0000"+
+ "\u0000\u0000\u073d\u073e\u0007\u0018\u0000\u0000\u073e\u0740\u0005\"\u0000"+
+ "\u0000\u073f\u0741\u0003\u01c7\u00e3\u0000\u0740\u073f\u0001\u0000\u0000"+
+ "\u0000\u0741\u0742\u0001\u0000\u0000\u0000\u0742\u0740\u0001\u0000\u0000"+
+ "\u0000\u0742\u0743\u0001\u0000\u0000\u0000\u0743\u0744\u0001\u0000\u0000"+
+ "\u0000\u0744\u0745\u0005\"\u0000\u0000\u0745\u0747\u0001\u0000\u0000\u0000"+
+ "\u0746\u0734\u0001\u0000\u0000\u0000\u0746\u073d\u0001\u0000\u0000\u0000"+
+ "\u0747\u01d6\u0001\u0000\u0000\u0000\u0748\u074c\u0007!\u0000\u0000\u0749"+
+ "\u074b\u0007\"\u0000\u0000\u074a\u0749\u0001\u0000\u0000\u0000\u074b\u074e"+
+ "\u0001\u0000\u0000\u0000\u074c\u074a\u0001\u0000\u0000\u0000\u074c\u074d"+
+ "\u0001\u0000\u0000\u0000\u074d\u01d8\u0001\u0000\u0000\u0000\u074e\u074c"+
+ "\u0001\u0000\u0000\u0000\u0012\u0000\u06ea\u06ef\u06f2\u06f7\u06fc\u0700"+
+ "\u070c\u070e\u0717\u0719\u0723\u072b\u0732\u0739\u0742\u0746\u074c\u0001"+
+ "\u0006\u0000\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/headless-services/commons/jpql/src/main/java/org/springframework/ide/vscode/parser/hql/HqlListener.java b/headless-services/commons/jpql/src/main/java/org/springframework/ide/vscode/parser/hql/HqlListener.java
new file mode 100644
index 000000000..c3099a5d1
--- /dev/null
+++ b/headless-services/commons/jpql/src/main/java/org/springframework/ide/vscode/parser/hql/HqlListener.java
@@ -0,0 +1,1765 @@
+// Generated from Hql.g4 by ANTLR 4.13.1
+package org.springframework.ide.vscode.parser.hql;
+
+/**
+ * HQL per https://docs.jboss.org/hibernate/orm/6.1/userguide/html_single/Hibernate_User_Guide.html#query-language
+ *
+ * This is a mixture of Hibernate's BNF and missing bits of grammar. There are gaps and inconsistencies in the
+ * BNF itself, explained by other fragments of their spec. Additionally, alternate labels are used to provide easier
+ * management of complex rules in the generated Visitor. Finally, there are labels applied to rule elements (op=('+'|'-')
+ * to simplify the processing.
+ *
+ * @author Greg Turnquist
+ * @since 3.1
+ */
+
+import org.antlr.v4.runtime.tree.ParseTreeListener;
+
+/**
+ * This interface defines a complete listener for a parse tree produced by
+ * {@link HqlParser}.
+ */
+public interface HqlListener extends ParseTreeListener {
+ /**
+ * Enter a parse tree produced by {@link HqlParser#start}.
+ * @param ctx the parse tree
+ */
+ void enterStart(HqlParser.StartContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#start}.
+ * @param ctx the parse tree
+ */
+ void exitStart(HqlParser.StartContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#ql_statement}.
+ * @param ctx the parse tree
+ */
+ void enterQl_statement(HqlParser.Ql_statementContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#ql_statement}.
+ * @param ctx the parse tree
+ */
+ void exitQl_statement(HqlParser.Ql_statementContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#selectStatement}.
+ * @param ctx the parse tree
+ */
+ void enterSelectStatement(HqlParser.SelectStatementContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#selectStatement}.
+ * @param ctx the parse tree
+ */
+ void exitSelectStatement(HqlParser.SelectStatementContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#queryExpression}.
+ * @param ctx the parse tree
+ */
+ void enterQueryExpression(HqlParser.QueryExpressionContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#queryExpression}.
+ * @param ctx the parse tree
+ */
+ void exitQueryExpression(HqlParser.QueryExpressionContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#withClause}.
+ * @param ctx the parse tree
+ */
+ void enterWithClause(HqlParser.WithClauseContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#withClause}.
+ * @param ctx the parse tree
+ */
+ void exitWithClause(HqlParser.WithClauseContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#cte}.
+ * @param ctx the parse tree
+ */
+ void enterCte(HqlParser.CteContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#cte}.
+ * @param ctx the parse tree
+ */
+ void exitCte(HqlParser.CteContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#searchClause}.
+ * @param ctx the parse tree
+ */
+ void enterSearchClause(HqlParser.SearchClauseContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#searchClause}.
+ * @param ctx the parse tree
+ */
+ void exitSearchClause(HqlParser.SearchClauseContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#searchSpecifications}.
+ * @param ctx the parse tree
+ */
+ void enterSearchSpecifications(HqlParser.SearchSpecificationsContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#searchSpecifications}.
+ * @param ctx the parse tree
+ */
+ void exitSearchSpecifications(HqlParser.SearchSpecificationsContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#searchSpecification}.
+ * @param ctx the parse tree
+ */
+ void enterSearchSpecification(HqlParser.SearchSpecificationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#searchSpecification}.
+ * @param ctx the parse tree
+ */
+ void exitSearchSpecification(HqlParser.SearchSpecificationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#cycleClause}.
+ * @param ctx the parse tree
+ */
+ void enterCycleClause(HqlParser.CycleClauseContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#cycleClause}.
+ * @param ctx the parse tree
+ */
+ void exitCycleClause(HqlParser.CycleClauseContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#cteAttributes}.
+ * @param ctx the parse tree
+ */
+ void enterCteAttributes(HqlParser.CteAttributesContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#cteAttributes}.
+ * @param ctx the parse tree
+ */
+ void exitCteAttributes(HqlParser.CteAttributesContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#orderedQuery}.
+ * @param ctx the parse tree
+ */
+ void enterOrderedQuery(HqlParser.OrderedQueryContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#orderedQuery}.
+ * @param ctx the parse tree
+ */
+ void exitOrderedQuery(HqlParser.OrderedQueryContext ctx);
+ /**
+ * Enter a parse tree produced by the {@code SelectQuery}
+ * labeled alternative in {@link HqlParser#query}.
+ * @param ctx the parse tree
+ */
+ void enterSelectQuery(HqlParser.SelectQueryContext ctx);
+ /**
+ * Exit a parse tree produced by the {@code SelectQuery}
+ * labeled alternative in {@link HqlParser#query}.
+ * @param ctx the parse tree
+ */
+ void exitSelectQuery(HqlParser.SelectQueryContext ctx);
+ /**
+ * Enter a parse tree produced by the {@code FromQuery}
+ * labeled alternative in {@link HqlParser#query}.
+ * @param ctx the parse tree
+ */
+ void enterFromQuery(HqlParser.FromQueryContext ctx);
+ /**
+ * Exit a parse tree produced by the {@code FromQuery}
+ * labeled alternative in {@link HqlParser#query}.
+ * @param ctx the parse tree
+ */
+ void exitFromQuery(HqlParser.FromQueryContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#queryOrder}.
+ * @param ctx the parse tree
+ */
+ void enterQueryOrder(HqlParser.QueryOrderContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#queryOrder}.
+ * @param ctx the parse tree
+ */
+ void exitQueryOrder(HqlParser.QueryOrderContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#fromClause}.
+ * @param ctx the parse tree
+ */
+ void enterFromClause(HqlParser.FromClauseContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#fromClause}.
+ * @param ctx the parse tree
+ */
+ void exitFromClause(HqlParser.FromClauseContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#entityWithJoins}.
+ * @param ctx the parse tree
+ */
+ void enterEntityWithJoins(HqlParser.EntityWithJoinsContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#entityWithJoins}.
+ * @param ctx the parse tree
+ */
+ void exitEntityWithJoins(HqlParser.EntityWithJoinsContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#joinSpecifier}.
+ * @param ctx the parse tree
+ */
+ void enterJoinSpecifier(HqlParser.JoinSpecifierContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#joinSpecifier}.
+ * @param ctx the parse tree
+ */
+ void exitJoinSpecifier(HqlParser.JoinSpecifierContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#fromRoot}.
+ * @param ctx the parse tree
+ */
+ void enterFromRoot(HqlParser.FromRootContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#fromRoot}.
+ * @param ctx the parse tree
+ */
+ void exitFromRoot(HqlParser.FromRootContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#join}.
+ * @param ctx the parse tree
+ */
+ void enterJoin(HqlParser.JoinContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#join}.
+ * @param ctx the parse tree
+ */
+ void exitJoin(HqlParser.JoinContext ctx);
+ /**
+ * Enter a parse tree produced by the {@code JoinPath}
+ * labeled alternative in {@link HqlParser#joinTarget}.
+ * @param ctx the parse tree
+ */
+ void enterJoinPath(HqlParser.JoinPathContext ctx);
+ /**
+ * Exit a parse tree produced by the {@code JoinPath}
+ * labeled alternative in {@link HqlParser#joinTarget}.
+ * @param ctx the parse tree
+ */
+ void exitJoinPath(HqlParser.JoinPathContext ctx);
+ /**
+ * Enter a parse tree produced by the {@code JoinSubquery}
+ * labeled alternative in {@link HqlParser#joinTarget}.
+ * @param ctx the parse tree
+ */
+ void enterJoinSubquery(HqlParser.JoinSubqueryContext ctx);
+ /**
+ * Exit a parse tree produced by the {@code JoinSubquery}
+ * labeled alternative in {@link HqlParser#joinTarget}.
+ * @param ctx the parse tree
+ */
+ void exitJoinSubquery(HqlParser.JoinSubqueryContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#updateStatement}.
+ * @param ctx the parse tree
+ */
+ void enterUpdateStatement(HqlParser.UpdateStatementContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#updateStatement}.
+ * @param ctx the parse tree
+ */
+ void exitUpdateStatement(HqlParser.UpdateStatementContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#targetEntity}.
+ * @param ctx the parse tree
+ */
+ void enterTargetEntity(HqlParser.TargetEntityContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#targetEntity}.
+ * @param ctx the parse tree
+ */
+ void exitTargetEntity(HqlParser.TargetEntityContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#setClause}.
+ * @param ctx the parse tree
+ */
+ void enterSetClause(HqlParser.SetClauseContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#setClause}.
+ * @param ctx the parse tree
+ */
+ void exitSetClause(HqlParser.SetClauseContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#assignment}.
+ * @param ctx the parse tree
+ */
+ void enterAssignment(HqlParser.AssignmentContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#assignment}.
+ * @param ctx the parse tree
+ */
+ void exitAssignment(HqlParser.AssignmentContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#deleteStatement}.
+ * @param ctx the parse tree
+ */
+ void enterDeleteStatement(HqlParser.DeleteStatementContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#deleteStatement}.
+ * @param ctx the parse tree
+ */
+ void exitDeleteStatement(HqlParser.DeleteStatementContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#insertStatement}.
+ * @param ctx the parse tree
+ */
+ void enterInsertStatement(HqlParser.InsertStatementContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#insertStatement}.
+ * @param ctx the parse tree
+ */
+ void exitInsertStatement(HqlParser.InsertStatementContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#targetFields}.
+ * @param ctx the parse tree
+ */
+ void enterTargetFields(HqlParser.TargetFieldsContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#targetFields}.
+ * @param ctx the parse tree
+ */
+ void exitTargetFields(HqlParser.TargetFieldsContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#valuesList}.
+ * @param ctx the parse tree
+ */
+ void enterValuesList(HqlParser.ValuesListContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#valuesList}.
+ * @param ctx the parse tree
+ */
+ void exitValuesList(HqlParser.ValuesListContext ctx);
+ /**
+ * Enter a parse tree produced by the {@code values}
+ * labeled alternative in {@link HqlParser#queryqueryjoinTargetjoinTargetexpressionexpressionexpressionexpressionexpressionexpressionexpressionexpressionexpressionexpressionexpressionexpressionexpressionexpressionprimaryExpressionprimaryExpressionprimaryExpressionprimaryExpressionprimaryExpressionfunctionfunctionfunctionfunctionfunctionfunctionfunctionfunctionframeStartframeStartframeStartframeStartframeExclusionframeExclusionframeExclusionframeExclusionframeEndframeEndframeEndframeEndpredicatepredicatepredicatepredicatepredicatepredicatepredicatepredicatepredicatepredicatepredicatepredicate}.
+ * @param ctx the parse tree
+ */
+ void enterValues(HqlParser.ValuesContext ctx);
+ /**
+ * Exit a parse tree produced by the {@code values}
+ * labeled alternative in {@link HqlParser#queryqueryjoinTargetjoinTargetexpressionexpressionexpressionexpressionexpressionexpressionexpressionexpressionexpressionexpressionexpressionexpressionexpressionexpressionprimaryExpressionprimaryExpressionprimaryExpressionprimaryExpressionprimaryExpressionfunctionfunctionfunctionfunctionfunctionfunctionfunctionfunctionframeStartframeStartframeStartframeStartframeExclusionframeExclusionframeExclusionframeExclusionframeEndframeEndframeEndframeEndpredicatepredicatepredicatepredicatepredicatepredicatepredicatepredicatepredicatepredicatepredicatepredicate}.
+ * @param ctx the parse tree
+ */
+ void exitValues(HqlParser.ValuesContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#instantiation}.
+ * @param ctx the parse tree
+ */
+ void enterInstantiation(HqlParser.InstantiationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#instantiation}.
+ * @param ctx the parse tree
+ */
+ void exitInstantiation(HqlParser.InstantiationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#alias}.
+ * @param ctx the parse tree
+ */
+ void enterAlias(HqlParser.AliasContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#alias}.
+ * @param ctx the parse tree
+ */
+ void exitAlias(HqlParser.AliasContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#groupedItem}.
+ * @param ctx the parse tree
+ */
+ void enterGroupedItem(HqlParser.GroupedItemContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#groupedItem}.
+ * @param ctx the parse tree
+ */
+ void exitGroupedItem(HqlParser.GroupedItemContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#sortedItem}.
+ * @param ctx the parse tree
+ */
+ void enterSortedItem(HqlParser.SortedItemContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#sortedItem}.
+ * @param ctx the parse tree
+ */
+ void exitSortedItem(HqlParser.SortedItemContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#sortExpression}.
+ * @param ctx the parse tree
+ */
+ void enterSortExpression(HqlParser.SortExpressionContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#sortExpression}.
+ * @param ctx the parse tree
+ */
+ void exitSortExpression(HqlParser.SortExpressionContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#sortDirection}.
+ * @param ctx the parse tree
+ */
+ void enterSortDirection(HqlParser.SortDirectionContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#sortDirection}.
+ * @param ctx the parse tree
+ */
+ void exitSortDirection(HqlParser.SortDirectionContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#nullsPrecedence}.
+ * @param ctx the parse tree
+ */
+ void enterNullsPrecedence(HqlParser.NullsPrecedenceContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#nullsPrecedence}.
+ * @param ctx the parse tree
+ */
+ void exitNullsPrecedence(HqlParser.NullsPrecedenceContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#limitClause}.
+ * @param ctx the parse tree
+ */
+ void enterLimitClause(HqlParser.LimitClauseContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#limitClause}.
+ * @param ctx the parse tree
+ */
+ void exitLimitClause(HqlParser.LimitClauseContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#offsetClause}.
+ * @param ctx the parse tree
+ */
+ void enterOffsetClause(HqlParser.OffsetClauseContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#offsetClause}.
+ * @param ctx the parse tree
+ */
+ void exitOffsetClause(HqlParser.OffsetClauseContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#fetchClause}.
+ * @param ctx the parse tree
+ */
+ void enterFetchClause(HqlParser.FetchClauseContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#fetchClause}.
+ * @param ctx the parse tree
+ */
+ void exitFetchClause(HqlParser.FetchClauseContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#subquery}.
+ * @param ctx the parse tree
+ */
+ void enterSubquery(HqlParser.SubqueryContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#subquery}.
+ * @param ctx the parse tree
+ */
+ void exitSubquery(HqlParser.SubqueryContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#selectClause}.
+ * @param ctx the parse tree
+ */
+ void enterSelectClause(HqlParser.SelectClauseContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#selectClause}.
+ * @param ctx the parse tree
+ */
+ void exitSelectClause(HqlParser.SelectClauseContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#selectionList}.
+ * @param ctx the parse tree
+ */
+ void enterSelectionList(HqlParser.SelectionListContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#selectionList}.
+ * @param ctx the parse tree
+ */
+ void exitSelectionList(HqlParser.SelectionListContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#selection}.
+ * @param ctx the parse tree
+ */
+ void enterSelection(HqlParser.SelectionContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#selection}.
+ * @param ctx the parse tree
+ */
+ void exitSelection(HqlParser.SelectionContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#selectExpression}.
+ * @param ctx the parse tree
+ */
+ void enterSelectExpression(HqlParser.SelectExpressionContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#selectExpression}.
+ * @param ctx the parse tree
+ */
+ void exitSelectExpression(HqlParser.SelectExpressionContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#mapEntrySelection}.
+ * @param ctx the parse tree
+ */
+ void enterMapEntrySelection(HqlParser.MapEntrySelectionContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#mapEntrySelection}.
+ * @param ctx the parse tree
+ */
+ void exitMapEntrySelection(HqlParser.MapEntrySelectionContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#jpaSelectObjectSyntax}.
+ * @param ctx the parse tree
+ */
+ void enterJpaSelectObjectSyntax(HqlParser.JpaSelectObjectSyntaxContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#jpaSelectObjectSyntax}.
+ * @param ctx the parse tree
+ */
+ void exitJpaSelectObjectSyntax(HqlParser.JpaSelectObjectSyntaxContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#whereClause}.
+ * @param ctx the parse tree
+ */
+ void enterWhereClause(HqlParser.WhereClauseContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#whereClause}.
+ * @param ctx the parse tree
+ */
+ void exitWhereClause(HqlParser.WhereClauseContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#joinType}.
+ * @param ctx the parse tree
+ */
+ void enterJoinType(HqlParser.JoinTypeContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#joinType}.
+ * @param ctx the parse tree
+ */
+ void exitJoinType(HqlParser.JoinTypeContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#crossJoin}.
+ * @param ctx the parse tree
+ */
+ void enterCrossJoin(HqlParser.CrossJoinContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#crossJoin}.
+ * @param ctx the parse tree
+ */
+ void exitCrossJoin(HqlParser.CrossJoinContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#joinRestriction}.
+ * @param ctx the parse tree
+ */
+ void enterJoinRestriction(HqlParser.JoinRestrictionContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#joinRestriction}.
+ * @param ctx the parse tree
+ */
+ void exitJoinRestriction(HqlParser.JoinRestrictionContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#jpaCollectionJoin}.
+ * @param ctx the parse tree
+ */
+ void enterJpaCollectionJoin(HqlParser.JpaCollectionJoinContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#jpaCollectionJoin}.
+ * @param ctx the parse tree
+ */
+ void exitJpaCollectionJoin(HqlParser.JpaCollectionJoinContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#groupByClause}.
+ * @param ctx the parse tree
+ */
+ void enterGroupByClause(HqlParser.GroupByClauseContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#groupByClause}.
+ * @param ctx the parse tree
+ */
+ void exitGroupByClause(HqlParser.GroupByClauseContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#orderByClause}.
+ * @param ctx the parse tree
+ */
+ void enterOrderByClause(HqlParser.OrderByClauseContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#orderByClause}.
+ * @param ctx the parse tree
+ */
+ void exitOrderByClause(HqlParser.OrderByClauseContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#havingClause}.
+ * @param ctx the parse tree
+ */
+ void enterHavingClause(HqlParser.HavingClauseContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#havingClause}.
+ * @param ctx the parse tree
+ */
+ void exitHavingClause(HqlParser.HavingClauseContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#setOperator}.
+ * @param ctx the parse tree
+ */
+ void enterSetOperator(HqlParser.SetOperatorContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#setOperator}.
+ * @param ctx the parse tree
+ */
+ void exitSetOperator(HqlParser.SetOperatorContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#literal}.
+ * @param ctx the parse tree
+ */
+ void enterLiteral(HqlParser.LiteralContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#literal}.
+ * @param ctx the parse tree
+ */
+ void exitLiteral(HqlParser.LiteralContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#booleanLiteral}.
+ * @param ctx the parse tree
+ */
+ void enterBooleanLiteral(HqlParser.BooleanLiteralContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#booleanLiteral}.
+ * @param ctx the parse tree
+ */
+ void exitBooleanLiteral(HqlParser.BooleanLiteralContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#stringLiteral}.
+ * @param ctx the parse tree
+ */
+ void enterStringLiteral(HqlParser.StringLiteralContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#stringLiteral}.
+ * @param ctx the parse tree
+ */
+ void exitStringLiteral(HqlParser.StringLiteralContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#numericLiteral}.
+ * @param ctx the parse tree
+ */
+ void enterNumericLiteral(HqlParser.NumericLiteralContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#numericLiteral}.
+ * @param ctx the parse tree
+ */
+ void exitNumericLiteral(HqlParser.NumericLiteralContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#dateTimeLiteral}.
+ * @param ctx the parse tree
+ */
+ void enterDateTimeLiteral(HqlParser.DateTimeLiteralContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#dateTimeLiteral}.
+ * @param ctx the parse tree
+ */
+ void exitDateTimeLiteral(HqlParser.DateTimeLiteralContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#datetimeField}.
+ * @param ctx the parse tree
+ */
+ void enterDatetimeField(HqlParser.DatetimeFieldContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#datetimeField}.
+ * @param ctx the parse tree
+ */
+ void exitDatetimeField(HqlParser.DatetimeFieldContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#binaryLiteral}.
+ * @param ctx the parse tree
+ */
+ void enterBinaryLiteral(HqlParser.BinaryLiteralContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#binaryLiteral}.
+ * @param ctx the parse tree
+ */
+ void exitBinaryLiteral(HqlParser.BinaryLiteralContext ctx);
+ /**
+ * Enter a parse tree produced by the {@code AdditionExpression}
+ * labeled alternative in {@link HqlParser#expression}.
+ * @param ctx the parse tree
+ */
+ void enterAdditionExpression(HqlParser.AdditionExpressionContext ctx);
+ /**
+ * Exit a parse tree produced by the {@code AdditionExpression}
+ * labeled alternative in {@link HqlParser#expression}.
+ * @param ctx the parse tree
+ */
+ void exitAdditionExpression(HqlParser.AdditionExpressionContext ctx);
+ /**
+ * Enter a parse tree produced by the {@code FromDurationExpression}
+ * labeled alternative in {@link HqlParser#expression}.
+ * @param ctx the parse tree
+ */
+ void enterFromDurationExpression(HqlParser.FromDurationExpressionContext ctx);
+ /**
+ * Exit a parse tree produced by the {@code FromDurationExpression}
+ * labeled alternative in {@link HqlParser#expression}.
+ * @param ctx the parse tree
+ */
+ void exitFromDurationExpression(HqlParser.FromDurationExpressionContext ctx);
+ /**
+ * Enter a parse tree produced by the {@code PlainPrimaryExpression}
+ * labeled alternative in {@link HqlParser#expression}.
+ * @param ctx the parse tree
+ */
+ void enterPlainPrimaryExpression(HqlParser.PlainPrimaryExpressionContext ctx);
+ /**
+ * Exit a parse tree produced by the {@code PlainPrimaryExpression}
+ * labeled alternative in {@link HqlParser#expression}.
+ * @param ctx the parse tree
+ */
+ void exitPlainPrimaryExpression(HqlParser.PlainPrimaryExpressionContext ctx);
+ /**
+ * Enter a parse tree produced by the {@code TupleExpression}
+ * labeled alternative in {@link HqlParser#expression}.
+ * @param ctx the parse tree
+ */
+ void enterTupleExpression(HqlParser.TupleExpressionContext ctx);
+ /**
+ * Exit a parse tree produced by the {@code TupleExpression}
+ * labeled alternative in {@link HqlParser#expression}.
+ * @param ctx the parse tree
+ */
+ void exitTupleExpression(HqlParser.TupleExpressionContext ctx);
+ /**
+ * Enter a parse tree produced by the {@code GroupedExpression}
+ * labeled alternative in {@link HqlParser#expression}.
+ * @param ctx the parse tree
+ */
+ void enterGroupedExpression(HqlParser.GroupedExpressionContext ctx);
+ /**
+ * Exit a parse tree produced by the {@code GroupedExpression}
+ * labeled alternative in {@link HqlParser#expression}.
+ * @param ctx the parse tree
+ */
+ void exitGroupedExpression(HqlParser.GroupedExpressionContext ctx);
+ /**
+ * Enter a parse tree produced by the {@code SignedNumericLiteral}
+ * labeled alternative in {@link HqlParser#expression}.
+ * @param ctx the parse tree
+ */
+ void enterSignedNumericLiteral(HqlParser.SignedNumericLiteralContext ctx);
+ /**
+ * Exit a parse tree produced by the {@code SignedNumericLiteral}
+ * labeled alternative in {@link HqlParser#expression}.
+ * @param ctx the parse tree
+ */
+ void exitSignedNumericLiteral(HqlParser.SignedNumericLiteralContext ctx);
+ /**
+ * Enter a parse tree produced by the {@code ToDurationExpression}
+ * labeled alternative in {@link HqlParser#expression}.
+ * @param ctx the parse tree
+ */
+ void enterToDurationExpression(HqlParser.ToDurationExpressionContext ctx);
+ /**
+ * Exit a parse tree produced by the {@code ToDurationExpression}
+ * labeled alternative in {@link HqlParser#expression}.
+ * @param ctx the parse tree
+ */
+ void exitToDurationExpression(HqlParser.ToDurationExpressionContext ctx);
+ /**
+ * Enter a parse tree produced by the {@code SubqueryExpression}
+ * labeled alternative in {@link HqlParser#expression}.
+ * @param ctx the parse tree
+ */
+ void enterSubqueryExpression(HqlParser.SubqueryExpressionContext ctx);
+ /**
+ * Exit a parse tree produced by the {@code SubqueryExpression}
+ * labeled alternative in {@link HqlParser#expression}.
+ * @param ctx the parse tree
+ */
+ void exitSubqueryExpression(HqlParser.SubqueryExpressionContext ctx);
+ /**
+ * Enter a parse tree produced by the {@code DayOfMonthExpression}
+ * labeled alternative in {@link HqlParser#expression}.
+ * @param ctx the parse tree
+ */
+ void enterDayOfMonthExpression(HqlParser.DayOfMonthExpressionContext ctx);
+ /**
+ * Exit a parse tree produced by the {@code DayOfMonthExpression}
+ * labeled alternative in {@link HqlParser#expression}.
+ * @param ctx the parse tree
+ */
+ void exitDayOfMonthExpression(HqlParser.DayOfMonthExpressionContext ctx);
+ /**
+ * Enter a parse tree produced by the {@code DayOfWeekExpression}
+ * labeled alternative in {@link HqlParser#expression}.
+ * @param ctx the parse tree
+ */
+ void enterDayOfWeekExpression(HqlParser.DayOfWeekExpressionContext ctx);
+ /**
+ * Exit a parse tree produced by the {@code DayOfWeekExpression}
+ * labeled alternative in {@link HqlParser#expression}.
+ * @param ctx the parse tree
+ */
+ void exitDayOfWeekExpression(HqlParser.DayOfWeekExpressionContext ctx);
+ /**
+ * Enter a parse tree produced by the {@code WeekOfYearExpression}
+ * labeled alternative in {@link HqlParser#expression}.
+ * @param ctx the parse tree
+ */
+ void enterWeekOfYearExpression(HqlParser.WeekOfYearExpressionContext ctx);
+ /**
+ * Exit a parse tree produced by the {@code WeekOfYearExpression}
+ * labeled alternative in {@link HqlParser#expression}.
+ * @param ctx the parse tree
+ */
+ void exitWeekOfYearExpression(HqlParser.WeekOfYearExpressionContext ctx);
+ /**
+ * Enter a parse tree produced by the {@code HqlConcatenationExpression}
+ * labeled alternative in {@link HqlParser#expression}.
+ * @param ctx the parse tree
+ */
+ void enterHqlConcatenationExpression(HqlParser.HqlConcatenationExpressionContext ctx);
+ /**
+ * Exit a parse tree produced by the {@code HqlConcatenationExpression}
+ * labeled alternative in {@link HqlParser#expression}.
+ * @param ctx the parse tree
+ */
+ void exitHqlConcatenationExpression(HqlParser.HqlConcatenationExpressionContext ctx);
+ /**
+ * Enter a parse tree produced by the {@code MultiplicationExpression}
+ * labeled alternative in {@link HqlParser#expression}.
+ * @param ctx the parse tree
+ */
+ void enterMultiplicationExpression(HqlParser.MultiplicationExpressionContext ctx);
+ /**
+ * Exit a parse tree produced by the {@code MultiplicationExpression}
+ * labeled alternative in {@link HqlParser#expression}.
+ * @param ctx the parse tree
+ */
+ void exitMultiplicationExpression(HqlParser.MultiplicationExpressionContext ctx);
+ /**
+ * Enter a parse tree produced by the {@code SignedExpression}
+ * labeled alternative in {@link HqlParser#expression}.
+ * @param ctx the parse tree
+ */
+ void enterSignedExpression(HqlParser.SignedExpressionContext ctx);
+ /**
+ * Exit a parse tree produced by the {@code SignedExpression}
+ * labeled alternative in {@link HqlParser#expression}.
+ * @param ctx the parse tree
+ */
+ void exitSignedExpression(HqlParser.SignedExpressionContext ctx);
+ /**
+ * Enter a parse tree produced by the {@code CaseExpression}
+ * labeled alternative in {@link HqlParser#primaryExpression}.
+ * @param ctx the parse tree
+ */
+ void enterCaseExpression(HqlParser.CaseExpressionContext ctx);
+ /**
+ * Exit a parse tree produced by the {@code CaseExpression}
+ * labeled alternative in {@link HqlParser#primaryExpression}.
+ * @param ctx the parse tree
+ */
+ void exitCaseExpression(HqlParser.CaseExpressionContext ctx);
+ /**
+ * Enter a parse tree produced by the {@code LiteralExpression}
+ * labeled alternative in {@link HqlParser#primaryExpression}.
+ * @param ctx the parse tree
+ */
+ void enterLiteralExpression(HqlParser.LiteralExpressionContext ctx);
+ /**
+ * Exit a parse tree produced by the {@code LiteralExpression}
+ * labeled alternative in {@link HqlParser#primaryExpression}.
+ * @param ctx the parse tree
+ */
+ void exitLiteralExpression(HqlParser.LiteralExpressionContext ctx);
+ /**
+ * Enter a parse tree produced by the {@code ParameterExpression}
+ * labeled alternative in {@link HqlParser#primaryExpression}.
+ * @param ctx the parse tree
+ */
+ void enterParameterExpression(HqlParser.ParameterExpressionContext ctx);
+ /**
+ * Exit a parse tree produced by the {@code ParameterExpression}
+ * labeled alternative in {@link HqlParser#primaryExpression}.
+ * @param ctx the parse tree
+ */
+ void exitParameterExpression(HqlParser.ParameterExpressionContext ctx);
+ /**
+ * Enter a parse tree produced by the {@code FunctionExpression}
+ * labeled alternative in {@link HqlParser#primaryExpression}.
+ * @param ctx the parse tree
+ */
+ void enterFunctionExpression(HqlParser.FunctionExpressionContext ctx);
+ /**
+ * Exit a parse tree produced by the {@code FunctionExpression}
+ * labeled alternative in {@link HqlParser#primaryExpression}.
+ * @param ctx the parse tree
+ */
+ void exitFunctionExpression(HqlParser.FunctionExpressionContext ctx);
+ /**
+ * Enter a parse tree produced by the {@code GeneralPathExpression}
+ * labeled alternative in {@link HqlParser#primaryExpression}.
+ * @param ctx the parse tree
+ */
+ void enterGeneralPathExpression(HqlParser.GeneralPathExpressionContext ctx);
+ /**
+ * Exit a parse tree produced by the {@code GeneralPathExpression}
+ * labeled alternative in {@link HqlParser#primaryExpression}.
+ * @param ctx the parse tree
+ */
+ void exitGeneralPathExpression(HqlParser.GeneralPathExpressionContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#identificationVariable}.
+ * @param ctx the parse tree
+ */
+ void enterIdentificationVariable(HqlParser.IdentificationVariableContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#identificationVariable}.
+ * @param ctx the parse tree
+ */
+ void exitIdentificationVariable(HqlParser.IdentificationVariableContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#path}.
+ * @param ctx the parse tree
+ */
+ void enterPath(HqlParser.PathContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#path}.
+ * @param ctx the parse tree
+ */
+ void exitPath(HqlParser.PathContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#generalPathFragment}.
+ * @param ctx the parse tree
+ */
+ void enterGeneralPathFragment(HqlParser.GeneralPathFragmentContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#generalPathFragment}.
+ * @param ctx the parse tree
+ */
+ void exitGeneralPathFragment(HqlParser.GeneralPathFragmentContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#indexedPathAccessFragment}.
+ * @param ctx the parse tree
+ */
+ void enterIndexedPathAccessFragment(HqlParser.IndexedPathAccessFragmentContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#indexedPathAccessFragment}.
+ * @param ctx the parse tree
+ */
+ void exitIndexedPathAccessFragment(HqlParser.IndexedPathAccessFragmentContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#simplePath}.
+ * @param ctx the parse tree
+ */
+ void enterSimplePath(HqlParser.SimplePathContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#simplePath}.
+ * @param ctx the parse tree
+ */
+ void exitSimplePath(HqlParser.SimplePathContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#simplePathElement}.
+ * @param ctx the parse tree
+ */
+ void enterSimplePathElement(HqlParser.SimplePathElementContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#simplePathElement}.
+ * @param ctx the parse tree
+ */
+ void exitSimplePathElement(HqlParser.SimplePathElementContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#caseList}.
+ * @param ctx the parse tree
+ */
+ void enterCaseList(HqlParser.CaseListContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#caseList}.
+ * @param ctx the parse tree
+ */
+ void exitCaseList(HqlParser.CaseListContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#simpleCaseExpression}.
+ * @param ctx the parse tree
+ */
+ void enterSimpleCaseExpression(HqlParser.SimpleCaseExpressionContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#simpleCaseExpression}.
+ * @param ctx the parse tree
+ */
+ void exitSimpleCaseExpression(HqlParser.SimpleCaseExpressionContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#searchedCaseExpression}.
+ * @param ctx the parse tree
+ */
+ void enterSearchedCaseExpression(HqlParser.SearchedCaseExpressionContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#searchedCaseExpression}.
+ * @param ctx the parse tree
+ */
+ void exitSearchedCaseExpression(HqlParser.SearchedCaseExpressionContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#caseWhenExpressionClause}.
+ * @param ctx the parse tree
+ */
+ void enterCaseWhenExpressionClause(HqlParser.CaseWhenExpressionClauseContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#caseWhenExpressionClause}.
+ * @param ctx the parse tree
+ */
+ void exitCaseWhenExpressionClause(HqlParser.CaseWhenExpressionClauseContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#caseWhenPredicateClause}.
+ * @param ctx the parse tree
+ */
+ void enterCaseWhenPredicateClause(HqlParser.CaseWhenPredicateClauseContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#caseWhenPredicateClause}.
+ * @param ctx the parse tree
+ */
+ void exitCaseWhenPredicateClause(HqlParser.CaseWhenPredicateClauseContext ctx);
+ /**
+ * Enter a parse tree produced by the {@code GenericFunction}
+ * labeled alternative in {@link HqlParser#function}.
+ * @param ctx the parse tree
+ */
+ void enterGenericFunction(HqlParser.GenericFunctionContext ctx);
+ /**
+ * Exit a parse tree produced by the {@code GenericFunction}
+ * labeled alternative in {@link HqlParser#function}.
+ * @param ctx the parse tree
+ */
+ void exitGenericFunction(HqlParser.GenericFunctionContext ctx);
+ /**
+ * Enter a parse tree produced by the {@code FunctionWithSubquery}
+ * labeled alternative in {@link HqlParser#function}.
+ * @param ctx the parse tree
+ */
+ void enterFunctionWithSubquery(HqlParser.FunctionWithSubqueryContext ctx);
+ /**
+ * Exit a parse tree produced by the {@code FunctionWithSubquery}
+ * labeled alternative in {@link HqlParser#function}.
+ * @param ctx the parse tree
+ */
+ void exitFunctionWithSubquery(HqlParser.FunctionWithSubqueryContext ctx);
+ /**
+ * Enter a parse tree produced by the {@code CastFunctionInvocation}
+ * labeled alternative in {@link HqlParser#function}.
+ * @param ctx the parse tree
+ */
+ void enterCastFunctionInvocation(HqlParser.CastFunctionInvocationContext ctx);
+ /**
+ * Exit a parse tree produced by the {@code CastFunctionInvocation}
+ * labeled alternative in {@link HqlParser#function}.
+ * @param ctx the parse tree
+ */
+ void exitCastFunctionInvocation(HqlParser.CastFunctionInvocationContext ctx);
+ /**
+ * Enter a parse tree produced by the {@code ExtractFunctionInvocation}
+ * labeled alternative in {@link HqlParser#function}.
+ * @param ctx the parse tree
+ */
+ void enterExtractFunctionInvocation(HqlParser.ExtractFunctionInvocationContext ctx);
+ /**
+ * Exit a parse tree produced by the {@code ExtractFunctionInvocation}
+ * labeled alternative in {@link HqlParser#function}.
+ * @param ctx the parse tree
+ */
+ void exitExtractFunctionInvocation(HqlParser.ExtractFunctionInvocationContext ctx);
+ /**
+ * Enter a parse tree produced by the {@code TrimFunctionInvocation}
+ * labeled alternative in {@link HqlParser#function}.
+ * @param ctx the parse tree
+ */
+ void enterTrimFunctionInvocation(HqlParser.TrimFunctionInvocationContext ctx);
+ /**
+ * Exit a parse tree produced by the {@code TrimFunctionInvocation}
+ * labeled alternative in {@link HqlParser#function}.
+ * @param ctx the parse tree
+ */
+ void exitTrimFunctionInvocation(HqlParser.TrimFunctionInvocationContext ctx);
+ /**
+ * Enter a parse tree produced by the {@code EveryFunctionInvocation}
+ * labeled alternative in {@link HqlParser#function}.
+ * @param ctx the parse tree
+ */
+ void enterEveryFunctionInvocation(HqlParser.EveryFunctionInvocationContext ctx);
+ /**
+ * Exit a parse tree produced by the {@code EveryFunctionInvocation}
+ * labeled alternative in {@link HqlParser#function}.
+ * @param ctx the parse tree
+ */
+ void exitEveryFunctionInvocation(HqlParser.EveryFunctionInvocationContext ctx);
+ /**
+ * Enter a parse tree produced by the {@code AnyFunctionInvocation}
+ * labeled alternative in {@link HqlParser#function}.
+ * @param ctx the parse tree
+ */
+ void enterAnyFunctionInvocation(HqlParser.AnyFunctionInvocationContext ctx);
+ /**
+ * Exit a parse tree produced by the {@code AnyFunctionInvocation}
+ * labeled alternative in {@link HqlParser#function}.
+ * @param ctx the parse tree
+ */
+ void exitAnyFunctionInvocation(HqlParser.AnyFunctionInvocationContext ctx);
+ /**
+ * Enter a parse tree produced by the {@code TreatedPathInvocation}
+ * labeled alternative in {@link HqlParser#function}.
+ * @param ctx the parse tree
+ */
+ void enterTreatedPathInvocation(HqlParser.TreatedPathInvocationContext ctx);
+ /**
+ * Exit a parse tree produced by the {@code TreatedPathInvocation}
+ * labeled alternative in {@link HqlParser#function}.
+ * @param ctx the parse tree
+ */
+ void exitTreatedPathInvocation(HqlParser.TreatedPathInvocationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#functionArguments}.
+ * @param ctx the parse tree
+ */
+ void enterFunctionArguments(HqlParser.FunctionArgumentsContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#functionArguments}.
+ * @param ctx the parse tree
+ */
+ void exitFunctionArguments(HqlParser.FunctionArgumentsContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#filterClause}.
+ * @param ctx the parse tree
+ */
+ void enterFilterClause(HqlParser.FilterClauseContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#filterClause}.
+ * @param ctx the parse tree
+ */
+ void exitFilterClause(HqlParser.FilterClauseContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#withinGroup}.
+ * @param ctx the parse tree
+ */
+ void enterWithinGroup(HqlParser.WithinGroupContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#withinGroup}.
+ * @param ctx the parse tree
+ */
+ void exitWithinGroup(HqlParser.WithinGroupContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#overClause}.
+ * @param ctx the parse tree
+ */
+ void enterOverClause(HqlParser.OverClauseContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#overClause}.
+ * @param ctx the parse tree
+ */
+ void exitOverClause(HqlParser.OverClauseContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#partitionClause}.
+ * @param ctx the parse tree
+ */
+ void enterPartitionClause(HqlParser.PartitionClauseContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#partitionClause}.
+ * @param ctx the parse tree
+ */
+ void exitPartitionClause(HqlParser.PartitionClauseContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#frameClause}.
+ * @param ctx the parse tree
+ */
+ void enterFrameClause(HqlParser.FrameClauseContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#frameClause}.
+ * @param ctx the parse tree
+ */
+ void exitFrameClause(HqlParser.FrameClauseContext ctx);
+ /**
+ * Enter a parse tree produced by the {@code UnboundedPrecedingFrameStart}
+ * labeled alternative in {@link HqlParser#frameStart}.
+ * @param ctx the parse tree
+ */
+ void enterUnboundedPrecedingFrameStart(HqlParser.UnboundedPrecedingFrameStartContext ctx);
+ /**
+ * Exit a parse tree produced by the {@code UnboundedPrecedingFrameStart}
+ * labeled alternative in {@link HqlParser#frameStart}.
+ * @param ctx the parse tree
+ */
+ void exitUnboundedPrecedingFrameStart(HqlParser.UnboundedPrecedingFrameStartContext ctx);
+ /**
+ * Enter a parse tree produced by the {@code ExpressionPrecedingFrameStart}
+ * labeled alternative in {@link HqlParser#frameStart}.
+ * @param ctx the parse tree
+ */
+ void enterExpressionPrecedingFrameStart(HqlParser.ExpressionPrecedingFrameStartContext ctx);
+ /**
+ * Exit a parse tree produced by the {@code ExpressionPrecedingFrameStart}
+ * labeled alternative in {@link HqlParser#frameStart}.
+ * @param ctx the parse tree
+ */
+ void exitExpressionPrecedingFrameStart(HqlParser.ExpressionPrecedingFrameStartContext ctx);
+ /**
+ * Enter a parse tree produced by the {@code CurrentRowFrameStart}
+ * labeled alternative in {@link HqlParser#frameStart}.
+ * @param ctx the parse tree
+ */
+ void enterCurrentRowFrameStart(HqlParser.CurrentRowFrameStartContext ctx);
+ /**
+ * Exit a parse tree produced by the {@code CurrentRowFrameStart}
+ * labeled alternative in {@link HqlParser#frameStart}.
+ * @param ctx the parse tree
+ */
+ void exitCurrentRowFrameStart(HqlParser.CurrentRowFrameStartContext ctx);
+ /**
+ * Enter a parse tree produced by the {@code ExpressionFollowingFrameStart}
+ * labeled alternative in {@link HqlParser#frameStart}.
+ * @param ctx the parse tree
+ */
+ void enterExpressionFollowingFrameStart(HqlParser.ExpressionFollowingFrameStartContext ctx);
+ /**
+ * Exit a parse tree produced by the {@code ExpressionFollowingFrameStart}
+ * labeled alternative in {@link HqlParser#frameStart}.
+ * @param ctx the parse tree
+ */
+ void exitExpressionFollowingFrameStart(HqlParser.ExpressionFollowingFrameStartContext ctx);
+ /**
+ * Enter a parse tree produced by the {@code CurrentRowFrameExclusion}
+ * labeled alternative in {@link HqlParser#frameExclusion}.
+ * @param ctx the parse tree
+ */
+ void enterCurrentRowFrameExclusion(HqlParser.CurrentRowFrameExclusionContext ctx);
+ /**
+ * Exit a parse tree produced by the {@code CurrentRowFrameExclusion}
+ * labeled alternative in {@link HqlParser#frameExclusion}.
+ * @param ctx the parse tree
+ */
+ void exitCurrentRowFrameExclusion(HqlParser.CurrentRowFrameExclusionContext ctx);
+ /**
+ * Enter a parse tree produced by the {@code GroupFrameExclusion}
+ * labeled alternative in {@link HqlParser#frameExclusion}.
+ * @param ctx the parse tree
+ */
+ void enterGroupFrameExclusion(HqlParser.GroupFrameExclusionContext ctx);
+ /**
+ * Exit a parse tree produced by the {@code GroupFrameExclusion}
+ * labeled alternative in {@link HqlParser#frameExclusion}.
+ * @param ctx the parse tree
+ */
+ void exitGroupFrameExclusion(HqlParser.GroupFrameExclusionContext ctx);
+ /**
+ * Enter a parse tree produced by the {@code TiesFrameExclusion}
+ * labeled alternative in {@link HqlParser#frameExclusion}.
+ * @param ctx the parse tree
+ */
+ void enterTiesFrameExclusion(HqlParser.TiesFrameExclusionContext ctx);
+ /**
+ * Exit a parse tree produced by the {@code TiesFrameExclusion}
+ * labeled alternative in {@link HqlParser#frameExclusion}.
+ * @param ctx the parse tree
+ */
+ void exitTiesFrameExclusion(HqlParser.TiesFrameExclusionContext ctx);
+ /**
+ * Enter a parse tree produced by the {@code NoOthersFrameExclusion}
+ * labeled alternative in {@link HqlParser#frameExclusion}.
+ * @param ctx the parse tree
+ */
+ void enterNoOthersFrameExclusion(HqlParser.NoOthersFrameExclusionContext ctx);
+ /**
+ * Exit a parse tree produced by the {@code NoOthersFrameExclusion}
+ * labeled alternative in {@link HqlParser#frameExclusion}.
+ * @param ctx the parse tree
+ */
+ void exitNoOthersFrameExclusion(HqlParser.NoOthersFrameExclusionContext ctx);
+ /**
+ * Enter a parse tree produced by the {@code ExpressionPrecedingFrameEnd}
+ * labeled alternative in {@link HqlParser#frameEnd}.
+ * @param ctx the parse tree
+ */
+ void enterExpressionPrecedingFrameEnd(HqlParser.ExpressionPrecedingFrameEndContext ctx);
+ /**
+ * Exit a parse tree produced by the {@code ExpressionPrecedingFrameEnd}
+ * labeled alternative in {@link HqlParser#frameEnd}.
+ * @param ctx the parse tree
+ */
+ void exitExpressionPrecedingFrameEnd(HqlParser.ExpressionPrecedingFrameEndContext ctx);
+ /**
+ * Enter a parse tree produced by the {@code CurrentRowFrameEnd}
+ * labeled alternative in {@link HqlParser#frameEnd}.
+ * @param ctx the parse tree
+ */
+ void enterCurrentRowFrameEnd(HqlParser.CurrentRowFrameEndContext ctx);
+ /**
+ * Exit a parse tree produced by the {@code CurrentRowFrameEnd}
+ * labeled alternative in {@link HqlParser#frameEnd}.
+ * @param ctx the parse tree
+ */
+ void exitCurrentRowFrameEnd(HqlParser.CurrentRowFrameEndContext ctx);
+ /**
+ * Enter a parse tree produced by the {@code ExpressionFollowingFrameEnd}
+ * labeled alternative in {@link HqlParser#frameEnd}.
+ * @param ctx the parse tree
+ */
+ void enterExpressionFollowingFrameEnd(HqlParser.ExpressionFollowingFrameEndContext ctx);
+ /**
+ * Exit a parse tree produced by the {@code ExpressionFollowingFrameEnd}
+ * labeled alternative in {@link HqlParser#frameEnd}.
+ * @param ctx the parse tree
+ */
+ void exitExpressionFollowingFrameEnd(HqlParser.ExpressionFollowingFrameEndContext ctx);
+ /**
+ * Enter a parse tree produced by the {@code UnboundedFollowingFrameEnd}
+ * labeled alternative in {@link HqlParser#frameEnd}.
+ * @param ctx the parse tree
+ */
+ void enterUnboundedFollowingFrameEnd(HqlParser.UnboundedFollowingFrameEndContext ctx);
+ /**
+ * Exit a parse tree produced by the {@code UnboundedFollowingFrameEnd}
+ * labeled alternative in {@link HqlParser#frameEnd}.
+ * @param ctx the parse tree
+ */
+ void exitUnboundedFollowingFrameEnd(HqlParser.UnboundedFollowingFrameEndContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#castFunction}.
+ * @param ctx the parse tree
+ */
+ void enterCastFunction(HqlParser.CastFunctionContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#castFunction}.
+ * @param ctx the parse tree
+ */
+ void exitCastFunction(HqlParser.CastFunctionContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#castTarget}.
+ * @param ctx the parse tree
+ */
+ void enterCastTarget(HqlParser.CastTargetContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#castTarget}.
+ * @param ctx the parse tree
+ */
+ void exitCastTarget(HqlParser.CastTargetContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#castTargetType}.
+ * @param ctx the parse tree
+ */
+ void enterCastTargetType(HqlParser.CastTargetTypeContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#castTargetType}.
+ * @param ctx the parse tree
+ */
+ void exitCastTargetType(HqlParser.CastTargetTypeContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#extractFunction}.
+ * @param ctx the parse tree
+ */
+ void enterExtractFunction(HqlParser.ExtractFunctionContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#extractFunction}.
+ * @param ctx the parse tree
+ */
+ void exitExtractFunction(HqlParser.ExtractFunctionContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#trimFunction}.
+ * @param ctx the parse tree
+ */
+ void enterTrimFunction(HqlParser.TrimFunctionContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#trimFunction}.
+ * @param ctx the parse tree
+ */
+ void exitTrimFunction(HqlParser.TrimFunctionContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#dateTimeFunction}.
+ * @param ctx the parse tree
+ */
+ void enterDateTimeFunction(HqlParser.DateTimeFunctionContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#dateTimeFunction}.
+ * @param ctx the parse tree
+ */
+ void exitDateTimeFunction(HqlParser.DateTimeFunctionContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#everyFunction}.
+ * @param ctx the parse tree
+ */
+ void enterEveryFunction(HqlParser.EveryFunctionContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#everyFunction}.
+ * @param ctx the parse tree
+ */
+ void exitEveryFunction(HqlParser.EveryFunctionContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#anyFunction}.
+ * @param ctx the parse tree
+ */
+ void enterAnyFunction(HqlParser.AnyFunctionContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#anyFunction}.
+ * @param ctx the parse tree
+ */
+ void exitAnyFunction(HqlParser.AnyFunctionContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#treatedPath}.
+ * @param ctx the parse tree
+ */
+ void enterTreatedPath(HqlParser.TreatedPathContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#treatedPath}.
+ * @param ctx the parse tree
+ */
+ void exitTreatedPath(HqlParser.TreatedPathContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#pathContinutation}.
+ * @param ctx the parse tree
+ */
+ void enterPathContinutation(HqlParser.PathContinutationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#pathContinutation}.
+ * @param ctx the parse tree
+ */
+ void exitPathContinutation(HqlParser.PathContinutationContext ctx);
+ /**
+ * Enter a parse tree produced by the {@code NullExpressionPredicate}
+ * labeled alternative in {@link HqlParser#predicate}.
+ * @param ctx the parse tree
+ */
+ void enterNullExpressionPredicate(HqlParser.NullExpressionPredicateContext ctx);
+ /**
+ * Exit a parse tree produced by the {@code NullExpressionPredicate}
+ * labeled alternative in {@link HqlParser#predicate}.
+ * @param ctx the parse tree
+ */
+ void exitNullExpressionPredicate(HqlParser.NullExpressionPredicateContext ctx);
+ /**
+ * Enter a parse tree produced by the {@code BetweenPredicate}
+ * labeled alternative in {@link HqlParser#predicate}.
+ * @param ctx the parse tree
+ */
+ void enterBetweenPredicate(HqlParser.BetweenPredicateContext ctx);
+ /**
+ * Exit a parse tree produced by the {@code BetweenPredicate}
+ * labeled alternative in {@link HqlParser#predicate}.
+ * @param ctx the parse tree
+ */
+ void exitBetweenPredicate(HqlParser.BetweenPredicateContext ctx);
+ /**
+ * Enter a parse tree produced by the {@code OrPredicate}
+ * labeled alternative in {@link HqlParser#predicate}.
+ * @param ctx the parse tree
+ */
+ void enterOrPredicate(HqlParser.OrPredicateContext ctx);
+ /**
+ * Exit a parse tree produced by the {@code OrPredicate}
+ * labeled alternative in {@link HqlParser#predicate}.
+ * @param ctx the parse tree
+ */
+ void exitOrPredicate(HqlParser.OrPredicateContext ctx);
+ /**
+ * Enter a parse tree produced by the {@code RelationalPredicate}
+ * labeled alternative in {@link HqlParser#predicate}.
+ * @param ctx the parse tree
+ */
+ void enterRelationalPredicate(HqlParser.RelationalPredicateContext ctx);
+ /**
+ * Exit a parse tree produced by the {@code RelationalPredicate}
+ * labeled alternative in {@link HqlParser#predicate}.
+ * @param ctx the parse tree
+ */
+ void exitRelationalPredicate(HqlParser.RelationalPredicateContext ctx);
+ /**
+ * Enter a parse tree produced by the {@code ExistsPredicate}
+ * labeled alternative in {@link HqlParser#predicate}.
+ * @param ctx the parse tree
+ */
+ void enterExistsPredicate(HqlParser.ExistsPredicateContext ctx);
+ /**
+ * Exit a parse tree produced by the {@code ExistsPredicate}
+ * labeled alternative in {@link HqlParser#predicate}.
+ * @param ctx the parse tree
+ */
+ void exitExistsPredicate(HqlParser.ExistsPredicateContext ctx);
+ /**
+ * Enter a parse tree produced by the {@code CollectionPredicate}
+ * labeled alternative in {@link HqlParser#predicate}.
+ * @param ctx the parse tree
+ */
+ void enterCollectionPredicate(HqlParser.CollectionPredicateContext ctx);
+ /**
+ * Exit a parse tree produced by the {@code CollectionPredicate}
+ * labeled alternative in {@link HqlParser#predicate}.
+ * @param ctx the parse tree
+ */
+ void exitCollectionPredicate(HqlParser.CollectionPredicateContext ctx);
+ /**
+ * Enter a parse tree produced by the {@code AndPredicate}
+ * labeled alternative in {@link HqlParser#predicate}.
+ * @param ctx the parse tree
+ */
+ void enterAndPredicate(HqlParser.AndPredicateContext ctx);
+ /**
+ * Exit a parse tree produced by the {@code AndPredicate}
+ * labeled alternative in {@link HqlParser#predicate}.
+ * @param ctx the parse tree
+ */
+ void exitAndPredicate(HqlParser.AndPredicateContext ctx);
+ /**
+ * Enter a parse tree produced by the {@code GroupedPredicate}
+ * labeled alternative in {@link HqlParser#predicate}.
+ * @param ctx the parse tree
+ */
+ void enterGroupedPredicate(HqlParser.GroupedPredicateContext ctx);
+ /**
+ * Exit a parse tree produced by the {@code GroupedPredicate}
+ * labeled alternative in {@link HqlParser#predicate}.
+ * @param ctx the parse tree
+ */
+ void exitGroupedPredicate(HqlParser.GroupedPredicateContext ctx);
+ /**
+ * Enter a parse tree produced by the {@code LikePredicate}
+ * labeled alternative in {@link HqlParser#predicate}.
+ * @param ctx the parse tree
+ */
+ void enterLikePredicate(HqlParser.LikePredicateContext ctx);
+ /**
+ * Exit a parse tree produced by the {@code LikePredicate}
+ * labeled alternative in {@link HqlParser#predicate}.
+ * @param ctx the parse tree
+ */
+ void exitLikePredicate(HqlParser.LikePredicateContext ctx);
+ /**
+ * Enter a parse tree produced by the {@code InPredicate}
+ * labeled alternative in {@link HqlParser#predicate}.
+ * @param ctx the parse tree
+ */
+ void enterInPredicate(HqlParser.InPredicateContext ctx);
+ /**
+ * Exit a parse tree produced by the {@code InPredicate}
+ * labeled alternative in {@link HqlParser#predicate}.
+ * @param ctx the parse tree
+ */
+ void exitInPredicate(HqlParser.InPredicateContext ctx);
+ /**
+ * Enter a parse tree produced by the {@code NotPredicate}
+ * labeled alternative in {@link HqlParser#predicate}.
+ * @param ctx the parse tree
+ */
+ void enterNotPredicate(HqlParser.NotPredicateContext ctx);
+ /**
+ * Exit a parse tree produced by the {@code NotPredicate}
+ * labeled alternative in {@link HqlParser#predicate}.
+ * @param ctx the parse tree
+ */
+ void exitNotPredicate(HqlParser.NotPredicateContext ctx);
+ /**
+ * Enter a parse tree produced by the {@code ExpressionPredicate}
+ * labeled alternative in {@link HqlParser#predicate}.
+ * @param ctx the parse tree
+ */
+ void enterExpressionPredicate(HqlParser.ExpressionPredicateContext ctx);
+ /**
+ * Exit a parse tree produced by the {@code ExpressionPredicate}
+ * labeled alternative in {@link HqlParser#predicate}.
+ * @param ctx the parse tree
+ */
+ void exitExpressionPredicate(HqlParser.ExpressionPredicateContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#expressionOrPredicate}.
+ * @param ctx the parse tree
+ */
+ void enterExpressionOrPredicate(HqlParser.ExpressionOrPredicateContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#expressionOrPredicate}.
+ * @param ctx the parse tree
+ */
+ void exitExpressionOrPredicate(HqlParser.ExpressionOrPredicateContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#relationalExpression}.
+ * @param ctx the parse tree
+ */
+ void enterRelationalExpression(HqlParser.RelationalExpressionContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#relationalExpression}.
+ * @param ctx the parse tree
+ */
+ void exitRelationalExpression(HqlParser.RelationalExpressionContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#betweenExpression}.
+ * @param ctx the parse tree
+ */
+ void enterBetweenExpression(HqlParser.BetweenExpressionContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#betweenExpression}.
+ * @param ctx the parse tree
+ */
+ void exitBetweenExpression(HqlParser.BetweenExpressionContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#dealingWithNullExpression}.
+ * @param ctx the parse tree
+ */
+ void enterDealingWithNullExpression(HqlParser.DealingWithNullExpressionContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#dealingWithNullExpression}.
+ * @param ctx the parse tree
+ */
+ void exitDealingWithNullExpression(HqlParser.DealingWithNullExpressionContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#stringPatternMatching}.
+ * @param ctx the parse tree
+ */
+ void enterStringPatternMatching(HqlParser.StringPatternMatchingContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#stringPatternMatching}.
+ * @param ctx the parse tree
+ */
+ void exitStringPatternMatching(HqlParser.StringPatternMatchingContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#inExpression}.
+ * @param ctx the parse tree
+ */
+ void enterInExpression(HqlParser.InExpressionContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#inExpression}.
+ * @param ctx the parse tree
+ */
+ void exitInExpression(HqlParser.InExpressionContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#inList}.
+ * @param ctx the parse tree
+ */
+ void enterInList(HqlParser.InListContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#inList}.
+ * @param ctx the parse tree
+ */
+ void exitInList(HqlParser.InListContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#existsExpression}.
+ * @param ctx the parse tree
+ */
+ void enterExistsExpression(HqlParser.ExistsExpressionContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#existsExpression}.
+ * @param ctx the parse tree
+ */
+ void exitExistsExpression(HqlParser.ExistsExpressionContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#collectionExpression}.
+ * @param ctx the parse tree
+ */
+ void enterCollectionExpression(HqlParser.CollectionExpressionContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#collectionExpression}.
+ * @param ctx the parse tree
+ */
+ void exitCollectionExpression(HqlParser.CollectionExpressionContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#instantiationTarget}.
+ * @param ctx the parse tree
+ */
+ void enterInstantiationTarget(HqlParser.InstantiationTargetContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#instantiationTarget}.
+ * @param ctx the parse tree
+ */
+ void exitInstantiationTarget(HqlParser.InstantiationTargetContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#instantiationArguments}.
+ * @param ctx the parse tree
+ */
+ void enterInstantiationArguments(HqlParser.InstantiationArgumentsContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#instantiationArguments}.
+ * @param ctx the parse tree
+ */
+ void exitInstantiationArguments(HqlParser.InstantiationArgumentsContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#instantiationArgument}.
+ * @param ctx the parse tree
+ */
+ void enterInstantiationArgument(HqlParser.InstantiationArgumentContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#instantiationArgument}.
+ * @param ctx the parse tree
+ */
+ void exitInstantiationArgument(HqlParser.InstantiationArgumentContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#parameterOrIntegerLiteral}.
+ * @param ctx the parse tree
+ */
+ void enterParameterOrIntegerLiteral(HqlParser.ParameterOrIntegerLiteralContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#parameterOrIntegerLiteral}.
+ * @param ctx the parse tree
+ */
+ void exitParameterOrIntegerLiteral(HqlParser.ParameterOrIntegerLiteralContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#parameterOrNumberLiteral}.
+ * @param ctx the parse tree
+ */
+ void enterParameterOrNumberLiteral(HqlParser.ParameterOrNumberLiteralContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#parameterOrNumberLiteral}.
+ * @param ctx the parse tree
+ */
+ void exitParameterOrNumberLiteral(HqlParser.ParameterOrNumberLiteralContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#variable}.
+ * @param ctx the parse tree
+ */
+ void enterVariable(HqlParser.VariableContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#variable}.
+ * @param ctx the parse tree
+ */
+ void exitVariable(HqlParser.VariableContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#parameter}.
+ * @param ctx the parse tree
+ */
+ void enterParameter(HqlParser.ParameterContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#parameter}.
+ * @param ctx the parse tree
+ */
+ void exitParameter(HqlParser.ParameterContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#entityName}.
+ * @param ctx the parse tree
+ */
+ void enterEntityName(HqlParser.EntityNameContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#entityName}.
+ * @param ctx the parse tree
+ */
+ void exitEntityName(HqlParser.EntityNameContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#identifier}.
+ * @param ctx the parse tree
+ */
+ void enterIdentifier(HqlParser.IdentifierContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#identifier}.
+ * @param ctx the parse tree
+ */
+ void exitIdentifier(HqlParser.IdentifierContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#character}.
+ * @param ctx the parse tree
+ */
+ void enterCharacter(HqlParser.CharacterContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#character}.
+ * @param ctx the parse tree
+ */
+ void exitCharacter(HqlParser.CharacterContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#functionName}.
+ * @param ctx the parse tree
+ */
+ void enterFunctionName(HqlParser.FunctionNameContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#functionName}.
+ * @param ctx the parse tree
+ */
+ void exitFunctionName(HqlParser.FunctionNameContext ctx);
+ /**
+ * Enter a parse tree produced by {@link HqlParser#reservedWord}.
+ * @param ctx the parse tree
+ */
+ void enterReservedWord(HqlParser.ReservedWordContext ctx);
+ /**
+ * Exit a parse tree produced by {@link HqlParser#reservedWord}.
+ * @param ctx the parse tree
+ */
+ void exitReservedWord(HqlParser.ReservedWordContext ctx);
+}
\ No newline at end of file
diff --git a/headless-services/commons/jpql/src/main/java/org/springframework/ide/vscode/parser/hql/HqlParser.java b/headless-services/commons/jpql/src/main/java/org/springframework/ide/vscode/parser/hql/HqlParser.java
new file mode 100644
index 000000000..fbb7fda4a
--- /dev/null
+++ b/headless-services/commons/jpql/src/main/java/org/springframework/ide/vscode/parser/hql/HqlParser.java
@@ -0,0 +1,11366 @@
+// Generated from Hql.g4 by ANTLR 4.13.1
+package org.springframework.ide.vscode.parser.hql;
+
+/**
+ * HQL per https://docs.jboss.org/hibernate/orm/6.1/userguide/html_single/Hibernate_User_Guide.html#query-language
+ *
+ * This is a mixture of Hibernate's BNF and missing bits of grammar. There are gaps and inconsistencies in the
+ * BNF itself, explained by other fragments of their spec. Additionally, alternate labels are used to provide easier
+ * management of complex rules in the generated Visitor. Finally, there are labels applied to rule elements (op=('+'|'-')
+ * to simplify the processing.
+ *
+ * @author Greg Turnquist
+ * @since 3.1
+ */
+
+import org.antlr.v4.runtime.atn.*;
+import org.antlr.v4.runtime.dfa.DFA;
+import org.antlr.v4.runtime.*;
+import org.antlr.v4.runtime.misc.*;
+import org.antlr.v4.runtime.tree.*;
+import java.util.List;
+import java.util.Iterator;
+import java.util.ArrayList;
+
+@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast", "CheckReturnValue"})
+public class HqlParser 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
+ T__0=1, T__1=2, T__2=3, T__3=4, T__4=5, T__5=6, T__6=7, T__7=8, T__8=9,
+ T__9=10, T__10=11, T__11=12, T__12=13, T__13=14, T__14=15, T__15=16, T__16=17,
+ T__17=18, T__18=19, T__19=20, T__20=21, T__21=22, T__22=23, WS=24, ALL=25,
+ AND=26, ANY=27, AS=28, ASC=29, ASTERISK=30, AVG=31, BETWEEN=32, BOTH=33,
+ BREADTH=34, BY=35, CASE=36, CAST=37, CEILING=38, COLLATE=39, COUNT=40,
+ CROSS=41, CUBE=42, CURRENT=43, CURRENT_DATE=44, CURRENT_INSTANT=45, CURRENT_TIME=46,
+ CURRENT_TIMESTAMP=47, CYCLE=48, DATE=49, DATETIME=50, DAY=51, DEFAULT=52,
+ DELETE=53, DEPTH=54, DESC=55, DISTINCT=56, ELEMENT=57, ELEMENTS=58, ELSE=59,
+ EMPTY=60, END=61, ENTRY=62, EPOCH=63, ERROR=64, ESCAPE=65, EVERY=66, EXCEPT=67,
+ EXCLUDE=68, EXISTS=69, EXP=70, EXTRACT=71, FALSE=72, FETCH=73, FILTER=74,
+ FIRST=75, FK=76, FLOOR=77, FOLLOWING=78, FOR=79, FORMAT=80, FROM=81, FULL=82,
+ FUNCTION=83, GROUP=84, GROUPS=85, HAVING=86, HOUR=87, ID=88, IGNORE=89,
+ ILIKE=90, IN=91, INDEX=92, INDICES=93, INNER=94, INSERT=95, INSTANT=96,
+ INTERSECT=97, INTO=98, IS=99, JOIN=100, KEY=101, LAST=102, LATERAL=103,
+ LEADING=104, LEFT=105, LIKE=106, LIMIT=107, LIST=108, LISTAGG=109, LN=110,
+ LOCAL=111, LOCAL_DATE=112, LOCAL_DATETIME=113, LOCAL_TIME=114, MAP=115,
+ MATERIALIZED=116, MAX=117, MAXELEMENT=118, MAXINDEX=119, MEMBER=120, MICROSECOND=121,
+ MILLISECOND=122, MIN=123, MINELEMENT=124, MININDEX=125, MINUTE=126, MONTH=127,
+ NANOSECOND=128, NATURALID=129, NEW=130, NEXT=131, NO=132, NOT=133, NULL=134,
+ NULLS=135, OBJECT=136, OF=137, OFFSET=138, OFFSET_DATETIME=139, ON=140,
+ ONLY=141, OR=142, ORDER=143, OTHERS=144, OUTER=145, OVER=146, OVERFLOW=147,
+ OVERLAY=148, PAD=149, PARTITION=150, PERCENT=151, PLACING=152, POSITION=153,
+ POWER=154, PRECEDING=155, QUARTER=156, RANGE=157, RESPECT=158, RIGHT=159,
+ ROLLUP=160, ROW=161, ROWS=162, SEARCH=163, SECOND=164, SELECT=165, SET=166,
+ SIZE=167, SOME=168, SUBSTRING=169, SUM=170, THEN=171, TIES=172, TIME=173,
+ TIMESTAMP=174, TIMEZONE_HOUR=175, TIMEZONE_MINUTE=176, TO=177, TRAILING=178,
+ TREAT=179, TRIM=180, TRUE=181, TRUNC=182, TRUNCATE=183, TYPE=184, UNBOUNDED=185,
+ UNION=186, UPDATE=187, USING=188, VALUE=189, VALUES=190, VERSION=191,
+ VERSIONED=192, WEEK=193, WHEN=194, WHERE=195, WITH=196, WITHIN=197, WITHOUT=198,
+ YEAR=199, CHARACTER=200, STRINGLITERAL=201, JAVASTRINGLITERAL=202, INTEGER_LITERAL=203,
+ FLOAT_LITERAL=204, HEXLITERAL=205, BINARY_LITERAL=206, IDENTIFICATION_VARIABLE=207;
+ public static final int
+ RULE_start = 0, RULE_ql_statement = 1, RULE_selectStatement = 2, RULE_queryExpression = 3,
+ RULE_withClause = 4, RULE_cte = 5, RULE_searchClause = 6, RULE_searchSpecifications = 7,
+ RULE_searchSpecification = 8, RULE_cycleClause = 9, RULE_cteAttributes = 10,
+ RULE_orderedQuery = 11, RULE_query = 12, RULE_queryOrder = 13, RULE_fromClause = 14,
+ RULE_entityWithJoins = 15, RULE_joinSpecifier = 16, RULE_fromRoot = 17,
+ RULE_join = 18, RULE_joinTarget = 19, RULE_updateStatement = 20, RULE_targetEntity = 21,
+ RULE_setClause = 22, RULE_assignment = 23, RULE_deleteStatement = 24,
+ RULE_insertStatement = 25, RULE_targetFields = 26, RULE_valuesList = 27,
+ RULE_values = 28, RULE_instantiation = 29, RULE_alias = 30, RULE_groupedItem = 31,
+ RULE_sortedItem = 32, RULE_sortExpression = 33, RULE_sortDirection = 34,
+ RULE_nullsPrecedence = 35, RULE_limitClause = 36, RULE_offsetClause = 37,
+ RULE_fetchClause = 38, RULE_subquery = 39, RULE_selectClause = 40, RULE_selectionList = 41,
+ RULE_selection = 42, RULE_selectExpression = 43, RULE_mapEntrySelection = 44,
+ RULE_jpaSelectObjectSyntax = 45, RULE_whereClause = 46, RULE_joinType = 47,
+ RULE_crossJoin = 48, RULE_joinRestriction = 49, RULE_jpaCollectionJoin = 50,
+ RULE_groupByClause = 51, RULE_orderByClause = 52, RULE_havingClause = 53,
+ RULE_setOperator = 54, RULE_literal = 55, RULE_booleanLiteral = 56, RULE_stringLiteral = 57,
+ RULE_numericLiteral = 58, RULE_dateTimeLiteral = 59, RULE_datetimeField = 60,
+ RULE_binaryLiteral = 61, RULE_expression = 62, RULE_primaryExpression = 63,
+ RULE_identificationVariable = 64, RULE_path = 65, RULE_generalPathFragment = 66,
+ RULE_indexedPathAccessFragment = 67, RULE_simplePath = 68, RULE_simplePathElement = 69,
+ RULE_caseList = 70, RULE_simpleCaseExpression = 71, RULE_searchedCaseExpression = 72,
+ RULE_caseWhenExpressionClause = 73, RULE_caseWhenPredicateClause = 74,
+ RULE_function = 75, RULE_functionArguments = 76, RULE_filterClause = 77,
+ RULE_withinGroup = 78, RULE_overClause = 79, RULE_partitionClause = 80,
+ RULE_frameClause = 81, RULE_frameStart = 82, RULE_frameExclusion = 83,
+ RULE_frameEnd = 84, RULE_castFunction = 85, RULE_castTarget = 86, RULE_castTargetType = 87,
+ RULE_extractFunction = 88, RULE_trimFunction = 89, RULE_dateTimeFunction = 90,
+ RULE_everyFunction = 91, RULE_anyFunction = 92, RULE_treatedPath = 93,
+ RULE_pathContinutation = 94, RULE_predicate = 95, RULE_expressionOrPredicate = 96,
+ RULE_relationalExpression = 97, RULE_betweenExpression = 98, RULE_dealingWithNullExpression = 99,
+ RULE_stringPatternMatching = 100, RULE_inExpression = 101, RULE_inList = 102,
+ RULE_existsExpression = 103, RULE_collectionExpression = 104, RULE_instantiationTarget = 105,
+ RULE_instantiationArguments = 106, RULE_instantiationArgument = 107, RULE_parameterOrIntegerLiteral = 108,
+ RULE_parameterOrNumberLiteral = 109, RULE_variable = 110, RULE_parameter = 111,
+ RULE_entityName = 112, RULE_identifier = 113, RULE_character = 114, RULE_functionName = 115,
+ RULE_reservedWord = 116;
+ private static String[] makeRuleNames() {
+ return new String[] {
+ "start", "ql_statement", "selectStatement", "queryExpression", "withClause",
+ "cte", "searchClause", "searchSpecifications", "searchSpecification",
+ "cycleClause", "cteAttributes", "orderedQuery", "query", "queryOrder",
+ "fromClause", "entityWithJoins", "joinSpecifier", "fromRoot", "join",
+ "joinTarget", "updateStatement", "targetEntity", "setClause", "assignment",
+ "deleteStatement", "insertStatement", "targetFields", "valuesList", "values",
+ "instantiation", "alias", "groupedItem", "sortedItem", "sortExpression",
+ "sortDirection", "nullsPrecedence", "limitClause", "offsetClause", "fetchClause",
+ "subquery", "selectClause", "selectionList", "selection", "selectExpression",
+ "mapEntrySelection", "jpaSelectObjectSyntax", "whereClause", "joinType",
+ "crossJoin", "joinRestriction", "jpaCollectionJoin", "groupByClause",
+ "orderByClause", "havingClause", "setOperator", "literal", "booleanLiteral",
+ "stringLiteral", "numericLiteral", "dateTimeLiteral", "datetimeField",
+ "binaryLiteral", "expression", "primaryExpression", "identificationVariable",
+ "path", "generalPathFragment", "indexedPathAccessFragment", "simplePath",
+ "simplePathElement", "caseList", "simpleCaseExpression", "searchedCaseExpression",
+ "caseWhenExpressionClause", "caseWhenPredicateClause", "function", "functionArguments",
+ "filterClause", "withinGroup", "overClause", "partitionClause", "frameClause",
+ "frameStart", "frameExclusion", "frameEnd", "castFunction", "castTarget",
+ "castTargetType", "extractFunction", "trimFunction", "dateTimeFunction",
+ "everyFunction", "anyFunction", "treatedPath", "pathContinutation", "predicate",
+ "expressionOrPredicate", "relationalExpression", "betweenExpression",
+ "dealingWithNullExpression", "stringPatternMatching", "inExpression",
+ "inList", "existsExpression", "collectionExpression", "instantiationTarget",
+ "instantiationArguments", "instantiationArgument", "parameterOrIntegerLiteral",
+ "parameterOrNumberLiteral", "variable", "parameter", "entityName", "identifier",
+ "character", "functionName", "reservedWord"
+ };
+ }
+ public static final String[] ruleNames = makeRuleNames();
+
+ private static String[] makeLiteralNames() {
+ return new String[] {
+ null, "','", "'('", "')'", "'='", "'%'", "'{'", "'}'", "'+'", "'-'",
+ "'/'", "'||'", "'['", "']'", "'.'", "'>'", "'>='", "'<'", "'<='", "'<>'",
+ "'!='", "'^='", "':'", "'?'", null, null, null, null, null, null, "'*'"
+ };
+ }
+ private static final String[] _LITERAL_NAMES = makeLiteralNames();
+ private static String[] makeSymbolicNames() {
+ return new String[] {
+ null, null, null, null, null, null, null, null, null, null, null, null,
+ null, null, null, null, null, null, null, null, null, null, null, null,
+ "WS", "ALL", "AND", "ANY", "AS", "ASC", "ASTERISK", "AVG", "BETWEEN",
+ "BOTH", "BREADTH", "BY", "CASE", "CAST", "CEILING", "COLLATE", "COUNT",
+ "CROSS", "CUBE", "CURRENT", "CURRENT_DATE", "CURRENT_INSTANT", "CURRENT_TIME",
+ "CURRENT_TIMESTAMP", "CYCLE", "DATE", "DATETIME", "DAY", "DEFAULT", "DELETE",
+ "DEPTH", "DESC", "DISTINCT", "ELEMENT", "ELEMENTS", "ELSE", "EMPTY",
+ "END", "ENTRY", "EPOCH", "ERROR", "ESCAPE", "EVERY", "EXCEPT", "EXCLUDE",
+ "EXISTS", "EXP", "EXTRACT", "FALSE", "FETCH", "FILTER", "FIRST", "FK",
+ "FLOOR", "FOLLOWING", "FOR", "FORMAT", "FROM", "FULL", "FUNCTION", "GROUP",
+ "GROUPS", "HAVING", "HOUR", "ID", "IGNORE", "ILIKE", "IN", "INDEX", "INDICES",
+ "INNER", "INSERT", "INSTANT", "INTERSECT", "INTO", "IS", "JOIN", "KEY",
+ "LAST", "LATERAL", "LEADING", "LEFT", "LIKE", "LIMIT", "LIST", "LISTAGG",
+ "LN", "LOCAL", "LOCAL_DATE", "LOCAL_DATETIME", "LOCAL_TIME", "MAP", "MATERIALIZED",
+ "MAX", "MAXELEMENT", "MAXINDEX", "MEMBER", "MICROSECOND", "MILLISECOND",
+ "MIN", "MINELEMENT", "MININDEX", "MINUTE", "MONTH", "NANOSECOND", "NATURALID",
+ "NEW", "NEXT", "NO", "NOT", "NULL", "NULLS", "OBJECT", "OF", "OFFSET",
+ "OFFSET_DATETIME", "ON", "ONLY", "OR", "ORDER", "OTHERS", "OUTER", "OVER",
+ "OVERFLOW", "OVERLAY", "PAD", "PARTITION", "PERCENT", "PLACING", "POSITION",
+ "POWER", "PRECEDING", "QUARTER", "RANGE", "RESPECT", "RIGHT", "ROLLUP",
+ "ROW", "ROWS", "SEARCH", "SECOND", "SELECT", "SET", "SIZE", "SOME", "SUBSTRING",
+ "SUM", "THEN", "TIES", "TIME", "TIMESTAMP", "TIMEZONE_HOUR", "TIMEZONE_MINUTE",
+ "TO", "TRAILING", "TREAT", "TRIM", "TRUE", "TRUNC", "TRUNCATE", "TYPE",
+ "UNBOUNDED", "UNION", "UPDATE", "USING", "VALUE", "VALUES", "VERSION",
+ "VERSIONED", "WEEK", "WHEN", "WHERE", "WITH", "WITHIN", "WITHOUT", "YEAR",
+ "CHARACTER", "STRINGLITERAL", "JAVASTRINGLITERAL", "INTEGER_LITERAL",
+ "FLOAT_LITERAL", "HEXLITERAL", "BINARY_LITERAL", "IDENTIFICATION_VARIABLE"
+ };
+ }
+ 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 "Hql.g4"; }
+
+ @Override
+ public String[] getRuleNames() { return ruleNames; }
+
+ @Override
+ public String getSerializedATN() { return _serializedATN; }
+
+ @Override
+ public ATN getATN() { return _ATN; }
+
+ public HqlParser(TokenStream input) {
+ super(input);
+ _interp = new ParserATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache);
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class StartContext extends ParserRuleContext {
+ public Ql_statementContext ql_statement() {
+ return getRuleContext(Ql_statementContext.class,0);
+ }
+ public TerminalNode EOF() { return getToken(HqlParser.EOF, 0); }
+ public StartContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_start; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterStart(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitStart(this);
+ }
+ }
+
+ public final StartContext start() throws RecognitionException {
+ StartContext _localctx = new StartContext(_ctx, getState());
+ enterRule(_localctx, 0, RULE_start);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(234);
+ ql_statement();
+ setState(235);
+ 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 Ql_statementContext extends ParserRuleContext {
+ public SelectStatementContext selectStatement() {
+ return getRuleContext(SelectStatementContext.class,0);
+ }
+ public UpdateStatementContext updateStatement() {
+ return getRuleContext(UpdateStatementContext.class,0);
+ }
+ public DeleteStatementContext deleteStatement() {
+ return getRuleContext(DeleteStatementContext.class,0);
+ }
+ public InsertStatementContext insertStatement() {
+ return getRuleContext(InsertStatementContext.class,0);
+ }
+ public Ql_statementContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_ql_statement; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterQl_statement(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitQl_statement(this);
+ }
+ }
+
+ public final Ql_statementContext ql_statement() throws RecognitionException {
+ Ql_statementContext _localctx = new Ql_statementContext(_ctx, getState());
+ enterRule(_localctx, 2, RULE_ql_statement);
+ try {
+ setState(241);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case T__1:
+ case FROM:
+ case SELECT:
+ case WITH:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(237);
+ selectStatement();
+ }
+ break;
+ case UPDATE:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(238);
+ updateStatement();
+ }
+ break;
+ case DELETE:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(239);
+ deleteStatement();
+ }
+ break;
+ case INSERT:
+ enterOuterAlt(_localctx, 4);
+ {
+ setState(240);
+ insertStatement();
+ }
+ 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 SelectStatementContext extends ParserRuleContext {
+ public QueryExpressionContext queryExpression() {
+ return getRuleContext(QueryExpressionContext.class,0);
+ }
+ public SelectStatementContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_selectStatement; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterSelectStatement(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitSelectStatement(this);
+ }
+ }
+
+ public final SelectStatementContext selectStatement() throws RecognitionException {
+ SelectStatementContext _localctx = new SelectStatementContext(_ctx, getState());
+ enterRule(_localctx, 4, RULE_selectStatement);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(243);
+ queryExpression();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class QueryExpressionContext extends ParserRuleContext {
+ public List orderedQuery() {
+ return getRuleContexts(OrderedQueryContext.class);
+ }
+ public OrderedQueryContext orderedQuery(int i) {
+ return getRuleContext(OrderedQueryContext.class,i);
+ }
+ public WithClauseContext withClause() {
+ return getRuleContext(WithClauseContext.class,0);
+ }
+ public List setOperator() {
+ return getRuleContexts(SetOperatorContext.class);
+ }
+ public SetOperatorContext setOperator(int i) {
+ return getRuleContext(SetOperatorContext.class,i);
+ }
+ public QueryExpressionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_queryExpression; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterQueryExpression(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitQueryExpression(this);
+ }
+ }
+
+ public final QueryExpressionContext queryExpression() throws RecognitionException {
+ QueryExpressionContext _localctx = new QueryExpressionContext(_ctx, getState());
+ enterRule(_localctx, 6, RULE_queryExpression);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(246);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==WITH) {
+ {
+ setState(245);
+ withClause();
+ }
+ }
+
+ setState(248);
+ orderedQuery();
+ setState(254);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==EXCEPT || _la==INTERSECT || _la==UNION) {
+ {
+ {
+ setState(249);
+ setOperator();
+ setState(250);
+ orderedQuery();
+ }
+ }
+ setState(256);
+ _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 WithClauseContext extends ParserRuleContext {
+ public TerminalNode WITH() { return getToken(HqlParser.WITH, 0); }
+ public List cte() {
+ return getRuleContexts(CteContext.class);
+ }
+ public CteContext cte(int i) {
+ return getRuleContext(CteContext.class,i);
+ }
+ public WithClauseContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_withClause; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterWithClause(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitWithClause(this);
+ }
+ }
+
+ public final WithClauseContext withClause() throws RecognitionException {
+ WithClauseContext _localctx = new WithClauseContext(_ctx, getState());
+ enterRule(_localctx, 8, RULE_withClause);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(257);
+ match(WITH);
+ setState(258);
+ cte();
+ setState(263);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==T__0) {
+ {
+ {
+ setState(259);
+ match(T__0);
+ setState(260);
+ cte();
+ }
+ }
+ setState(265);
+ _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 CteContext extends ParserRuleContext {
+ public IdentifierContext identifier() {
+ return getRuleContext(IdentifierContext.class,0);
+ }
+ public TerminalNode AS() { return getToken(HqlParser.AS, 0); }
+ public QueryExpressionContext queryExpression() {
+ return getRuleContext(QueryExpressionContext.class,0);
+ }
+ public TerminalNode MATERIALIZED() { return getToken(HqlParser.MATERIALIZED, 0); }
+ public SearchClauseContext searchClause() {
+ return getRuleContext(SearchClauseContext.class,0);
+ }
+ public CycleClauseContext cycleClause() {
+ return getRuleContext(CycleClauseContext.class,0);
+ }
+ public TerminalNode NOT() { return getToken(HqlParser.NOT, 0); }
+ public CteContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_cte; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterCte(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitCte(this);
+ }
+ }
+
+ public final CteContext cte() throws RecognitionException {
+ CteContext _localctx = new CteContext(_ctx, getState());
+ enterRule(_localctx, 10, RULE_cte);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(266);
+ identifier();
+ setState(267);
+ match(AS);
+ setState(272);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==MATERIALIZED || _la==NOT) {
+ {
+ setState(269);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==NOT) {
+ {
+ setState(268);
+ match(NOT);
+ }
+ }
+
+ setState(271);
+ match(MATERIALIZED);
+ }
+ }
+
+ setState(274);
+ match(T__1);
+ setState(275);
+ queryExpression();
+ setState(276);
+ match(T__2);
+ setState(278);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==SEARCH) {
+ {
+ setState(277);
+ searchClause();
+ }
+ }
+
+ setState(281);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==CYCLE) {
+ {
+ setState(280);
+ cycleClause();
+ }
+ }
+
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class SearchClauseContext extends ParserRuleContext {
+ public TerminalNode SEARCH() { return getToken(HqlParser.SEARCH, 0); }
+ public TerminalNode FIRST() { return getToken(HqlParser.FIRST, 0); }
+ public TerminalNode BY() { return getToken(HqlParser.BY, 0); }
+ public SearchSpecificationsContext searchSpecifications() {
+ return getRuleContext(SearchSpecificationsContext.class,0);
+ }
+ public TerminalNode SET() { return getToken(HqlParser.SET, 0); }
+ public IdentifierContext identifier() {
+ return getRuleContext(IdentifierContext.class,0);
+ }
+ public TerminalNode BREADTH() { return getToken(HqlParser.BREADTH, 0); }
+ public TerminalNode DEPTH() { return getToken(HqlParser.DEPTH, 0); }
+ public SearchClauseContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_searchClause; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterSearchClause(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitSearchClause(this);
+ }
+ }
+
+ public final SearchClauseContext searchClause() throws RecognitionException {
+ SearchClauseContext _localctx = new SearchClauseContext(_ctx, getState());
+ enterRule(_localctx, 12, RULE_searchClause);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(283);
+ match(SEARCH);
+ setState(284);
+ _la = _input.LA(1);
+ if ( !(_la==BREADTH || _la==DEPTH) ) {
+ _errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ setState(285);
+ match(FIRST);
+ setState(286);
+ match(BY);
+ setState(287);
+ searchSpecifications();
+ setState(288);
+ match(SET);
+ setState(289);
+ identifier();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class SearchSpecificationsContext extends ParserRuleContext {
+ public List searchSpecification() {
+ return getRuleContexts(SearchSpecificationContext.class);
+ }
+ public SearchSpecificationContext searchSpecification(int i) {
+ return getRuleContext(SearchSpecificationContext.class,i);
+ }
+ public SearchSpecificationsContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_searchSpecifications; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterSearchSpecifications(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitSearchSpecifications(this);
+ }
+ }
+
+ public final SearchSpecificationsContext searchSpecifications() throws RecognitionException {
+ SearchSpecificationsContext _localctx = new SearchSpecificationsContext(_ctx, getState());
+ enterRule(_localctx, 14, RULE_searchSpecifications);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(291);
+ searchSpecification();
+ setState(296);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==T__0) {
+ {
+ {
+ setState(292);
+ match(T__0);
+ setState(293);
+ searchSpecification();
+ }
+ }
+ setState(298);
+ _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 SearchSpecificationContext extends ParserRuleContext {
+ public IdentifierContext identifier() {
+ return getRuleContext(IdentifierContext.class,0);
+ }
+ public SortDirectionContext sortDirection() {
+ return getRuleContext(SortDirectionContext.class,0);
+ }
+ public NullsPrecedenceContext nullsPrecedence() {
+ return getRuleContext(NullsPrecedenceContext.class,0);
+ }
+ public SearchSpecificationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_searchSpecification; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterSearchSpecification(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitSearchSpecification(this);
+ }
+ }
+
+ public final SearchSpecificationContext searchSpecification() throws RecognitionException {
+ SearchSpecificationContext _localctx = new SearchSpecificationContext(_ctx, getState());
+ enterRule(_localctx, 16, RULE_searchSpecification);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(299);
+ identifier();
+ setState(301);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==ASC || _la==DESC) {
+ {
+ setState(300);
+ sortDirection();
+ }
+ }
+
+ setState(304);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==NULLS) {
+ {
+ setState(303);
+ nullsPrecedence();
+ }
+ }
+
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class CycleClauseContext extends ParserRuleContext {
+ public TerminalNode CYCLE() { return getToken(HqlParser.CYCLE, 0); }
+ public CteAttributesContext cteAttributes() {
+ return getRuleContext(CteAttributesContext.class,0);
+ }
+ public TerminalNode SET() { return getToken(HqlParser.SET, 0); }
+ public List identifier() {
+ return getRuleContexts(IdentifierContext.class);
+ }
+ public IdentifierContext identifier(int i) {
+ return getRuleContext(IdentifierContext.class,i);
+ }
+ public TerminalNode TO() { return getToken(HqlParser.TO, 0); }
+ public List literal() {
+ return getRuleContexts(LiteralContext.class);
+ }
+ public LiteralContext literal(int i) {
+ return getRuleContext(LiteralContext.class,i);
+ }
+ public TerminalNode DEFAULT() { return getToken(HqlParser.DEFAULT, 0); }
+ public TerminalNode USING() { return getToken(HqlParser.USING, 0); }
+ public CycleClauseContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_cycleClause; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterCycleClause(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitCycleClause(this);
+ }
+ }
+
+ public final CycleClauseContext cycleClause() throws RecognitionException {
+ CycleClauseContext _localctx = new CycleClauseContext(_ctx, getState());
+ enterRule(_localctx, 18, RULE_cycleClause);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(306);
+ match(CYCLE);
+ setState(307);
+ cteAttributes();
+ setState(308);
+ match(SET);
+ setState(309);
+ identifier();
+ setState(315);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==TO) {
+ {
+ setState(310);
+ match(TO);
+ setState(311);
+ literal();
+ setState(312);
+ match(DEFAULT);
+ setState(313);
+ literal();
+ }
+ }
+
+ setState(319);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==USING) {
+ {
+ setState(317);
+ match(USING);
+ setState(318);
+ identifier();
+ }
+ }
+
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class CteAttributesContext extends ParserRuleContext {
+ public List identifier() {
+ return getRuleContexts(IdentifierContext.class);
+ }
+ public IdentifierContext identifier(int i) {
+ return getRuleContext(IdentifierContext.class,i);
+ }
+ public CteAttributesContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_cteAttributes; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterCteAttributes(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitCteAttributes(this);
+ }
+ }
+
+ public final CteAttributesContext cteAttributes() throws RecognitionException {
+ CteAttributesContext _localctx = new CteAttributesContext(_ctx, getState());
+ enterRule(_localctx, 20, RULE_cteAttributes);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(321);
+ identifier();
+ setState(326);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==T__0) {
+ {
+ {
+ setState(322);
+ match(T__0);
+ setState(323);
+ identifier();
+ }
+ }
+ setState(328);
+ _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 OrderedQueryContext extends ParserRuleContext {
+ public QueryContext query() {
+ return getRuleContext(QueryContext.class,0);
+ }
+ public QueryExpressionContext queryExpression() {
+ return getRuleContext(QueryExpressionContext.class,0);
+ }
+ public QueryOrderContext queryOrder() {
+ return getRuleContext(QueryOrderContext.class,0);
+ }
+ public OrderedQueryContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_orderedQuery; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterOrderedQuery(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitOrderedQuery(this);
+ }
+ }
+
+ public final OrderedQueryContext orderedQuery() throws RecognitionException {
+ OrderedQueryContext _localctx = new OrderedQueryContext(_ctx, getState());
+ enterRule(_localctx, 22, RULE_orderedQuery);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(334);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case FROM:
+ case SELECT:
+ {
+ setState(329);
+ query();
+ }
+ break;
+ case T__1:
+ {
+ setState(330);
+ match(T__1);
+ setState(331);
+ queryExpression();
+ setState(332);
+ match(T__2);
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ setState(337);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==ORDER) {
+ {
+ setState(336);
+ queryOrder();
+ }
+ }
+
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class QueryContext extends ParserRuleContext {
+ public QueryContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_query; }
+
+ public QueryContext() { }
+ public void copyFrom(QueryContext ctx) {
+ super.copyFrom(ctx);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class SelectQueryContext extends QueryContext {
+ public SelectClauseContext selectClause() {
+ return getRuleContext(SelectClauseContext.class,0);
+ }
+ public FromClauseContext fromClause() {
+ return getRuleContext(FromClauseContext.class,0);
+ }
+ public WhereClauseContext whereClause() {
+ return getRuleContext(WhereClauseContext.class,0);
+ }
+ public GroupByClauseContext groupByClause() {
+ return getRuleContext(GroupByClauseContext.class,0);
+ }
+ public HavingClauseContext havingClause() {
+ return getRuleContext(HavingClauseContext.class,0);
+ }
+ public SelectQueryContext(QueryContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterSelectQuery(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitSelectQuery(this);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class FromQueryContext extends QueryContext {
+ public FromClauseContext fromClause() {
+ return getRuleContext(FromClauseContext.class,0);
+ }
+ public WhereClauseContext whereClause() {
+ return getRuleContext(WhereClauseContext.class,0);
+ }
+ public GroupByClauseContext groupByClause() {
+ return getRuleContext(GroupByClauseContext.class,0);
+ }
+ public SelectClauseContext selectClause() {
+ return getRuleContext(SelectClauseContext.class,0);
+ }
+ public HavingClauseContext havingClause() {
+ return getRuleContext(HavingClauseContext.class,0);
+ }
+ public FromQueryContext(QueryContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterFromQuery(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitFromQuery(this);
+ }
+ }
+
+ public final QueryContext query() throws RecognitionException {
+ QueryContext _localctx = new QueryContext(_ctx, getState());
+ enterRule(_localctx, 24, RULE_query);
+ int _la;
+ try {
+ setState(365);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case SELECT:
+ _localctx = new SelectQueryContext(_localctx);
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(339);
+ selectClause();
+ setState(341);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==FROM) {
+ {
+ setState(340);
+ fromClause();
+ }
+ }
+
+ setState(344);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==WHERE) {
+ {
+ setState(343);
+ whereClause();
+ }
+ }
+
+ setState(350);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==GROUP) {
+ {
+ setState(346);
+ groupByClause();
+ setState(348);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==HAVING) {
+ {
+ setState(347);
+ havingClause();
+ }
+ }
+
+ }
+ }
+
+ }
+ break;
+ case FROM:
+ _localctx = new FromQueryContext(_localctx);
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(352);
+ fromClause();
+ setState(354);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==WHERE) {
+ {
+ setState(353);
+ whereClause();
+ }
+ }
+
+ setState(360);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==GROUP) {
+ {
+ setState(356);
+ groupByClause();
+ setState(358);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==HAVING) {
+ {
+ setState(357);
+ havingClause();
+ }
+ }
+
+ }
+ }
+
+ setState(363);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==SELECT) {
+ {
+ setState(362);
+ selectClause();
+ }
+ }
+
+ }
+ 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 QueryOrderContext extends ParserRuleContext {
+ public OrderByClauseContext orderByClause() {
+ return getRuleContext(OrderByClauseContext.class,0);
+ }
+ public LimitClauseContext limitClause() {
+ return getRuleContext(LimitClauseContext.class,0);
+ }
+ public OffsetClauseContext offsetClause() {
+ return getRuleContext(OffsetClauseContext.class,0);
+ }
+ public FetchClauseContext fetchClause() {
+ return getRuleContext(FetchClauseContext.class,0);
+ }
+ public QueryOrderContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_queryOrder; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterQueryOrder(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitQueryOrder(this);
+ }
+ }
+
+ public final QueryOrderContext queryOrder() throws RecognitionException {
+ QueryOrderContext _localctx = new QueryOrderContext(_ctx, getState());
+ enterRule(_localctx, 26, RULE_queryOrder);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(367);
+ orderByClause();
+ setState(369);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==LIMIT) {
+ {
+ setState(368);
+ limitClause();
+ }
+ }
+
+ setState(372);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==OFFSET) {
+ {
+ setState(371);
+ offsetClause();
+ }
+ }
+
+ setState(375);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==FETCH) {
+ {
+ setState(374);
+ fetchClause();
+ }
+ }
+
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class FromClauseContext extends ParserRuleContext {
+ public TerminalNode FROM() { return getToken(HqlParser.FROM, 0); }
+ public List entityWithJoins() {
+ return getRuleContexts(EntityWithJoinsContext.class);
+ }
+ public EntityWithJoinsContext entityWithJoins(int i) {
+ return getRuleContext(EntityWithJoinsContext.class,i);
+ }
+ public FromClauseContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_fromClause; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterFromClause(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitFromClause(this);
+ }
+ }
+
+ public final FromClauseContext fromClause() throws RecognitionException {
+ FromClauseContext _localctx = new FromClauseContext(_ctx, getState());
+ enterRule(_localctx, 28, RULE_fromClause);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(377);
+ match(FROM);
+ setState(378);
+ entityWithJoins();
+ setState(383);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==T__0) {
+ {
+ {
+ setState(379);
+ match(T__0);
+ setState(380);
+ entityWithJoins();
+ }
+ }
+ setState(385);
+ _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 EntityWithJoinsContext extends ParserRuleContext {
+ public FromRootContext fromRoot() {
+ return getRuleContext(FromRootContext.class,0);
+ }
+ public List joinSpecifier() {
+ return getRuleContexts(JoinSpecifierContext.class);
+ }
+ public JoinSpecifierContext joinSpecifier(int i) {
+ return getRuleContext(JoinSpecifierContext.class,i);
+ }
+ public EntityWithJoinsContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_entityWithJoins; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterEntityWithJoins(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitEntityWithJoins(this);
+ }
+ }
+
+ public final EntityWithJoinsContext entityWithJoins() throws RecognitionException {
+ EntityWithJoinsContext _localctx = new EntityWithJoinsContext(_ctx, getState());
+ enterRule(_localctx, 30, RULE_entityWithJoins);
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(386);
+ fromRoot();
+ setState(390);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,29,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(387);
+ joinSpecifier();
+ }
+ }
+ }
+ setState(392);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,29,_ctx);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class JoinSpecifierContext extends ParserRuleContext {
+ public JoinContext join() {
+ return getRuleContext(JoinContext.class,0);
+ }
+ public CrossJoinContext crossJoin() {
+ return getRuleContext(CrossJoinContext.class,0);
+ }
+ public JpaCollectionJoinContext jpaCollectionJoin() {
+ return getRuleContext(JpaCollectionJoinContext.class,0);
+ }
+ public JoinSpecifierContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_joinSpecifier; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterJoinSpecifier(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitJoinSpecifier(this);
+ }
+ }
+
+ public final JoinSpecifierContext joinSpecifier() throws RecognitionException {
+ JoinSpecifierContext _localctx = new JoinSpecifierContext(_ctx, getState());
+ enterRule(_localctx, 32, RULE_joinSpecifier);
+ try {
+ setState(396);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,30,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(393);
+ join();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(394);
+ crossJoin();
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(395);
+ jpaCollectionJoin();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class FromRootContext extends ParserRuleContext {
+ public EntityNameContext entityName() {
+ return getRuleContext(EntityNameContext.class,0);
+ }
+ public VariableContext variable() {
+ return getRuleContext(VariableContext.class,0);
+ }
+ public SubqueryContext subquery() {
+ return getRuleContext(SubqueryContext.class,0);
+ }
+ public TerminalNode LATERAL() { return getToken(HqlParser.LATERAL, 0); }
+ public FromRootContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_fromRoot; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterFromRoot(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitFromRoot(this);
+ }
+ }
+
+ public final FromRootContext fromRoot() throws RecognitionException {
+ FromRootContext _localctx = new FromRootContext(_ctx, getState());
+ enterRule(_localctx, 34, RULE_fromRoot);
+ int _la;
+ try {
+ setState(411);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case ALL:
+ case AND:
+ case ANY:
+ case AS:
+ case ASC:
+ case AVG:
+ case BETWEEN:
+ case BOTH:
+ case BREADTH:
+ case BY:
+ case CASE:
+ case CAST:
+ case COLLATE:
+ case COUNT:
+ case CROSS:
+ case CUBE:
+ case CURRENT:
+ case CURRENT_DATE:
+ case CURRENT_INSTANT:
+ case CURRENT_TIME:
+ case CURRENT_TIMESTAMP:
+ case CYCLE:
+ case DATE:
+ case DATETIME:
+ case DAY:
+ case DEFAULT:
+ case DELETE:
+ case DEPTH:
+ case DESC:
+ case DISTINCT:
+ case ELEMENT:
+ case ELEMENTS:
+ case ELSE:
+ case EMPTY:
+ case END:
+ case ENTRY:
+ case EPOCH:
+ case ERROR:
+ case ESCAPE:
+ case EVERY:
+ case EXCEPT:
+ case EXCLUDE:
+ case EXISTS:
+ case EXTRACT:
+ case FETCH:
+ case FILTER:
+ case FIRST:
+ case FLOOR:
+ case FOLLOWING:
+ case FOR:
+ case FORMAT:
+ case FROM:
+ case FULL:
+ case FUNCTION:
+ case GROUP:
+ case GROUPS:
+ case HAVING:
+ case HOUR:
+ case ID:
+ case IGNORE:
+ case ILIKE:
+ case IN:
+ case INDEX:
+ case INDICES:
+ case INNER:
+ case INSERT:
+ case INSTANT:
+ case INTERSECT:
+ case INTO:
+ case IS:
+ case JOIN:
+ case KEY:
+ case LAST:
+ case LEADING:
+ case LEFT:
+ case LIKE:
+ case LIMIT:
+ case LIST:
+ case LISTAGG:
+ case LOCAL:
+ case LOCAL_DATE:
+ case LOCAL_DATETIME:
+ case LOCAL_TIME:
+ case MAP:
+ case MATERIALIZED:
+ case MAX:
+ case MAXELEMENT:
+ case MAXINDEX:
+ case MEMBER:
+ case MICROSECOND:
+ case MILLISECOND:
+ case MIN:
+ case MINELEMENT:
+ case MININDEX:
+ case MINUTE:
+ case MONTH:
+ case NANOSECOND:
+ case NATURALID:
+ case NEW:
+ case NEXT:
+ case NO:
+ case NOT:
+ case NULLS:
+ case OBJECT:
+ case OF:
+ case OFFSET:
+ case OFFSET_DATETIME:
+ case ON:
+ case ONLY:
+ case OR:
+ case ORDER:
+ case OTHERS:
+ case OUTER:
+ case OVER:
+ case OVERFLOW:
+ case OVERLAY:
+ case PAD:
+ case PARTITION:
+ case PERCENT:
+ case PLACING:
+ case POSITION:
+ case POWER:
+ case PRECEDING:
+ case QUARTER:
+ case RANGE:
+ case RESPECT:
+ case RIGHT:
+ case ROLLUP:
+ case ROW:
+ case ROWS:
+ case SEARCH:
+ case SECOND:
+ case SELECT:
+ case SET:
+ case SIZE:
+ case SOME:
+ case SUBSTRING:
+ case SUM:
+ case THEN:
+ case TIES:
+ case TIME:
+ case TIMESTAMP:
+ case TIMEZONE_HOUR:
+ case TIMEZONE_MINUTE:
+ case TO:
+ case TRAILING:
+ case TREAT:
+ case TRIM:
+ case TRUNC:
+ case TRUNCATE:
+ case TYPE:
+ case UNBOUNDED:
+ case UNION:
+ case UPDATE:
+ case USING:
+ case VALUE:
+ case VALUES:
+ case VERSION:
+ case VERSIONED:
+ case WEEK:
+ case WHEN:
+ case WHERE:
+ case WITH:
+ case WITHIN:
+ case WITHOUT:
+ case YEAR:
+ case IDENTIFICATION_VARIABLE:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(398);
+ entityName();
+ setState(400);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,31,_ctx) ) {
+ case 1:
+ {
+ setState(399);
+ variable();
+ }
+ break;
+ }
+ }
+ break;
+ case T__1:
+ case LATERAL:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(403);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==LATERAL) {
+ {
+ setState(402);
+ match(LATERAL);
+ }
+ }
+
+ setState(405);
+ match(T__1);
+ setState(406);
+ subquery();
+ setState(407);
+ match(T__2);
+ setState(409);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,33,_ctx) ) {
+ case 1:
+ {
+ setState(408);
+ variable();
+ }
+ 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 JoinContext extends ParserRuleContext {
+ public JoinTypeContext joinType() {
+ return getRuleContext(JoinTypeContext.class,0);
+ }
+ public TerminalNode JOIN() { return getToken(HqlParser.JOIN, 0); }
+ public JoinTargetContext joinTarget() {
+ return getRuleContext(JoinTargetContext.class,0);
+ }
+ public TerminalNode FETCH() { return getToken(HqlParser.FETCH, 0); }
+ public JoinRestrictionContext joinRestriction() {
+ return getRuleContext(JoinRestrictionContext.class,0);
+ }
+ public JoinContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_join; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterJoin(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitJoin(this);
+ }
+ }
+
+ public final JoinContext join() throws RecognitionException {
+ JoinContext _localctx = new JoinContext(_ctx, getState());
+ enterRule(_localctx, 36, RULE_join);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(413);
+ joinType();
+ setState(414);
+ match(JOIN);
+ setState(416);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,35,_ctx) ) {
+ case 1:
+ {
+ setState(415);
+ match(FETCH);
+ }
+ break;
+ }
+ setState(418);
+ joinTarget();
+ setState(420);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==ON || _la==WITH) {
+ {
+ setState(419);
+ joinRestriction();
+ }
+ }
+
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class JoinTargetContext extends ParserRuleContext {
+ public JoinTargetContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_joinTarget; }
+
+ public JoinTargetContext() { }
+ public void copyFrom(JoinTargetContext ctx) {
+ super.copyFrom(ctx);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class JoinPathContext extends JoinTargetContext {
+ public PathContext path() {
+ return getRuleContext(PathContext.class,0);
+ }
+ public VariableContext variable() {
+ return getRuleContext(VariableContext.class,0);
+ }
+ public JoinPathContext(JoinTargetContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterJoinPath(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitJoinPath(this);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class JoinSubqueryContext extends JoinTargetContext {
+ public SubqueryContext subquery() {
+ return getRuleContext(SubqueryContext.class,0);
+ }
+ public TerminalNode LATERAL() { return getToken(HqlParser.LATERAL, 0); }
+ public VariableContext variable() {
+ return getRuleContext(VariableContext.class,0);
+ }
+ public JoinSubqueryContext(JoinTargetContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterJoinSubquery(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitJoinSubquery(this);
+ }
+ }
+
+ public final JoinTargetContext joinTarget() throws RecognitionException {
+ JoinTargetContext _localctx = new JoinTargetContext(_ctx, getState());
+ enterRule(_localctx, 38, RULE_joinTarget);
+ int _la;
+ try {
+ setState(435);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case ALL:
+ case AND:
+ case ANY:
+ case AS:
+ case ASC:
+ case AVG:
+ case BETWEEN:
+ case BOTH:
+ case BREADTH:
+ case BY:
+ case CASE:
+ case CAST:
+ case COLLATE:
+ case COUNT:
+ case CROSS:
+ case CUBE:
+ case CURRENT:
+ case CURRENT_DATE:
+ case CURRENT_INSTANT:
+ case CURRENT_TIME:
+ case CURRENT_TIMESTAMP:
+ case CYCLE:
+ case DATE:
+ case DATETIME:
+ case DAY:
+ case DEFAULT:
+ case DELETE:
+ case DEPTH:
+ case DESC:
+ case DISTINCT:
+ case ELEMENT:
+ case ELEMENTS:
+ case ELSE:
+ case EMPTY:
+ case END:
+ case ENTRY:
+ case EPOCH:
+ case ERROR:
+ case ESCAPE:
+ case EVERY:
+ case EXCEPT:
+ case EXCLUDE:
+ case EXISTS:
+ case EXTRACT:
+ case FETCH:
+ case FILTER:
+ case FIRST:
+ case FLOOR:
+ case FOLLOWING:
+ case FOR:
+ case FORMAT:
+ case FROM:
+ case FULL:
+ case FUNCTION:
+ case GROUP:
+ case GROUPS:
+ case HAVING:
+ case HOUR:
+ case ID:
+ case IGNORE:
+ case ILIKE:
+ case IN:
+ case INDEX:
+ case INDICES:
+ case INNER:
+ case INSERT:
+ case INSTANT:
+ case INTERSECT:
+ case INTO:
+ case IS:
+ case JOIN:
+ case KEY:
+ case LAST:
+ case LEADING:
+ case LEFT:
+ case LIKE:
+ case LIMIT:
+ case LIST:
+ case LISTAGG:
+ case LOCAL:
+ case LOCAL_DATE:
+ case LOCAL_DATETIME:
+ case LOCAL_TIME:
+ case MAP:
+ case MATERIALIZED:
+ case MAX:
+ case MAXELEMENT:
+ case MAXINDEX:
+ case MEMBER:
+ case MICROSECOND:
+ case MILLISECOND:
+ case MIN:
+ case MINELEMENT:
+ case MININDEX:
+ case MINUTE:
+ case MONTH:
+ case NANOSECOND:
+ case NATURALID:
+ case NEW:
+ case NEXT:
+ case NO:
+ case NOT:
+ case NULLS:
+ case OBJECT:
+ case OF:
+ case OFFSET:
+ case OFFSET_DATETIME:
+ case ON:
+ case ONLY:
+ case OR:
+ case ORDER:
+ case OTHERS:
+ case OUTER:
+ case OVER:
+ case OVERFLOW:
+ case OVERLAY:
+ case PAD:
+ case PARTITION:
+ case PERCENT:
+ case PLACING:
+ case POSITION:
+ case POWER:
+ case PRECEDING:
+ case QUARTER:
+ case RANGE:
+ case RESPECT:
+ case RIGHT:
+ case ROLLUP:
+ case ROW:
+ case ROWS:
+ case SEARCH:
+ case SECOND:
+ case SELECT:
+ case SET:
+ case SIZE:
+ case SOME:
+ case SUBSTRING:
+ case SUM:
+ case THEN:
+ case TIES:
+ case TIME:
+ case TIMESTAMP:
+ case TIMEZONE_HOUR:
+ case TIMEZONE_MINUTE:
+ case TO:
+ case TRAILING:
+ case TREAT:
+ case TRIM:
+ case TRUNC:
+ case TRUNCATE:
+ case TYPE:
+ case UNBOUNDED:
+ case UNION:
+ case UPDATE:
+ case USING:
+ case VALUE:
+ case VALUES:
+ case VERSION:
+ case VERSIONED:
+ case WEEK:
+ case WHEN:
+ case WHERE:
+ case WITH:
+ case WITHIN:
+ case WITHOUT:
+ case YEAR:
+ case IDENTIFICATION_VARIABLE:
+ _localctx = new JoinPathContext(_localctx);
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(422);
+ path();
+ setState(424);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,37,_ctx) ) {
+ case 1:
+ {
+ setState(423);
+ variable();
+ }
+ break;
+ }
+ }
+ break;
+ case T__1:
+ case LATERAL:
+ _localctx = new JoinSubqueryContext(_localctx);
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(427);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==LATERAL) {
+ {
+ setState(426);
+ match(LATERAL);
+ }
+ }
+
+ setState(429);
+ match(T__1);
+ setState(430);
+ subquery();
+ setState(431);
+ match(T__2);
+ setState(433);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,39,_ctx) ) {
+ case 1:
+ {
+ setState(432);
+ variable();
+ }
+ 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 UpdateStatementContext extends ParserRuleContext {
+ public TerminalNode UPDATE() { return getToken(HqlParser.UPDATE, 0); }
+ public TargetEntityContext targetEntity() {
+ return getRuleContext(TargetEntityContext.class,0);
+ }
+ public SetClauseContext setClause() {
+ return getRuleContext(SetClauseContext.class,0);
+ }
+ public TerminalNode VERSIONED() { return getToken(HqlParser.VERSIONED, 0); }
+ public WhereClauseContext whereClause() {
+ return getRuleContext(WhereClauseContext.class,0);
+ }
+ public UpdateStatementContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_updateStatement; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterUpdateStatement(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitUpdateStatement(this);
+ }
+ }
+
+ public final UpdateStatementContext updateStatement() throws RecognitionException {
+ UpdateStatementContext _localctx = new UpdateStatementContext(_ctx, getState());
+ enterRule(_localctx, 40, RULE_updateStatement);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(437);
+ match(UPDATE);
+ setState(439);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,41,_ctx) ) {
+ case 1:
+ {
+ setState(438);
+ match(VERSIONED);
+ }
+ break;
+ }
+ setState(441);
+ targetEntity();
+ setState(442);
+ setClause();
+ setState(444);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==WHERE) {
+ {
+ setState(443);
+ whereClause();
+ }
+ }
+
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class TargetEntityContext extends ParserRuleContext {
+ public EntityNameContext entityName() {
+ return getRuleContext(EntityNameContext.class,0);
+ }
+ public VariableContext variable() {
+ return getRuleContext(VariableContext.class,0);
+ }
+ public TargetEntityContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_targetEntity; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterTargetEntity(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitTargetEntity(this);
+ }
+ }
+
+ public final TargetEntityContext targetEntity() throws RecognitionException {
+ TargetEntityContext _localctx = new TargetEntityContext(_ctx, getState());
+ enterRule(_localctx, 42, RULE_targetEntity);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(446);
+ entityName();
+ setState(448);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,43,_ctx) ) {
+ case 1:
+ {
+ setState(447);
+ variable();
+ }
+ break;
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class SetClauseContext extends ParserRuleContext {
+ public TerminalNode SET() { return getToken(HqlParser.SET, 0); }
+ public List assignment() {
+ return getRuleContexts(AssignmentContext.class);
+ }
+ public AssignmentContext assignment(int i) {
+ return getRuleContext(AssignmentContext.class,i);
+ }
+ public SetClauseContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_setClause; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterSetClause(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitSetClause(this);
+ }
+ }
+
+ public final SetClauseContext setClause() throws RecognitionException {
+ SetClauseContext _localctx = new SetClauseContext(_ctx, getState());
+ enterRule(_localctx, 44, RULE_setClause);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(450);
+ match(SET);
+ setState(451);
+ assignment();
+ setState(456);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==T__0) {
+ {
+ {
+ setState(452);
+ match(T__0);
+ setState(453);
+ assignment();
+ }
+ }
+ setState(458);
+ _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 AssignmentContext extends ParserRuleContext {
+ public SimplePathContext simplePath() {
+ return getRuleContext(SimplePathContext.class,0);
+ }
+ public ExpressionOrPredicateContext expressionOrPredicate() {
+ return getRuleContext(ExpressionOrPredicateContext.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 HqlListener ) ((HqlListener)listener).enterAssignment(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitAssignment(this);
+ }
+ }
+
+ public final AssignmentContext assignment() throws RecognitionException {
+ AssignmentContext _localctx = new AssignmentContext(_ctx, getState());
+ enterRule(_localctx, 46, RULE_assignment);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(459);
+ simplePath();
+ setState(460);
+ match(T__3);
+ setState(461);
+ expressionOrPredicate();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class DeleteStatementContext extends ParserRuleContext {
+ public TerminalNode DELETE() { return getToken(HqlParser.DELETE, 0); }
+ public TargetEntityContext targetEntity() {
+ return getRuleContext(TargetEntityContext.class,0);
+ }
+ public TerminalNode FROM() { return getToken(HqlParser.FROM, 0); }
+ public WhereClauseContext whereClause() {
+ return getRuleContext(WhereClauseContext.class,0);
+ }
+ public DeleteStatementContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_deleteStatement; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterDeleteStatement(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitDeleteStatement(this);
+ }
+ }
+
+ public final DeleteStatementContext deleteStatement() throws RecognitionException {
+ DeleteStatementContext _localctx = new DeleteStatementContext(_ctx, getState());
+ enterRule(_localctx, 48, RULE_deleteStatement);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(463);
+ match(DELETE);
+ setState(465);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,45,_ctx) ) {
+ case 1:
+ {
+ setState(464);
+ match(FROM);
+ }
+ break;
+ }
+ setState(467);
+ targetEntity();
+ setState(469);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==WHERE) {
+ {
+ setState(468);
+ whereClause();
+ }
+ }
+
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class InsertStatementContext extends ParserRuleContext {
+ public TerminalNode INSERT() { return getToken(HqlParser.INSERT, 0); }
+ public TargetEntityContext targetEntity() {
+ return getRuleContext(TargetEntityContext.class,0);
+ }
+ public TargetFieldsContext targetFields() {
+ return getRuleContext(TargetFieldsContext.class,0);
+ }
+ public QueryExpressionContext queryExpression() {
+ return getRuleContext(QueryExpressionContext.class,0);
+ }
+ public ValuesListContext valuesList() {
+ return getRuleContext(ValuesListContext.class,0);
+ }
+ public TerminalNode INTO() { return getToken(HqlParser.INTO, 0); }
+ public InsertStatementContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_insertStatement; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterInsertStatement(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitInsertStatement(this);
+ }
+ }
+
+ public final InsertStatementContext insertStatement() throws RecognitionException {
+ InsertStatementContext _localctx = new InsertStatementContext(_ctx, getState());
+ enterRule(_localctx, 50, RULE_insertStatement);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(471);
+ match(INSERT);
+ setState(473);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,47,_ctx) ) {
+ case 1:
+ {
+ setState(472);
+ match(INTO);
+ }
+ break;
+ }
+ setState(475);
+ targetEntity();
+ setState(476);
+ targetFields();
+ setState(479);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case T__1:
+ case FROM:
+ case SELECT:
+ case WITH:
+ {
+ setState(477);
+ queryExpression();
+ }
+ break;
+ case VALUES:
+ {
+ setState(478);
+ valuesList();
+ }
+ 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 TargetFieldsContext extends ParserRuleContext {
+ public List simplePath() {
+ return getRuleContexts(SimplePathContext.class);
+ }
+ public SimplePathContext simplePath(int i) {
+ return getRuleContext(SimplePathContext.class,i);
+ }
+ public TargetFieldsContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_targetFields; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterTargetFields(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitTargetFields(this);
+ }
+ }
+
+ public final TargetFieldsContext targetFields() throws RecognitionException {
+ TargetFieldsContext _localctx = new TargetFieldsContext(_ctx, getState());
+ enterRule(_localctx, 52, RULE_targetFields);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(481);
+ match(T__1);
+ setState(482);
+ simplePath();
+ setState(487);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==T__0) {
+ {
+ {
+ setState(483);
+ match(T__0);
+ setState(484);
+ simplePath();
+ }
+ }
+ setState(489);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(490);
+ match(T__2);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ValuesListContext extends ParserRuleContext {
+ public TerminalNode VALUES() { return getToken(HqlParser.VALUES, 0); }
+ public List values() {
+ return getRuleContexts(ValuesContext.class);
+ }
+ public ValuesContext values(int i) {
+ return getRuleContext(ValuesContext.class,i);
+ }
+ public ValuesListContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_valuesList; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterValuesList(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitValuesList(this);
+ }
+ }
+
+ public final ValuesListContext valuesList() throws RecognitionException {
+ ValuesListContext _localctx = new ValuesListContext(_ctx, getState());
+ enterRule(_localctx, 54, RULE_valuesList);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(492);
+ match(VALUES);
+ setState(493);
+ values();
+ setState(498);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==T__0) {
+ {
+ {
+ setState(494);
+ match(T__0);
+ setState(495);
+ values();
+ }
+ }
+ setState(500);
+ _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 ValuesContext extends ParserRuleContext {
+ public List expression() {
+ return getRuleContexts(ExpressionContext.class);
+ }
+ public ExpressionContext expression(int i) {
+ return getRuleContext(ExpressionContext.class,i);
+ }
+ public ValuesContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_values; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterValues(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitValues(this);
+ }
+ }
+
+ public final ValuesContext values() throws RecognitionException {
+ ValuesContext _localctx = new ValuesContext(_ctx, getState());
+ enterRule(_localctx, 56, RULE_values);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(501);
+ match(T__1);
+ setState(502);
+ expression(0);
+ setState(507);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==T__0) {
+ {
+ {
+ setState(503);
+ match(T__0);
+ setState(504);
+ expression(0);
+ }
+ }
+ setState(509);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(510);
+ match(T__2);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class InstantiationContext extends ParserRuleContext {
+ public TerminalNode NEW() { return getToken(HqlParser.NEW, 0); }
+ public InstantiationTargetContext instantiationTarget() {
+ return getRuleContext(InstantiationTargetContext.class,0);
+ }
+ public InstantiationArgumentsContext instantiationArguments() {
+ return getRuleContext(InstantiationArgumentsContext.class,0);
+ }
+ public InstantiationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_instantiation; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterInstantiation(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitInstantiation(this);
+ }
+ }
+
+ public final InstantiationContext instantiation() throws RecognitionException {
+ InstantiationContext _localctx = new InstantiationContext(_ctx, getState());
+ enterRule(_localctx, 58, RULE_instantiation);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(512);
+ match(NEW);
+ setState(513);
+ instantiationTarget();
+ setState(514);
+ match(T__1);
+ setState(515);
+ instantiationArguments();
+ setState(516);
+ match(T__2);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class AliasContext extends ParserRuleContext {
+ public IdentifierContext identifier() {
+ return getRuleContext(IdentifierContext.class,0);
+ }
+ public TerminalNode AS() { return getToken(HqlParser.AS, 0); }
+ public AliasContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_alias; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterAlias(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitAlias(this);
+ }
+ }
+
+ public final AliasContext alias() throws RecognitionException {
+ AliasContext _localctx = new AliasContext(_ctx, getState());
+ enterRule(_localctx, 60, RULE_alias);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(519);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,52,_ctx) ) {
+ case 1:
+ {
+ setState(518);
+ match(AS);
+ }
+ break;
+ }
+ setState(521);
+ identifier();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class GroupedItemContext extends ParserRuleContext {
+ public IdentifierContext identifier() {
+ return getRuleContext(IdentifierContext.class,0);
+ }
+ public TerminalNode INTEGER_LITERAL() { return getToken(HqlParser.INTEGER_LITERAL, 0); }
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public GroupedItemContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_groupedItem; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterGroupedItem(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitGroupedItem(this);
+ }
+ }
+
+ public final GroupedItemContext groupedItem() throws RecognitionException {
+ GroupedItemContext _localctx = new GroupedItemContext(_ctx, getState());
+ enterRule(_localctx, 62, RULE_groupedItem);
+ try {
+ setState(526);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,53,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(523);
+ identifier();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(524);
+ match(INTEGER_LITERAL);
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(525);
+ expression(0);
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class SortedItemContext extends ParserRuleContext {
+ public SortExpressionContext sortExpression() {
+ return getRuleContext(SortExpressionContext.class,0);
+ }
+ public SortDirectionContext sortDirection() {
+ return getRuleContext(SortDirectionContext.class,0);
+ }
+ public NullsPrecedenceContext nullsPrecedence() {
+ return getRuleContext(NullsPrecedenceContext.class,0);
+ }
+ public SortedItemContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_sortedItem; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterSortedItem(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitSortedItem(this);
+ }
+ }
+
+ public final SortedItemContext sortedItem() throws RecognitionException {
+ SortedItemContext _localctx = new SortedItemContext(_ctx, getState());
+ enterRule(_localctx, 64, RULE_sortedItem);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(528);
+ sortExpression();
+ setState(530);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==ASC || _la==DESC) {
+ {
+ setState(529);
+ sortDirection();
+ }
+ }
+
+ setState(533);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==NULLS) {
+ {
+ setState(532);
+ nullsPrecedence();
+ }
+ }
+
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class SortExpressionContext extends ParserRuleContext {
+ public IdentifierContext identifier() {
+ return getRuleContext(IdentifierContext.class,0);
+ }
+ public TerminalNode INTEGER_LITERAL() { return getToken(HqlParser.INTEGER_LITERAL, 0); }
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public SortExpressionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_sortExpression; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterSortExpression(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitSortExpression(this);
+ }
+ }
+
+ public final SortExpressionContext sortExpression() throws RecognitionException {
+ SortExpressionContext _localctx = new SortExpressionContext(_ctx, getState());
+ enterRule(_localctx, 66, RULE_sortExpression);
+ try {
+ setState(538);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,56,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(535);
+ identifier();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(536);
+ match(INTEGER_LITERAL);
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(537);
+ expression(0);
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class SortDirectionContext extends ParserRuleContext {
+ public TerminalNode ASC() { return getToken(HqlParser.ASC, 0); }
+ public TerminalNode DESC() { return getToken(HqlParser.DESC, 0); }
+ public SortDirectionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_sortDirection; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterSortDirection(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitSortDirection(this);
+ }
+ }
+
+ public final SortDirectionContext sortDirection() throws RecognitionException {
+ SortDirectionContext _localctx = new SortDirectionContext(_ctx, getState());
+ enterRule(_localctx, 68, RULE_sortDirection);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(540);
+ _la = _input.LA(1);
+ if ( !(_la==ASC || _la==DESC) ) {
+ _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 NullsPrecedenceContext extends ParserRuleContext {
+ public TerminalNode NULLS() { return getToken(HqlParser.NULLS, 0); }
+ public TerminalNode FIRST() { return getToken(HqlParser.FIRST, 0); }
+ public TerminalNode LAST() { return getToken(HqlParser.LAST, 0); }
+ public NullsPrecedenceContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_nullsPrecedence; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterNullsPrecedence(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitNullsPrecedence(this);
+ }
+ }
+
+ public final NullsPrecedenceContext nullsPrecedence() throws RecognitionException {
+ NullsPrecedenceContext _localctx = new NullsPrecedenceContext(_ctx, getState());
+ enterRule(_localctx, 70, RULE_nullsPrecedence);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(542);
+ match(NULLS);
+ setState(543);
+ _la = _input.LA(1);
+ if ( !(_la==FIRST || _la==LAST) ) {
+ _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 LimitClauseContext extends ParserRuleContext {
+ public TerminalNode LIMIT() { return getToken(HqlParser.LIMIT, 0); }
+ public ParameterOrIntegerLiteralContext parameterOrIntegerLiteral() {
+ return getRuleContext(ParameterOrIntegerLiteralContext.class,0);
+ }
+ public LimitClauseContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_limitClause; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterLimitClause(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitLimitClause(this);
+ }
+ }
+
+ public final LimitClauseContext limitClause() throws RecognitionException {
+ LimitClauseContext _localctx = new LimitClauseContext(_ctx, getState());
+ enterRule(_localctx, 72, RULE_limitClause);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(545);
+ match(LIMIT);
+ setState(546);
+ parameterOrIntegerLiteral();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OffsetClauseContext extends ParserRuleContext {
+ public TerminalNode OFFSET() { return getToken(HqlParser.OFFSET, 0); }
+ public ParameterOrIntegerLiteralContext parameterOrIntegerLiteral() {
+ return getRuleContext(ParameterOrIntegerLiteralContext.class,0);
+ }
+ public TerminalNode ROW() { return getToken(HqlParser.ROW, 0); }
+ public TerminalNode ROWS() { return getToken(HqlParser.ROWS, 0); }
+ public OffsetClauseContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_offsetClause; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterOffsetClause(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitOffsetClause(this);
+ }
+ }
+
+ public final OffsetClauseContext offsetClause() throws RecognitionException {
+ OffsetClauseContext _localctx = new OffsetClauseContext(_ctx, getState());
+ enterRule(_localctx, 74, RULE_offsetClause);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(548);
+ match(OFFSET);
+ setState(549);
+ parameterOrIntegerLiteral();
+ setState(551);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==ROW || _la==ROWS) {
+ {
+ setState(550);
+ _la = _input.LA(1);
+ if ( !(_la==ROW || _la==ROWS) ) {
+ _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 FetchClauseContext extends ParserRuleContext {
+ public TerminalNode FETCH() { return getToken(HqlParser.FETCH, 0); }
+ public TerminalNode FIRST() { return getToken(HqlParser.FIRST, 0); }
+ public TerminalNode NEXT() { return getToken(HqlParser.NEXT, 0); }
+ public TerminalNode ROW() { return getToken(HqlParser.ROW, 0); }
+ public TerminalNode ROWS() { return getToken(HqlParser.ROWS, 0); }
+ public ParameterOrIntegerLiteralContext parameterOrIntegerLiteral() {
+ return getRuleContext(ParameterOrIntegerLiteralContext.class,0);
+ }
+ public ParameterOrNumberLiteralContext parameterOrNumberLiteral() {
+ return getRuleContext(ParameterOrNumberLiteralContext.class,0);
+ }
+ public TerminalNode ONLY() { return getToken(HqlParser.ONLY, 0); }
+ public TerminalNode WITH() { return getToken(HqlParser.WITH, 0); }
+ public TerminalNode TIES() { return getToken(HqlParser.TIES, 0); }
+ public FetchClauseContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_fetchClause; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterFetchClause(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitFetchClause(this);
+ }
+ }
+
+ public final FetchClauseContext fetchClause() throws RecognitionException {
+ FetchClauseContext _localctx = new FetchClauseContext(_ctx, getState());
+ enterRule(_localctx, 76, RULE_fetchClause);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(553);
+ match(FETCH);
+ setState(554);
+ _la = _input.LA(1);
+ if ( !(_la==FIRST || _la==NEXT) ) {
+ _errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ setState(559);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,58,_ctx) ) {
+ case 1:
+ {
+ setState(555);
+ parameterOrIntegerLiteral();
+ }
+ break;
+ case 2:
+ {
+ setState(556);
+ parameterOrNumberLiteral();
+ setState(557);
+ match(T__4);
+ }
+ break;
+ }
+ setState(561);
+ _la = _input.LA(1);
+ if ( !(_la==ROW || _la==ROWS) ) {
+ _errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ setState(565);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case ONLY:
+ {
+ setState(562);
+ match(ONLY);
+ }
+ break;
+ case WITH:
+ {
+ setState(563);
+ match(WITH);
+ setState(564);
+ match(TIES);
+ }
+ 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 SubqueryContext extends ParserRuleContext {
+ public QueryExpressionContext queryExpression() {
+ return getRuleContext(QueryExpressionContext.class,0);
+ }
+ public SubqueryContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_subquery; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterSubquery(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitSubquery(this);
+ }
+ }
+
+ public final SubqueryContext subquery() throws RecognitionException {
+ SubqueryContext _localctx = new SubqueryContext(_ctx, getState());
+ enterRule(_localctx, 78, RULE_subquery);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(567);
+ queryExpression();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class SelectClauseContext extends ParserRuleContext {
+ public TerminalNode SELECT() { return getToken(HqlParser.SELECT, 0); }
+ public SelectionListContext selectionList() {
+ return getRuleContext(SelectionListContext.class,0);
+ }
+ public TerminalNode DISTINCT() { return getToken(HqlParser.DISTINCT, 0); }
+ public SelectClauseContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_selectClause; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterSelectClause(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitSelectClause(this);
+ }
+ }
+
+ public final SelectClauseContext selectClause() throws RecognitionException {
+ SelectClauseContext _localctx = new SelectClauseContext(_ctx, getState());
+ enterRule(_localctx, 80, RULE_selectClause);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(569);
+ match(SELECT);
+ setState(571);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,60,_ctx) ) {
+ case 1:
+ {
+ setState(570);
+ match(DISTINCT);
+ }
+ break;
+ }
+ setState(573);
+ selectionList();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class SelectionListContext extends ParserRuleContext {
+ public List selection() {
+ return getRuleContexts(SelectionContext.class);
+ }
+ public SelectionContext selection(int i) {
+ return getRuleContext(SelectionContext.class,i);
+ }
+ public SelectionListContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_selectionList; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterSelectionList(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitSelectionList(this);
+ }
+ }
+
+ public final SelectionListContext selectionList() throws RecognitionException {
+ SelectionListContext _localctx = new SelectionListContext(_ctx, getState());
+ enterRule(_localctx, 82, RULE_selectionList);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(575);
+ selection();
+ setState(580);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==T__0) {
+ {
+ {
+ setState(576);
+ match(T__0);
+ setState(577);
+ selection();
+ }
+ }
+ setState(582);
+ _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 SelectionContext extends ParserRuleContext {
+ public SelectExpressionContext selectExpression() {
+ return getRuleContext(SelectExpressionContext.class,0);
+ }
+ public VariableContext variable() {
+ return getRuleContext(VariableContext.class,0);
+ }
+ public SelectionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_selection; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterSelection(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitSelection(this);
+ }
+ }
+
+ public final SelectionContext selection() throws RecognitionException {
+ SelectionContext _localctx = new SelectionContext(_ctx, getState());
+ enterRule(_localctx, 84, RULE_selection);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(583);
+ selectExpression();
+ setState(585);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,62,_ctx) ) {
+ case 1:
+ {
+ setState(584);
+ variable();
+ }
+ break;
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class SelectExpressionContext extends ParserRuleContext {
+ public InstantiationContext instantiation() {
+ return getRuleContext(InstantiationContext.class,0);
+ }
+ public MapEntrySelectionContext mapEntrySelection() {
+ return getRuleContext(MapEntrySelectionContext.class,0);
+ }
+ public JpaSelectObjectSyntaxContext jpaSelectObjectSyntax() {
+ return getRuleContext(JpaSelectObjectSyntaxContext.class,0);
+ }
+ public ExpressionOrPredicateContext expressionOrPredicate() {
+ return getRuleContext(ExpressionOrPredicateContext.class,0);
+ }
+ public SelectExpressionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_selectExpression; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterSelectExpression(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitSelectExpression(this);
+ }
+ }
+
+ public final SelectExpressionContext selectExpression() throws RecognitionException {
+ SelectExpressionContext _localctx = new SelectExpressionContext(_ctx, getState());
+ enterRule(_localctx, 86, RULE_selectExpression);
+ try {
+ setState(591);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,63,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(587);
+ instantiation();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(588);
+ mapEntrySelection();
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(589);
+ jpaSelectObjectSyntax();
+ }
+ break;
+ case 4:
+ enterOuterAlt(_localctx, 4);
+ {
+ setState(590);
+ expressionOrPredicate();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class MapEntrySelectionContext extends ParserRuleContext {
+ public TerminalNode ENTRY() { return getToken(HqlParser.ENTRY, 0); }
+ public PathContext path() {
+ return getRuleContext(PathContext.class,0);
+ }
+ public MapEntrySelectionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_mapEntrySelection; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterMapEntrySelection(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitMapEntrySelection(this);
+ }
+ }
+
+ public final MapEntrySelectionContext mapEntrySelection() throws RecognitionException {
+ MapEntrySelectionContext _localctx = new MapEntrySelectionContext(_ctx, getState());
+ enterRule(_localctx, 88, RULE_mapEntrySelection);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(593);
+ match(ENTRY);
+ setState(594);
+ match(T__1);
+ setState(595);
+ path();
+ setState(596);
+ match(T__2);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class JpaSelectObjectSyntaxContext extends ParserRuleContext {
+ public TerminalNode OBJECT() { return getToken(HqlParser.OBJECT, 0); }
+ public IdentifierContext identifier() {
+ return getRuleContext(IdentifierContext.class,0);
+ }
+ public JpaSelectObjectSyntaxContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_jpaSelectObjectSyntax; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterJpaSelectObjectSyntax(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitJpaSelectObjectSyntax(this);
+ }
+ }
+
+ public final JpaSelectObjectSyntaxContext jpaSelectObjectSyntax() throws RecognitionException {
+ JpaSelectObjectSyntaxContext _localctx = new JpaSelectObjectSyntaxContext(_ctx, getState());
+ enterRule(_localctx, 90, RULE_jpaSelectObjectSyntax);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(598);
+ match(OBJECT);
+ setState(599);
+ match(T__1);
+ setState(600);
+ identifier();
+ setState(601);
+ match(T__2);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class WhereClauseContext extends ParserRuleContext {
+ public TerminalNode WHERE() { return getToken(HqlParser.WHERE, 0); }
+ public List predicate() {
+ return getRuleContexts(PredicateContext.class);
+ }
+ public PredicateContext predicate(int i) {
+ return getRuleContext(PredicateContext.class,i);
+ }
+ public WhereClauseContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_whereClause; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterWhereClause(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitWhereClause(this);
+ }
+ }
+
+ public final WhereClauseContext whereClause() throws RecognitionException {
+ WhereClauseContext _localctx = new WhereClauseContext(_ctx, getState());
+ enterRule(_localctx, 92, RULE_whereClause);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(603);
+ match(WHERE);
+ setState(604);
+ predicate(0);
+ setState(609);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==T__0) {
+ {
+ {
+ setState(605);
+ match(T__0);
+ setState(606);
+ predicate(0);
+ }
+ }
+ setState(611);
+ _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 JoinTypeContext extends ParserRuleContext {
+ public TerminalNode INNER() { return getToken(HqlParser.INNER, 0); }
+ public TerminalNode OUTER() { return getToken(HqlParser.OUTER, 0); }
+ public TerminalNode LEFT() { return getToken(HqlParser.LEFT, 0); }
+ public TerminalNode RIGHT() { return getToken(HqlParser.RIGHT, 0); }
+ public TerminalNode FULL() { return getToken(HqlParser.FULL, 0); }
+ public TerminalNode CROSS() { return getToken(HqlParser.CROSS, 0); }
+ public JoinTypeContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_joinType; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterJoinType(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitJoinType(this);
+ }
+ }
+
+ public final JoinTypeContext joinType() throws RecognitionException {
+ JoinTypeContext _localctx = new JoinTypeContext(_ctx, getState());
+ enterRule(_localctx, 94, RULE_joinType);
+ int _la;
+ try {
+ setState(622);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,68,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(613);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==INNER) {
+ {
+ setState(612);
+ match(INNER);
+ }
+ }
+
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(616);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==FULL || _la==LEFT || _la==RIGHT) {
+ {
+ setState(615);
+ _la = _input.LA(1);
+ if ( !(_la==FULL || _la==LEFT || _la==RIGHT) ) {
+ _errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ }
+ }
+
+ setState(619);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==OUTER) {
+ {
+ setState(618);
+ match(OUTER);
+ }
+ }
+
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(621);
+ match(CROSS);
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class CrossJoinContext extends ParserRuleContext {
+ public TerminalNode CROSS() { return getToken(HqlParser.CROSS, 0); }
+ public TerminalNode JOIN() { return getToken(HqlParser.JOIN, 0); }
+ public EntityNameContext entityName() {
+ return getRuleContext(EntityNameContext.class,0);
+ }
+ public VariableContext variable() {
+ return getRuleContext(VariableContext.class,0);
+ }
+ public CrossJoinContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_crossJoin; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterCrossJoin(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitCrossJoin(this);
+ }
+ }
+
+ public final CrossJoinContext crossJoin() throws RecognitionException {
+ CrossJoinContext _localctx = new CrossJoinContext(_ctx, getState());
+ enterRule(_localctx, 96, RULE_crossJoin);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(624);
+ match(CROSS);
+ setState(625);
+ match(JOIN);
+ setState(626);
+ entityName();
+ setState(628);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,69,_ctx) ) {
+ case 1:
+ {
+ setState(627);
+ variable();
+ }
+ break;
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class JoinRestrictionContext extends ParserRuleContext {
+ public PredicateContext predicate() {
+ return getRuleContext(PredicateContext.class,0);
+ }
+ public TerminalNode ON() { return getToken(HqlParser.ON, 0); }
+ public TerminalNode WITH() { return getToken(HqlParser.WITH, 0); }
+ public JoinRestrictionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_joinRestriction; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterJoinRestriction(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitJoinRestriction(this);
+ }
+ }
+
+ public final JoinRestrictionContext joinRestriction() throws RecognitionException {
+ JoinRestrictionContext _localctx = new JoinRestrictionContext(_ctx, getState());
+ enterRule(_localctx, 98, RULE_joinRestriction);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(630);
+ _la = _input.LA(1);
+ if ( !(_la==ON || _la==WITH) ) {
+ _errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ setState(631);
+ predicate(0);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class JpaCollectionJoinContext extends ParserRuleContext {
+ public TerminalNode IN() { return getToken(HqlParser.IN, 0); }
+ public PathContext path() {
+ return getRuleContext(PathContext.class,0);
+ }
+ public VariableContext variable() {
+ return getRuleContext(VariableContext.class,0);
+ }
+ public JpaCollectionJoinContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_jpaCollectionJoin; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterJpaCollectionJoin(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitJpaCollectionJoin(this);
+ }
+ }
+
+ public final JpaCollectionJoinContext jpaCollectionJoin() throws RecognitionException {
+ JpaCollectionJoinContext _localctx = new JpaCollectionJoinContext(_ctx, getState());
+ enterRule(_localctx, 100, RULE_jpaCollectionJoin);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(633);
+ match(T__0);
+ setState(634);
+ match(IN);
+ setState(635);
+ match(T__1);
+ setState(636);
+ path();
+ setState(637);
+ match(T__2);
+ setState(639);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,70,_ctx) ) {
+ case 1:
+ {
+ setState(638);
+ variable();
+ }
+ break;
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class GroupByClauseContext extends ParserRuleContext {
+ public TerminalNode GROUP() { return getToken(HqlParser.GROUP, 0); }
+ public TerminalNode BY() { return getToken(HqlParser.BY, 0); }
+ public List groupedItem() {
+ return getRuleContexts(GroupedItemContext.class);
+ }
+ public GroupedItemContext groupedItem(int i) {
+ return getRuleContext(GroupedItemContext.class,i);
+ }
+ public GroupByClauseContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_groupByClause; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterGroupByClause(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitGroupByClause(this);
+ }
+ }
+
+ public final GroupByClauseContext groupByClause() throws RecognitionException {
+ GroupByClauseContext _localctx = new GroupByClauseContext(_ctx, getState());
+ enterRule(_localctx, 102, RULE_groupByClause);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(641);
+ match(GROUP);
+ setState(642);
+ match(BY);
+ setState(643);
+ groupedItem();
+ setState(648);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==T__0) {
+ {
+ {
+ setState(644);
+ match(T__0);
+ setState(645);
+ groupedItem();
+ }
+ }
+ setState(650);
+ _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 OrderByClauseContext extends ParserRuleContext {
+ public TerminalNode ORDER() { return getToken(HqlParser.ORDER, 0); }
+ public TerminalNode BY() { return getToken(HqlParser.BY, 0); }
+ public List sortedItem() {
+ return getRuleContexts(SortedItemContext.class);
+ }
+ public SortedItemContext sortedItem(int i) {
+ return getRuleContext(SortedItemContext.class,i);
+ }
+ public OrderByClauseContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_orderByClause; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterOrderByClause(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitOrderByClause(this);
+ }
+ }
+
+ public final OrderByClauseContext orderByClause() throws RecognitionException {
+ OrderByClauseContext _localctx = new OrderByClauseContext(_ctx, getState());
+ enterRule(_localctx, 104, RULE_orderByClause);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(651);
+ match(ORDER);
+ setState(652);
+ match(BY);
+ setState(653);
+ sortedItem();
+ setState(658);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==T__0) {
+ {
+ {
+ setState(654);
+ match(T__0);
+ setState(655);
+ sortedItem();
+ }
+ }
+ setState(660);
+ _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 HavingClauseContext extends ParserRuleContext {
+ public TerminalNode HAVING() { return getToken(HqlParser.HAVING, 0); }
+ public List predicate() {
+ return getRuleContexts(PredicateContext.class);
+ }
+ public PredicateContext predicate(int i) {
+ return getRuleContext(PredicateContext.class,i);
+ }
+ public HavingClauseContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_havingClause; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterHavingClause(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitHavingClause(this);
+ }
+ }
+
+ public final HavingClauseContext havingClause() throws RecognitionException {
+ HavingClauseContext _localctx = new HavingClauseContext(_ctx, getState());
+ enterRule(_localctx, 106, RULE_havingClause);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(661);
+ match(HAVING);
+ setState(662);
+ predicate(0);
+ setState(667);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==T__0) {
+ {
+ {
+ setState(663);
+ match(T__0);
+ setState(664);
+ predicate(0);
+ }
+ }
+ setState(669);
+ _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 SetOperatorContext extends ParserRuleContext {
+ public TerminalNode UNION() { return getToken(HqlParser.UNION, 0); }
+ public TerminalNode ALL() { return getToken(HqlParser.ALL, 0); }
+ public TerminalNode INTERSECT() { return getToken(HqlParser.INTERSECT, 0); }
+ public TerminalNode EXCEPT() { return getToken(HqlParser.EXCEPT, 0); }
+ public SetOperatorContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_setOperator; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterSetOperator(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitSetOperator(this);
+ }
+ }
+
+ public final SetOperatorContext setOperator() throws RecognitionException {
+ SetOperatorContext _localctx = new SetOperatorContext(_ctx, getState());
+ enterRule(_localctx, 108, RULE_setOperator);
+ int _la;
+ try {
+ setState(682);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case UNION:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(670);
+ match(UNION);
+ setState(672);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==ALL) {
+ {
+ setState(671);
+ match(ALL);
+ }
+ }
+
+ }
+ break;
+ case INTERSECT:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(674);
+ match(INTERSECT);
+ setState(676);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==ALL) {
+ {
+ setState(675);
+ match(ALL);
+ }
+ }
+
+ }
+ break;
+ case EXCEPT:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(678);
+ match(EXCEPT);
+ setState(680);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==ALL) {
+ {
+ setState(679);
+ match(ALL);
+ }
+ }
+
+ }
+ 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 LiteralContext extends ParserRuleContext {
+ public TerminalNode NULL() { return getToken(HqlParser.NULL, 0); }
+ public BooleanLiteralContext booleanLiteral() {
+ return getRuleContext(BooleanLiteralContext.class,0);
+ }
+ public StringLiteralContext stringLiteral() {
+ return getRuleContext(StringLiteralContext.class,0);
+ }
+ public NumericLiteralContext numericLiteral() {
+ return getRuleContext(NumericLiteralContext.class,0);
+ }
+ public DateTimeLiteralContext dateTimeLiteral() {
+ return getRuleContext(DateTimeLiteralContext.class,0);
+ }
+ public BinaryLiteralContext binaryLiteral() {
+ return getRuleContext(BinaryLiteralContext.class,0);
+ }
+ public LiteralContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_literal; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterLiteral(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitLiteral(this);
+ }
+ }
+
+ public final LiteralContext literal() throws RecognitionException {
+ LiteralContext _localctx = new LiteralContext(_ctx, getState());
+ enterRule(_localctx, 110, RULE_literal);
+ try {
+ setState(690);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case NULL:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(684);
+ match(NULL);
+ }
+ break;
+ case FALSE:
+ case TRUE:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(685);
+ booleanLiteral();
+ }
+ break;
+ case CHARACTER:
+ case STRINGLITERAL:
+ case JAVASTRINGLITERAL:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(686);
+ stringLiteral();
+ }
+ break;
+ case INTEGER_LITERAL:
+ case FLOAT_LITERAL:
+ case HEXLITERAL:
+ enterOuterAlt(_localctx, 4);
+ {
+ setState(687);
+ numericLiteral();
+ }
+ break;
+ case CURRENT:
+ case CURRENT_DATE:
+ case CURRENT_TIME:
+ case CURRENT_TIMESTAMP:
+ case INSTANT:
+ case LOCAL:
+ case LOCAL_DATE:
+ case LOCAL_DATETIME:
+ case LOCAL_TIME:
+ case OFFSET:
+ case OFFSET_DATETIME:
+ enterOuterAlt(_localctx, 5);
+ {
+ setState(688);
+ dateTimeLiteral();
+ }
+ break;
+ case T__5:
+ case BINARY_LITERAL:
+ enterOuterAlt(_localctx, 6);
+ {
+ setState(689);
+ binaryLiteral();
+ }
+ 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 BooleanLiteralContext extends ParserRuleContext {
+ public TerminalNode TRUE() { return getToken(HqlParser.TRUE, 0); }
+ public TerminalNode FALSE() { return getToken(HqlParser.FALSE, 0); }
+ public BooleanLiteralContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_booleanLiteral; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterBooleanLiteral(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitBooleanLiteral(this);
+ }
+ }
+
+ public final BooleanLiteralContext booleanLiteral() throws RecognitionException {
+ BooleanLiteralContext _localctx = new BooleanLiteralContext(_ctx, getState());
+ enterRule(_localctx, 112, RULE_booleanLiteral);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(692);
+ _la = _input.LA(1);
+ if ( !(_la==FALSE || _la==TRUE) ) {
+ _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 StringLiteralContext extends ParserRuleContext {
+ public TerminalNode STRINGLITERAL() { return getToken(HqlParser.STRINGLITERAL, 0); }
+ public TerminalNode JAVASTRINGLITERAL() { return getToken(HqlParser.JAVASTRINGLITERAL, 0); }
+ public TerminalNode CHARACTER() { return getToken(HqlParser.CHARACTER, 0); }
+ public StringLiteralContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_stringLiteral; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterStringLiteral(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitStringLiteral(this);
+ }
+ }
+
+ public final StringLiteralContext stringLiteral() throws RecognitionException {
+ StringLiteralContext _localctx = new StringLiteralContext(_ctx, getState());
+ enterRule(_localctx, 114, RULE_stringLiteral);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(694);
+ _la = _input.LA(1);
+ if ( !(((((_la - 200)) & ~0x3f) == 0 && ((1L << (_la - 200)) & 7L) != 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 NumericLiteralContext extends ParserRuleContext {
+ public TerminalNode INTEGER_LITERAL() { return getToken(HqlParser.INTEGER_LITERAL, 0); }
+ public TerminalNode FLOAT_LITERAL() { return getToken(HqlParser.FLOAT_LITERAL, 0); }
+ public TerminalNode HEXLITERAL() { return getToken(HqlParser.HEXLITERAL, 0); }
+ public NumericLiteralContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_numericLiteral; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterNumericLiteral(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitNumericLiteral(this);
+ }
+ }
+
+ public final NumericLiteralContext numericLiteral() throws RecognitionException {
+ NumericLiteralContext _localctx = new NumericLiteralContext(_ctx, getState());
+ enterRule(_localctx, 116, RULE_numericLiteral);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(696);
+ _la = _input.LA(1);
+ if ( !(((((_la - 203)) & ~0x3f) == 0 && ((1L << (_la - 203)) & 7L) != 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 DateTimeLiteralContext extends ParserRuleContext {
+ public TerminalNode LOCAL_DATE() { return getToken(HqlParser.LOCAL_DATE, 0); }
+ public TerminalNode LOCAL_TIME() { return getToken(HqlParser.LOCAL_TIME, 0); }
+ public TerminalNode LOCAL_DATETIME() { return getToken(HqlParser.LOCAL_DATETIME, 0); }
+ public TerminalNode CURRENT_DATE() { return getToken(HqlParser.CURRENT_DATE, 0); }
+ public TerminalNode CURRENT_TIME() { return getToken(HqlParser.CURRENT_TIME, 0); }
+ public TerminalNode CURRENT_TIMESTAMP() { return getToken(HqlParser.CURRENT_TIMESTAMP, 0); }
+ public TerminalNode OFFSET_DATETIME() { return getToken(HqlParser.OFFSET_DATETIME, 0); }
+ public TerminalNode DATE() { return getToken(HqlParser.DATE, 0); }
+ public TerminalNode LOCAL() { return getToken(HqlParser.LOCAL, 0); }
+ public TerminalNode CURRENT() { return getToken(HqlParser.CURRENT, 0); }
+ public TerminalNode TIME() { return getToken(HqlParser.TIME, 0); }
+ public TerminalNode DATETIME() { return getToken(HqlParser.DATETIME, 0); }
+ public TerminalNode OFFSET() { return getToken(HqlParser.OFFSET, 0); }
+ public TerminalNode INSTANT() { return getToken(HqlParser.INSTANT, 0); }
+ public DateTimeLiteralContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_dateTimeLiteral; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterDateTimeLiteral(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitDateTimeLiteral(this);
+ }
+ }
+
+ public final DateTimeLiteralContext dateTimeLiteral() throws RecognitionException {
+ DateTimeLiteralContext _localctx = new DateTimeLiteralContext(_ctx, getState());
+ enterRule(_localctx, 118, RULE_dateTimeLiteral);
+ int _la;
+ try {
+ setState(712);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,79,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(698);
+ match(LOCAL_DATE);
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(699);
+ match(LOCAL_TIME);
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(700);
+ match(LOCAL_DATETIME);
+ }
+ break;
+ case 4:
+ enterOuterAlt(_localctx, 4);
+ {
+ setState(701);
+ match(CURRENT_DATE);
+ }
+ break;
+ case 5:
+ enterOuterAlt(_localctx, 5);
+ {
+ setState(702);
+ match(CURRENT_TIME);
+ }
+ break;
+ case 6:
+ enterOuterAlt(_localctx, 6);
+ {
+ setState(703);
+ match(CURRENT_TIMESTAMP);
+ }
+ break;
+ case 7:
+ enterOuterAlt(_localctx, 7);
+ {
+ setState(704);
+ match(OFFSET_DATETIME);
+ }
+ break;
+ case 8:
+ enterOuterAlt(_localctx, 8);
+ {
+ setState(705);
+ _la = _input.LA(1);
+ if ( !(_la==CURRENT || _la==LOCAL) ) {
+ _errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ setState(706);
+ match(DATE);
+ }
+ break;
+ case 9:
+ enterOuterAlt(_localctx, 9);
+ {
+ setState(707);
+ _la = _input.LA(1);
+ if ( !(_la==CURRENT || _la==LOCAL) ) {
+ _errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ setState(708);
+ match(TIME);
+ }
+ break;
+ case 10:
+ enterOuterAlt(_localctx, 10);
+ {
+ setState(709);
+ _la = _input.LA(1);
+ if ( !(_la==CURRENT || _la==LOCAL || _la==OFFSET) ) {
+ _errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ setState(710);
+ match(DATETIME);
+ }
+ break;
+ case 11:
+ enterOuterAlt(_localctx, 11);
+ {
+ setState(711);
+ match(INSTANT);
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class DatetimeFieldContext extends ParserRuleContext {
+ public TerminalNode YEAR() { return getToken(HqlParser.YEAR, 0); }
+ public TerminalNode MONTH() { return getToken(HqlParser.MONTH, 0); }
+ public TerminalNode DAY() { return getToken(HqlParser.DAY, 0); }
+ public TerminalNode WEEK() { return getToken(HqlParser.WEEK, 0); }
+ public TerminalNode QUARTER() { return getToken(HqlParser.QUARTER, 0); }
+ public TerminalNode HOUR() { return getToken(HqlParser.HOUR, 0); }
+ public TerminalNode MINUTE() { return getToken(HqlParser.MINUTE, 0); }
+ public TerminalNode SECOND() { return getToken(HqlParser.SECOND, 0); }
+ public TerminalNode NANOSECOND() { return getToken(HqlParser.NANOSECOND, 0); }
+ public TerminalNode EPOCH() { return getToken(HqlParser.EPOCH, 0); }
+ public DatetimeFieldContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_datetimeField; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterDatetimeField(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitDatetimeField(this);
+ }
+ }
+
+ public final DatetimeFieldContext datetimeField() throws RecognitionException {
+ DatetimeFieldContext _localctx = new DatetimeFieldContext(_ctx, getState());
+ enterRule(_localctx, 120, RULE_datetimeField);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(714);
+ _la = _input.LA(1);
+ if ( !(_la==DAY || _la==EPOCH || ((((_la - 87)) & ~0x3f) == 0 && ((1L << (_la - 87)) & 3848290697217L) != 0) || ((((_la - 156)) & ~0x3f) == 0 && ((1L << (_la - 156)) & 8933531975937L) != 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 BinaryLiteralContext extends ParserRuleContext {
+ public TerminalNode BINARY_LITERAL() { return getToken(HqlParser.BINARY_LITERAL, 0); }
+ public List HEXLITERAL() { return getTokens(HqlParser.HEXLITERAL); }
+ public TerminalNode HEXLITERAL(int i) {
+ return getToken(HqlParser.HEXLITERAL, i);
+ }
+ public BinaryLiteralContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_binaryLiteral; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterBinaryLiteral(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitBinaryLiteral(this);
+ }
+ }
+
+ public final BinaryLiteralContext binaryLiteral() throws RecognitionException {
+ BinaryLiteralContext _localctx = new BinaryLiteralContext(_ctx, getState());
+ enterRule(_localctx, 122, RULE_binaryLiteral);
+ int _la;
+ try {
+ setState(727);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case BINARY_LITERAL:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(716);
+ match(BINARY_LITERAL);
+ }
+ break;
+ case T__5:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(717);
+ match(T__5);
+ setState(718);
+ match(HEXLITERAL);
+ setState(723);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==T__0) {
+ {
+ {
+ setState(719);
+ match(T__0);
+ setState(720);
+ match(HEXLITERAL);
+ }
+ }
+ setState(725);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(726);
+ match(T__6);
+ }
+ 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 ExpressionContext extends ParserRuleContext {
+ public ExpressionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_expression; }
+
+ public ExpressionContext() { }
+ public void copyFrom(ExpressionContext ctx) {
+ super.copyFrom(ctx);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class AdditionExpressionContext extends ExpressionContext {
+ public Token op;
+ public List expression() {
+ return getRuleContexts(ExpressionContext.class);
+ }
+ public ExpressionContext expression(int i) {
+ return getRuleContext(ExpressionContext.class,i);
+ }
+ public AdditionExpressionContext(ExpressionContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterAdditionExpression(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitAdditionExpression(this);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class FromDurationExpressionContext extends ExpressionContext {
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public TerminalNode BY() { return getToken(HqlParser.BY, 0); }
+ public DatetimeFieldContext datetimeField() {
+ return getRuleContext(DatetimeFieldContext.class,0);
+ }
+ public FromDurationExpressionContext(ExpressionContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterFromDurationExpression(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitFromDurationExpression(this);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class PlainPrimaryExpressionContext extends ExpressionContext {
+ public PrimaryExpressionContext primaryExpression() {
+ return getRuleContext(PrimaryExpressionContext.class,0);
+ }
+ public PlainPrimaryExpressionContext(ExpressionContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterPlainPrimaryExpression(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitPlainPrimaryExpression(this);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class TupleExpressionContext extends ExpressionContext {
+ public List expressionOrPredicate() {
+ return getRuleContexts(ExpressionOrPredicateContext.class);
+ }
+ public ExpressionOrPredicateContext expressionOrPredicate(int i) {
+ return getRuleContext(ExpressionOrPredicateContext.class,i);
+ }
+ public TupleExpressionContext(ExpressionContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterTupleExpression(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitTupleExpression(this);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class GroupedExpressionContext extends ExpressionContext {
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public GroupedExpressionContext(ExpressionContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterGroupedExpression(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitGroupedExpression(this);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class SignedNumericLiteralContext extends ExpressionContext {
+ public Token op;
+ public NumericLiteralContext numericLiteral() {
+ return getRuleContext(NumericLiteralContext.class,0);
+ }
+ public SignedNumericLiteralContext(ExpressionContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterSignedNumericLiteral(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitSignedNumericLiteral(this);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class ToDurationExpressionContext extends ExpressionContext {
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public DatetimeFieldContext datetimeField() {
+ return getRuleContext(DatetimeFieldContext.class,0);
+ }
+ public ToDurationExpressionContext(ExpressionContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterToDurationExpression(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitToDurationExpression(this);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class SubqueryExpressionContext extends ExpressionContext {
+ public SubqueryContext subquery() {
+ return getRuleContext(SubqueryContext.class,0);
+ }
+ public SubqueryExpressionContext(ExpressionContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterSubqueryExpression(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitSubqueryExpression(this);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class DayOfMonthExpressionContext extends ExpressionContext {
+ public TerminalNode DAY() { return getToken(HqlParser.DAY, 0); }
+ public TerminalNode OF() { return getToken(HqlParser.OF, 0); }
+ public TerminalNode MONTH() { return getToken(HqlParser.MONTH, 0); }
+ public DayOfMonthExpressionContext(ExpressionContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterDayOfMonthExpression(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitDayOfMonthExpression(this);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class DayOfWeekExpressionContext extends ExpressionContext {
+ public TerminalNode DAY() { return getToken(HqlParser.DAY, 0); }
+ public TerminalNode OF() { return getToken(HqlParser.OF, 0); }
+ public TerminalNode WEEK() { return getToken(HqlParser.WEEK, 0); }
+ public DayOfWeekExpressionContext(ExpressionContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterDayOfWeekExpression(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitDayOfWeekExpression(this);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class WeekOfYearExpressionContext extends ExpressionContext {
+ public TerminalNode WEEK() { return getToken(HqlParser.WEEK, 0); }
+ public TerminalNode OF() { return getToken(HqlParser.OF, 0); }
+ public TerminalNode YEAR() { return getToken(HqlParser.YEAR, 0); }
+ public WeekOfYearExpressionContext(ExpressionContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterWeekOfYearExpression(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitWeekOfYearExpression(this);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class HqlConcatenationExpressionContext extends ExpressionContext {
+ public List expression() {
+ return getRuleContexts(ExpressionContext.class);
+ }
+ public ExpressionContext expression(int i) {
+ return getRuleContext(ExpressionContext.class,i);
+ }
+ public HqlConcatenationExpressionContext(ExpressionContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterHqlConcatenationExpression(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitHqlConcatenationExpression(this);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class MultiplicationExpressionContext extends ExpressionContext {
+ public Token op;
+ public List expression() {
+ return getRuleContexts(ExpressionContext.class);
+ }
+ public ExpressionContext expression(int i) {
+ return getRuleContext(ExpressionContext.class,i);
+ }
+ public TerminalNode ASTERISK() { return getToken(HqlParser.ASTERISK, 0); }
+ public MultiplicationExpressionContext(ExpressionContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterMultiplicationExpression(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitMultiplicationExpression(this);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class SignedExpressionContext extends ExpressionContext {
+ public Token op;
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public SignedExpressionContext(ExpressionContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterSignedExpression(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitSignedExpression(this);
+ }
+ }
+
+ public final ExpressionContext expression() throws RecognitionException {
+ return expression(0);
+ }
+
+ private ExpressionContext expression(int _p) throws RecognitionException {
+ ParserRuleContext _parentctx = _ctx;
+ int _parentState = getState();
+ ExpressionContext _localctx = new ExpressionContext(_ctx, _parentState);
+ ExpressionContext _prevctx = _localctx;
+ int _startState = 124;
+ enterRecursionRule(_localctx, 124, RULE_expression, _p);
+ int _la;
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(762);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,83,_ctx) ) {
+ case 1:
+ {
+ _localctx = new GroupedExpressionContext(_localctx);
+ _ctx = _localctx;
+ _prevctx = _localctx;
+
+ setState(730);
+ match(T__1);
+ setState(731);
+ expression(0);
+ setState(732);
+ match(T__2);
+ }
+ break;
+ case 2:
+ {
+ _localctx = new TupleExpressionContext(_localctx);
+ _ctx = _localctx;
+ _prevctx = _localctx;
+ setState(734);
+ match(T__1);
+ setState(735);
+ expressionOrPredicate();
+ setState(738);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ do {
+ {
+ {
+ setState(736);
+ match(T__0);
+ setState(737);
+ expressionOrPredicate();
+ }
+ }
+ setState(740);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ } while ( _la==T__0 );
+ setState(742);
+ match(T__2);
+ }
+ break;
+ case 3:
+ {
+ _localctx = new SubqueryExpressionContext(_localctx);
+ _ctx = _localctx;
+ _prevctx = _localctx;
+ setState(744);
+ match(T__1);
+ setState(745);
+ subquery();
+ setState(746);
+ match(T__2);
+ }
+ break;
+ case 4:
+ {
+ _localctx = new PlainPrimaryExpressionContext(_localctx);
+ _ctx = _localctx;
+ _prevctx = _localctx;
+ setState(748);
+ primaryExpression();
+ }
+ break;
+ case 5:
+ {
+ _localctx = new SignedNumericLiteralContext(_localctx);
+ _ctx = _localctx;
+ _prevctx = _localctx;
+ setState(749);
+ ((SignedNumericLiteralContext)_localctx).op = _input.LT(1);
+ _la = _input.LA(1);
+ if ( !(_la==T__7 || _la==T__8) ) {
+ ((SignedNumericLiteralContext)_localctx).op = (Token)_errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ setState(750);
+ numericLiteral();
+ }
+ break;
+ case 6:
+ {
+ _localctx = new SignedExpressionContext(_localctx);
+ _ctx = _localctx;
+ _prevctx = _localctx;
+ setState(751);
+ ((SignedExpressionContext)_localctx).op = _input.LT(1);
+ _la = _input.LA(1);
+ if ( !(_la==T__7 || _la==T__8) ) {
+ ((SignedExpressionContext)_localctx).op = (Token)_errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ setState(752);
+ expression(9);
+ }
+ break;
+ case 7:
+ {
+ _localctx = new DayOfWeekExpressionContext(_localctx);
+ _ctx = _localctx;
+ _prevctx = _localctx;
+ setState(753);
+ match(DAY);
+ setState(754);
+ match(OF);
+ setState(755);
+ match(WEEK);
+ }
+ break;
+ case 8:
+ {
+ _localctx = new DayOfMonthExpressionContext(_localctx);
+ _ctx = _localctx;
+ _prevctx = _localctx;
+ setState(756);
+ match(DAY);
+ setState(757);
+ match(OF);
+ setState(758);
+ match(MONTH);
+ }
+ break;
+ case 9:
+ {
+ _localctx = new WeekOfYearExpressionContext(_localctx);
+ _ctx = _localctx;
+ _prevctx = _localctx;
+ setState(759);
+ match(WEEK);
+ setState(760);
+ match(OF);
+ setState(761);
+ match(YEAR);
+ }
+ break;
+ }
+ _ctx.stop = _input.LT(-1);
+ setState(780);
+ _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 ) {
+ if ( _parseListeners!=null ) triggerExitRuleEvent();
+ _prevctx = _localctx;
+ {
+ setState(778);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,84,_ctx) ) {
+ case 1:
+ {
+ _localctx = new MultiplicationExpressionContext(new ExpressionContext(_parentctx, _parentState));
+ pushNewRecursionContext(_localctx, _startState, RULE_expression);
+ setState(764);
+ if (!(precpred(_ctx, 6))) throw new FailedPredicateException(this, "precpred(_ctx, 6)");
+ setState(765);
+ ((MultiplicationExpressionContext)_localctx).op = _input.LT(1);
+ _la = _input.LA(1);
+ if ( !(_la==T__9 || _la==ASTERISK) ) {
+ ((MultiplicationExpressionContext)_localctx).op = (Token)_errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ setState(766);
+ expression(7);
+ }
+ break;
+ case 2:
+ {
+ _localctx = new AdditionExpressionContext(new ExpressionContext(_parentctx, _parentState));
+ pushNewRecursionContext(_localctx, _startState, RULE_expression);
+ setState(767);
+ if (!(precpred(_ctx, 5))) throw new FailedPredicateException(this, "precpred(_ctx, 5)");
+ setState(768);
+ ((AdditionExpressionContext)_localctx).op = _input.LT(1);
+ _la = _input.LA(1);
+ if ( !(_la==T__7 || _la==T__8) ) {
+ ((AdditionExpressionContext)_localctx).op = (Token)_errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ setState(769);
+ expression(6);
+ }
+ break;
+ case 3:
+ {
+ _localctx = new HqlConcatenationExpressionContext(new ExpressionContext(_parentctx, _parentState));
+ pushNewRecursionContext(_localctx, _startState, RULE_expression);
+ setState(770);
+ if (!(precpred(_ctx, 4))) throw new FailedPredicateException(this, "precpred(_ctx, 4)");
+ setState(771);
+ match(T__10);
+ setState(772);
+ expression(5);
+ }
+ break;
+ case 4:
+ {
+ _localctx = new ToDurationExpressionContext(new ExpressionContext(_parentctx, _parentState));
+ pushNewRecursionContext(_localctx, _startState, RULE_expression);
+ setState(773);
+ if (!(precpred(_ctx, 8))) throw new FailedPredicateException(this, "precpred(_ctx, 8)");
+ setState(774);
+ datetimeField();
+ }
+ break;
+ case 5:
+ {
+ _localctx = new FromDurationExpressionContext(new ExpressionContext(_parentctx, _parentState));
+ pushNewRecursionContext(_localctx, _startState, RULE_expression);
+ setState(775);
+ if (!(precpred(_ctx, 7))) throw new FailedPredicateException(this, "precpred(_ctx, 7)");
+ setState(776);
+ match(BY);
+ setState(777);
+ datetimeField();
+ }
+ break;
+ }
+ }
+ }
+ setState(782);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,85,_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 PrimaryExpressionContext extends ParserRuleContext {
+ public PrimaryExpressionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_primaryExpression; }
+
+ public PrimaryExpressionContext() { }
+ public void copyFrom(PrimaryExpressionContext ctx) {
+ super.copyFrom(ctx);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class FunctionExpressionContext extends PrimaryExpressionContext {
+ public FunctionContext function() {
+ return getRuleContext(FunctionContext.class,0);
+ }
+ public FunctionExpressionContext(PrimaryExpressionContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterFunctionExpression(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitFunctionExpression(this);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class LiteralExpressionContext extends PrimaryExpressionContext {
+ public LiteralContext literal() {
+ return getRuleContext(LiteralContext.class,0);
+ }
+ public LiteralExpressionContext(PrimaryExpressionContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterLiteralExpression(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitLiteralExpression(this);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class ParameterExpressionContext extends PrimaryExpressionContext {
+ public ParameterContext parameter() {
+ return getRuleContext(ParameterContext.class,0);
+ }
+ public ParameterExpressionContext(PrimaryExpressionContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterParameterExpression(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitParameterExpression(this);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class GeneralPathExpressionContext extends PrimaryExpressionContext {
+ public GeneralPathFragmentContext generalPathFragment() {
+ return getRuleContext(GeneralPathFragmentContext.class,0);
+ }
+ public GeneralPathExpressionContext(PrimaryExpressionContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterGeneralPathExpression(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitGeneralPathExpression(this);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class CaseExpressionContext extends PrimaryExpressionContext {
+ public CaseListContext caseList() {
+ return getRuleContext(CaseListContext.class,0);
+ }
+ public CaseExpressionContext(PrimaryExpressionContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterCaseExpression(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitCaseExpression(this);
+ }
+ }
+
+ public final PrimaryExpressionContext primaryExpression() throws RecognitionException {
+ PrimaryExpressionContext _localctx = new PrimaryExpressionContext(_ctx, getState());
+ enterRule(_localctx, 126, RULE_primaryExpression);
+ try {
+ setState(788);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,86,_ctx) ) {
+ case 1:
+ _localctx = new CaseExpressionContext(_localctx);
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(783);
+ caseList();
+ }
+ break;
+ case 2:
+ _localctx = new LiteralExpressionContext(_localctx);
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(784);
+ literal();
+ }
+ break;
+ case 3:
+ _localctx = new ParameterExpressionContext(_localctx);
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(785);
+ parameter();
+ }
+ break;
+ case 4:
+ _localctx = new FunctionExpressionContext(_localctx);
+ enterOuterAlt(_localctx, 4);
+ {
+ setState(786);
+ function();
+ }
+ break;
+ case 5:
+ _localctx = new GeneralPathExpressionContext(_localctx);
+ enterOuterAlt(_localctx, 5);
+ {
+ setState(787);
+ generalPathFragment();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class IdentificationVariableContext extends ParserRuleContext {
+ public IdentifierContext identifier() {
+ return getRuleContext(IdentifierContext.class,0);
+ }
+ public SimplePathContext simplePath() {
+ return getRuleContext(SimplePathContext.class,0);
+ }
+ public IdentificationVariableContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_identificationVariable; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterIdentificationVariable(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitIdentificationVariable(this);
+ }
+ }
+
+ public final IdentificationVariableContext identificationVariable() throws RecognitionException {
+ IdentificationVariableContext _localctx = new IdentificationVariableContext(_ctx, getState());
+ enterRule(_localctx, 128, RULE_identificationVariable);
+ try {
+ setState(792);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,87,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(790);
+ identifier();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(791);
+ simplePath();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class PathContext extends ParserRuleContext {
+ public TreatedPathContext treatedPath() {
+ return getRuleContext(TreatedPathContext.class,0);
+ }
+ public PathContinutationContext pathContinutation() {
+ return getRuleContext(PathContinutationContext.class,0);
+ }
+ public GeneralPathFragmentContext generalPathFragment() {
+ return getRuleContext(GeneralPathFragmentContext.class,0);
+ }
+ public PathContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_path; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterPath(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitPath(this);
+ }
+ }
+
+ public final PathContext path() throws RecognitionException {
+ PathContext _localctx = new PathContext(_ctx, getState());
+ enterRule(_localctx, 130, RULE_path);
+ try {
+ setState(799);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,89,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(794);
+ treatedPath();
+ setState(796);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,88,_ctx) ) {
+ case 1:
+ {
+ setState(795);
+ pathContinutation();
+ }
+ break;
+ }
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(798);
+ generalPathFragment();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class GeneralPathFragmentContext extends ParserRuleContext {
+ public SimplePathContext simplePath() {
+ return getRuleContext(SimplePathContext.class,0);
+ }
+ public IndexedPathAccessFragmentContext indexedPathAccessFragment() {
+ return getRuleContext(IndexedPathAccessFragmentContext.class,0);
+ }
+ public GeneralPathFragmentContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_generalPathFragment; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterGeneralPathFragment(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitGeneralPathFragment(this);
+ }
+ }
+
+ public final GeneralPathFragmentContext generalPathFragment() throws RecognitionException {
+ GeneralPathFragmentContext _localctx = new GeneralPathFragmentContext(_ctx, getState());
+ enterRule(_localctx, 132, RULE_generalPathFragment);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(801);
+ simplePath();
+ setState(803);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,90,_ctx) ) {
+ case 1:
+ {
+ setState(802);
+ indexedPathAccessFragment();
+ }
+ break;
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class IndexedPathAccessFragmentContext extends ParserRuleContext {
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public GeneralPathFragmentContext generalPathFragment() {
+ return getRuleContext(GeneralPathFragmentContext.class,0);
+ }
+ public IndexedPathAccessFragmentContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_indexedPathAccessFragment; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterIndexedPathAccessFragment(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitIndexedPathAccessFragment(this);
+ }
+ }
+
+ public final IndexedPathAccessFragmentContext indexedPathAccessFragment() throws RecognitionException {
+ IndexedPathAccessFragmentContext _localctx = new IndexedPathAccessFragmentContext(_ctx, getState());
+ enterRule(_localctx, 134, RULE_indexedPathAccessFragment);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(805);
+ match(T__11);
+ setState(806);
+ expression(0);
+ setState(807);
+ match(T__12);
+ setState(810);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,91,_ctx) ) {
+ case 1:
+ {
+ setState(808);
+ match(T__13);
+ setState(809);
+ generalPathFragment();
+ }
+ break;
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class SimplePathContext extends ParserRuleContext {
+ public IdentifierContext identifier() {
+ return getRuleContext(IdentifierContext.class,0);
+ }
+ public List simplePathElement() {
+ return getRuleContexts(SimplePathElementContext.class);
+ }
+ public SimplePathElementContext simplePathElement(int i) {
+ return getRuleContext(SimplePathElementContext.class,i);
+ }
+ public SimplePathContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_simplePath; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterSimplePath(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitSimplePath(this);
+ }
+ }
+
+ public final SimplePathContext simplePath() throws RecognitionException {
+ SimplePathContext _localctx = new SimplePathContext(_ctx, getState());
+ enterRule(_localctx, 136, RULE_simplePath);
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(812);
+ identifier();
+ setState(816);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,92,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(813);
+ simplePathElement();
+ }
+ }
+ }
+ setState(818);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,92,_ctx);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class SimplePathElementContext extends ParserRuleContext {
+ public IdentifierContext identifier() {
+ return getRuleContext(IdentifierContext.class,0);
+ }
+ public SimplePathElementContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_simplePathElement; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterSimplePathElement(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitSimplePathElement(this);
+ }
+ }
+
+ public final SimplePathElementContext simplePathElement() throws RecognitionException {
+ SimplePathElementContext _localctx = new SimplePathElementContext(_ctx, getState());
+ enterRule(_localctx, 138, RULE_simplePathElement);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(819);
+ match(T__13);
+ setState(820);
+ identifier();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class CaseListContext extends ParserRuleContext {
+ public SimpleCaseExpressionContext simpleCaseExpression() {
+ return getRuleContext(SimpleCaseExpressionContext.class,0);
+ }
+ public SearchedCaseExpressionContext searchedCaseExpression() {
+ return getRuleContext(SearchedCaseExpressionContext.class,0);
+ }
+ public CaseListContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_caseList; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterCaseList(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitCaseList(this);
+ }
+ }
+
+ public final CaseListContext caseList() throws RecognitionException {
+ CaseListContext _localctx = new CaseListContext(_ctx, getState());
+ enterRule(_localctx, 140, RULE_caseList);
+ try {
+ setState(824);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,93,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(822);
+ simpleCaseExpression();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(823);
+ searchedCaseExpression();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class SimpleCaseExpressionContext extends ParserRuleContext {
+ public TerminalNode CASE() { return getToken(HqlParser.CASE, 0); }
+ public List expressionOrPredicate() {
+ return getRuleContexts(ExpressionOrPredicateContext.class);
+ }
+ public ExpressionOrPredicateContext expressionOrPredicate(int i) {
+ return getRuleContext(ExpressionOrPredicateContext.class,i);
+ }
+ public TerminalNode END() { return getToken(HqlParser.END, 0); }
+ public List caseWhenExpressionClause() {
+ return getRuleContexts(CaseWhenExpressionClauseContext.class);
+ }
+ public CaseWhenExpressionClauseContext caseWhenExpressionClause(int i) {
+ return getRuleContext(CaseWhenExpressionClauseContext.class,i);
+ }
+ public TerminalNode ELSE() { return getToken(HqlParser.ELSE, 0); }
+ public SimpleCaseExpressionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_simpleCaseExpression; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterSimpleCaseExpression(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitSimpleCaseExpression(this);
+ }
+ }
+
+ public final SimpleCaseExpressionContext simpleCaseExpression() throws RecognitionException {
+ SimpleCaseExpressionContext _localctx = new SimpleCaseExpressionContext(_ctx, getState());
+ enterRule(_localctx, 142, RULE_simpleCaseExpression);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(826);
+ match(CASE);
+ setState(827);
+ expressionOrPredicate();
+ setState(829);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ do {
+ {
+ {
+ setState(828);
+ caseWhenExpressionClause();
+ }
+ }
+ setState(831);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ } while ( _la==WHEN );
+ setState(835);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==ELSE) {
+ {
+ setState(833);
+ match(ELSE);
+ setState(834);
+ expressionOrPredicate();
+ }
+ }
+
+ setState(837);
+ match(END);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class SearchedCaseExpressionContext extends ParserRuleContext {
+ public TerminalNode CASE() { return getToken(HqlParser.CASE, 0); }
+ public TerminalNode END() { return getToken(HqlParser.END, 0); }
+ public List caseWhenPredicateClause() {
+ return getRuleContexts(CaseWhenPredicateClauseContext.class);
+ }
+ public CaseWhenPredicateClauseContext caseWhenPredicateClause(int i) {
+ return getRuleContext(CaseWhenPredicateClauseContext.class,i);
+ }
+ public TerminalNode ELSE() { return getToken(HqlParser.ELSE, 0); }
+ public ExpressionOrPredicateContext expressionOrPredicate() {
+ return getRuleContext(ExpressionOrPredicateContext.class,0);
+ }
+ public SearchedCaseExpressionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_searchedCaseExpression; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterSearchedCaseExpression(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitSearchedCaseExpression(this);
+ }
+ }
+
+ public final SearchedCaseExpressionContext searchedCaseExpression() throws RecognitionException {
+ SearchedCaseExpressionContext _localctx = new SearchedCaseExpressionContext(_ctx, getState());
+ enterRule(_localctx, 144, RULE_searchedCaseExpression);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(839);
+ match(CASE);
+ setState(841);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ do {
+ {
+ {
+ setState(840);
+ caseWhenPredicateClause();
+ }
+ }
+ setState(843);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ } while ( _la==WHEN );
+ setState(847);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==ELSE) {
+ {
+ setState(845);
+ match(ELSE);
+ setState(846);
+ expressionOrPredicate();
+ }
+ }
+
+ setState(849);
+ match(END);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class CaseWhenExpressionClauseContext extends ParserRuleContext {
+ public TerminalNode WHEN() { return getToken(HqlParser.WHEN, 0); }
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public TerminalNode THEN() { return getToken(HqlParser.THEN, 0); }
+ public ExpressionOrPredicateContext expressionOrPredicate() {
+ return getRuleContext(ExpressionOrPredicateContext.class,0);
+ }
+ public CaseWhenExpressionClauseContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_caseWhenExpressionClause; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterCaseWhenExpressionClause(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitCaseWhenExpressionClause(this);
+ }
+ }
+
+ public final CaseWhenExpressionClauseContext caseWhenExpressionClause() throws RecognitionException {
+ CaseWhenExpressionClauseContext _localctx = new CaseWhenExpressionClauseContext(_ctx, getState());
+ enterRule(_localctx, 146, RULE_caseWhenExpressionClause);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(851);
+ match(WHEN);
+ setState(852);
+ expression(0);
+ setState(853);
+ match(THEN);
+ setState(854);
+ expressionOrPredicate();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class CaseWhenPredicateClauseContext extends ParserRuleContext {
+ public TerminalNode WHEN() { return getToken(HqlParser.WHEN, 0); }
+ public PredicateContext predicate() {
+ return getRuleContext(PredicateContext.class,0);
+ }
+ public TerminalNode THEN() { return getToken(HqlParser.THEN, 0); }
+ public ExpressionOrPredicateContext expressionOrPredicate() {
+ return getRuleContext(ExpressionOrPredicateContext.class,0);
+ }
+ public CaseWhenPredicateClauseContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_caseWhenPredicateClause; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterCaseWhenPredicateClause(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitCaseWhenPredicateClause(this);
+ }
+ }
+
+ public final CaseWhenPredicateClauseContext caseWhenPredicateClause() throws RecognitionException {
+ CaseWhenPredicateClauseContext _localctx = new CaseWhenPredicateClauseContext(_ctx, getState());
+ enterRule(_localctx, 148, RULE_caseWhenPredicateClause);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(856);
+ match(WHEN);
+ setState(857);
+ predicate(0);
+ setState(858);
+ match(THEN);
+ setState(859);
+ expressionOrPredicate();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class FunctionContext extends ParserRuleContext {
+ public FunctionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_function; }
+
+ public FunctionContext() { }
+ public void copyFrom(FunctionContext ctx) {
+ super.copyFrom(ctx);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class CastFunctionInvocationContext extends FunctionContext {
+ public CastFunctionContext castFunction() {
+ return getRuleContext(CastFunctionContext.class,0);
+ }
+ public CastFunctionInvocationContext(FunctionContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterCastFunctionInvocation(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitCastFunctionInvocation(this);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class TreatedPathInvocationContext extends FunctionContext {
+ public TreatedPathContext treatedPath() {
+ return getRuleContext(TreatedPathContext.class,0);
+ }
+ public TreatedPathInvocationContext(FunctionContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterTreatedPathInvocation(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitTreatedPathInvocation(this);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class FunctionWithSubqueryContext extends FunctionContext {
+ public FunctionNameContext functionName() {
+ return getRuleContext(FunctionNameContext.class,0);
+ }
+ public SubqueryContext subquery() {
+ return getRuleContext(SubqueryContext.class,0);
+ }
+ public FunctionWithSubqueryContext(FunctionContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterFunctionWithSubquery(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitFunctionWithSubquery(this);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class AnyFunctionInvocationContext extends FunctionContext {
+ public AnyFunctionContext anyFunction() {
+ return getRuleContext(AnyFunctionContext.class,0);
+ }
+ public AnyFunctionInvocationContext(FunctionContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterAnyFunctionInvocation(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitAnyFunctionInvocation(this);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class ExtractFunctionInvocationContext extends FunctionContext {
+ public ExtractFunctionContext extractFunction() {
+ return getRuleContext(ExtractFunctionContext.class,0);
+ }
+ public ExtractFunctionInvocationContext(FunctionContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterExtractFunctionInvocation(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitExtractFunctionInvocation(this);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class GenericFunctionContext extends FunctionContext {
+ public FunctionNameContext functionName() {
+ return getRuleContext(FunctionNameContext.class,0);
+ }
+ public FunctionArgumentsContext functionArguments() {
+ return getRuleContext(FunctionArgumentsContext.class,0);
+ }
+ public TerminalNode ASTERISK() { return getToken(HqlParser.ASTERISK, 0); }
+ public PathContinutationContext pathContinutation() {
+ return getRuleContext(PathContinutationContext.class,0);
+ }
+ public FilterClauseContext filterClause() {
+ return getRuleContext(FilterClauseContext.class,0);
+ }
+ public WithinGroupContext withinGroup() {
+ return getRuleContext(WithinGroupContext.class,0);
+ }
+ public OverClauseContext overClause() {
+ return getRuleContext(OverClauseContext.class,0);
+ }
+ public GenericFunctionContext(FunctionContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterGenericFunction(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitGenericFunction(this);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class EveryFunctionInvocationContext extends FunctionContext {
+ public EveryFunctionContext everyFunction() {
+ return getRuleContext(EveryFunctionContext.class,0);
+ }
+ public EveryFunctionInvocationContext(FunctionContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterEveryFunctionInvocation(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitEveryFunctionInvocation(this);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class TrimFunctionInvocationContext extends FunctionContext {
+ public TrimFunctionContext trimFunction() {
+ return getRuleContext(TrimFunctionContext.class,0);
+ }
+ public TrimFunctionInvocationContext(FunctionContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterTrimFunctionInvocation(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitTrimFunctionInvocation(this);
+ }
+ }
+
+ public final FunctionContext function() throws RecognitionException {
+ FunctionContext _localctx = new FunctionContext(_ctx, getState());
+ enterRule(_localctx, 150, RULE_function);
+ try {
+ setState(891);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,103,_ctx) ) {
+ case 1:
+ _localctx = new GenericFunctionContext(_localctx);
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(861);
+ functionName();
+ setState(862);
+ match(T__1);
+ setState(865);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case T__1:
+ case T__5:
+ case T__7:
+ case T__8:
+ case T__21:
+ case T__22:
+ case ALL:
+ case AND:
+ case ANY:
+ case AS:
+ case ASC:
+ case AVG:
+ case BETWEEN:
+ case BOTH:
+ case BREADTH:
+ case BY:
+ case CASE:
+ case CAST:
+ case COLLATE:
+ case COUNT:
+ case CROSS:
+ case CUBE:
+ case CURRENT:
+ case CURRENT_DATE:
+ case CURRENT_INSTANT:
+ case CURRENT_TIME:
+ case CURRENT_TIMESTAMP:
+ case CYCLE:
+ case DATE:
+ case DATETIME:
+ case DAY:
+ case DEFAULT:
+ case DELETE:
+ case DEPTH:
+ case DESC:
+ case DISTINCT:
+ case ELEMENT:
+ case ELEMENTS:
+ case ELSE:
+ case EMPTY:
+ case END:
+ case ENTRY:
+ case EPOCH:
+ case ERROR:
+ case ESCAPE:
+ case EVERY:
+ case EXCEPT:
+ case EXCLUDE:
+ case EXISTS:
+ case EXTRACT:
+ case FALSE:
+ case FETCH:
+ case FILTER:
+ case FIRST:
+ case FLOOR:
+ case FOLLOWING:
+ case FOR:
+ case FORMAT:
+ case FROM:
+ case FULL:
+ case FUNCTION:
+ case GROUP:
+ case GROUPS:
+ case HAVING:
+ case HOUR:
+ case ID:
+ case IGNORE:
+ case ILIKE:
+ case IN:
+ case INDEX:
+ case INDICES:
+ case INNER:
+ case INSERT:
+ case INSTANT:
+ case INTERSECT:
+ case INTO:
+ case IS:
+ case JOIN:
+ case KEY:
+ case LAST:
+ case LEADING:
+ case LEFT:
+ case LIKE:
+ case LIMIT:
+ case LIST:
+ case LISTAGG:
+ case LOCAL:
+ case LOCAL_DATE:
+ case LOCAL_DATETIME:
+ case LOCAL_TIME:
+ case MAP:
+ case MATERIALIZED:
+ case MAX:
+ case MAXELEMENT:
+ case MAXINDEX:
+ case MEMBER:
+ case MICROSECOND:
+ case MILLISECOND:
+ case MIN:
+ case MINELEMENT:
+ case MININDEX:
+ case MINUTE:
+ case MONTH:
+ case NANOSECOND:
+ case NATURALID:
+ case NEW:
+ case NEXT:
+ case NO:
+ case NOT:
+ case NULL:
+ case NULLS:
+ case OBJECT:
+ case OF:
+ case OFFSET:
+ case OFFSET_DATETIME:
+ case ON:
+ case ONLY:
+ case OR:
+ case ORDER:
+ case OTHERS:
+ case OUTER:
+ case OVER:
+ case OVERFLOW:
+ case OVERLAY:
+ case PAD:
+ case PARTITION:
+ case PERCENT:
+ case PLACING:
+ case POSITION:
+ case POWER:
+ case PRECEDING:
+ case QUARTER:
+ case RANGE:
+ case RESPECT:
+ case RIGHT:
+ case ROLLUP:
+ case ROW:
+ case ROWS:
+ case SEARCH:
+ case SECOND:
+ case SELECT:
+ case SET:
+ case SIZE:
+ case SOME:
+ case SUBSTRING:
+ case SUM:
+ case THEN:
+ case TIES:
+ case TIME:
+ case TIMESTAMP:
+ case TIMEZONE_HOUR:
+ case TIMEZONE_MINUTE:
+ case TO:
+ case TRAILING:
+ case TREAT:
+ case TRIM:
+ case TRUE:
+ case TRUNC:
+ case TRUNCATE:
+ case TYPE:
+ case UNBOUNDED:
+ case UNION:
+ case UPDATE:
+ case USING:
+ case VALUE:
+ case VALUES:
+ case VERSION:
+ case VERSIONED:
+ case WEEK:
+ case WHEN:
+ case WHERE:
+ case WITH:
+ case WITHIN:
+ case WITHOUT:
+ case YEAR:
+ case CHARACTER:
+ case STRINGLITERAL:
+ case JAVASTRINGLITERAL:
+ case INTEGER_LITERAL:
+ case FLOAT_LITERAL:
+ case HEXLITERAL:
+ case BINARY_LITERAL:
+ case IDENTIFICATION_VARIABLE:
+ {
+ setState(863);
+ functionArguments();
+ }
+ break;
+ case ASTERISK:
+ {
+ setState(864);
+ match(ASTERISK);
+ }
+ break;
+ case T__2:
+ break;
+ default:
+ break;
+ }
+ setState(867);
+ match(T__2);
+ setState(869);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,99,_ctx) ) {
+ case 1:
+ {
+ setState(868);
+ pathContinutation();
+ }
+ break;
+ }
+ setState(872);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,100,_ctx) ) {
+ case 1:
+ {
+ setState(871);
+ filterClause();
+ }
+ break;
+ }
+ setState(875);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,101,_ctx) ) {
+ case 1:
+ {
+ setState(874);
+ withinGroup();
+ }
+ break;
+ }
+ setState(878);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,102,_ctx) ) {
+ case 1:
+ {
+ setState(877);
+ overClause();
+ }
+ break;
+ }
+ }
+ break;
+ case 2:
+ _localctx = new FunctionWithSubqueryContext(_localctx);
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(880);
+ functionName();
+ setState(881);
+ match(T__1);
+ setState(882);
+ subquery();
+ setState(883);
+ match(T__2);
+ }
+ break;
+ case 3:
+ _localctx = new CastFunctionInvocationContext(_localctx);
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(885);
+ castFunction();
+ }
+ break;
+ case 4:
+ _localctx = new ExtractFunctionInvocationContext(_localctx);
+ enterOuterAlt(_localctx, 4);
+ {
+ setState(886);
+ extractFunction();
+ }
+ break;
+ case 5:
+ _localctx = new TrimFunctionInvocationContext(_localctx);
+ enterOuterAlt(_localctx, 5);
+ {
+ setState(887);
+ trimFunction();
+ }
+ break;
+ case 6:
+ _localctx = new EveryFunctionInvocationContext(_localctx);
+ enterOuterAlt(_localctx, 6);
+ {
+ setState(888);
+ everyFunction();
+ }
+ break;
+ case 7:
+ _localctx = new AnyFunctionInvocationContext(_localctx);
+ enterOuterAlt(_localctx, 7);
+ {
+ setState(889);
+ anyFunction();
+ }
+ break;
+ case 8:
+ _localctx = new TreatedPathInvocationContext(_localctx);
+ enterOuterAlt(_localctx, 8);
+ {
+ setState(890);
+ treatedPath();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class FunctionArgumentsContext extends ParserRuleContext {
+ public List expressionOrPredicate() {
+ return getRuleContexts(ExpressionOrPredicateContext.class);
+ }
+ public ExpressionOrPredicateContext expressionOrPredicate(int i) {
+ return getRuleContext(ExpressionOrPredicateContext.class,i);
+ }
+ public TerminalNode DISTINCT() { return getToken(HqlParser.DISTINCT, 0); }
+ public FunctionArgumentsContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_functionArguments; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterFunctionArguments(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitFunctionArguments(this);
+ }
+ }
+
+ public final FunctionArgumentsContext functionArguments() throws RecognitionException {
+ FunctionArgumentsContext _localctx = new FunctionArgumentsContext(_ctx, getState());
+ enterRule(_localctx, 152, RULE_functionArguments);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(894);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,104,_ctx) ) {
+ case 1:
+ {
+ setState(893);
+ match(DISTINCT);
+ }
+ break;
+ }
+ setState(896);
+ expressionOrPredicate();
+ setState(901);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==T__0) {
+ {
+ {
+ setState(897);
+ match(T__0);
+ setState(898);
+ expressionOrPredicate();
+ }
+ }
+ setState(903);
+ _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 FilterClauseContext extends ParserRuleContext {
+ public TerminalNode FILTER() { return getToken(HqlParser.FILTER, 0); }
+ public WhereClauseContext whereClause() {
+ return getRuleContext(WhereClauseContext.class,0);
+ }
+ public FilterClauseContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_filterClause; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterFilterClause(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitFilterClause(this);
+ }
+ }
+
+ public final FilterClauseContext filterClause() throws RecognitionException {
+ FilterClauseContext _localctx = new FilterClauseContext(_ctx, getState());
+ enterRule(_localctx, 154, RULE_filterClause);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(904);
+ match(FILTER);
+ setState(905);
+ match(T__1);
+ setState(906);
+ whereClause();
+ setState(907);
+ match(T__2);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class WithinGroupContext extends ParserRuleContext {
+ public TerminalNode WITHIN() { return getToken(HqlParser.WITHIN, 0); }
+ public TerminalNode GROUP() { return getToken(HqlParser.GROUP, 0); }
+ public OrderByClauseContext orderByClause() {
+ return getRuleContext(OrderByClauseContext.class,0);
+ }
+ public WithinGroupContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_withinGroup; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterWithinGroup(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitWithinGroup(this);
+ }
+ }
+
+ public final WithinGroupContext withinGroup() throws RecognitionException {
+ WithinGroupContext _localctx = new WithinGroupContext(_ctx, getState());
+ enterRule(_localctx, 156, RULE_withinGroup);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(909);
+ match(WITHIN);
+ setState(910);
+ match(GROUP);
+ setState(911);
+ match(T__1);
+ setState(912);
+ orderByClause();
+ setState(913);
+ match(T__2);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OverClauseContext extends ParserRuleContext {
+ public TerminalNode OVER() { return getToken(HqlParser.OVER, 0); }
+ public PartitionClauseContext partitionClause() {
+ return getRuleContext(PartitionClauseContext.class,0);
+ }
+ public OrderByClauseContext orderByClause() {
+ return getRuleContext(OrderByClauseContext.class,0);
+ }
+ public FrameClauseContext frameClause() {
+ return getRuleContext(FrameClauseContext.class,0);
+ }
+ public OverClauseContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_overClause; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterOverClause(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitOverClause(this);
+ }
+ }
+
+ public final OverClauseContext overClause() throws RecognitionException {
+ OverClauseContext _localctx = new OverClauseContext(_ctx, getState());
+ enterRule(_localctx, 158, RULE_overClause);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(915);
+ match(OVER);
+ setState(916);
+ match(T__1);
+ setState(918);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==PARTITION) {
+ {
+ setState(917);
+ partitionClause();
+ }
+ }
+
+ setState(921);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==ORDER) {
+ {
+ setState(920);
+ orderByClause();
+ }
+ }
+
+ setState(924);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==GROUPS || _la==RANGE || _la==ROWS) {
+ {
+ setState(923);
+ frameClause();
+ }
+ }
+
+ setState(926);
+ match(T__2);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class PartitionClauseContext extends ParserRuleContext {
+ public TerminalNode PARTITION() { return getToken(HqlParser.PARTITION, 0); }
+ public TerminalNode BY() { return getToken(HqlParser.BY, 0); }
+ public List expression() {
+ return getRuleContexts(ExpressionContext.class);
+ }
+ public ExpressionContext expression(int i) {
+ return getRuleContext(ExpressionContext.class,i);
+ }
+ public PartitionClauseContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_partitionClause; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterPartitionClause(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitPartitionClause(this);
+ }
+ }
+
+ public final PartitionClauseContext partitionClause() throws RecognitionException {
+ PartitionClauseContext _localctx = new PartitionClauseContext(_ctx, getState());
+ enterRule(_localctx, 160, RULE_partitionClause);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(928);
+ match(PARTITION);
+ setState(929);
+ match(BY);
+ setState(930);
+ expression(0);
+ setState(935);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==T__0) {
+ {
+ {
+ setState(931);
+ match(T__0);
+ setState(932);
+ expression(0);
+ }
+ }
+ setState(937);
+ _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 FrameClauseContext extends ParserRuleContext {
+ public FrameStartContext frameStart() {
+ return getRuleContext(FrameStartContext.class,0);
+ }
+ public TerminalNode RANGE() { return getToken(HqlParser.RANGE, 0); }
+ public TerminalNode ROWS() { return getToken(HqlParser.ROWS, 0); }
+ public TerminalNode GROUPS() { return getToken(HqlParser.GROUPS, 0); }
+ public FrameExclusionContext frameExclusion() {
+ return getRuleContext(FrameExclusionContext.class,0);
+ }
+ public TerminalNode BETWEEN() { return getToken(HqlParser.BETWEEN, 0); }
+ public TerminalNode AND() { return getToken(HqlParser.AND, 0); }
+ public FrameEndContext frameEnd() {
+ return getRuleContext(FrameEndContext.class,0);
+ }
+ public FrameClauseContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_frameClause; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterFrameClause(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitFrameClause(this);
+ }
+ }
+
+ public final FrameClauseContext frameClause() throws RecognitionException {
+ FrameClauseContext _localctx = new FrameClauseContext(_ctx, getState());
+ enterRule(_localctx, 162, RULE_frameClause);
+ int _la;
+ try {
+ setState(951);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,112,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(938);
+ _la = _input.LA(1);
+ if ( !(_la==GROUPS || _la==RANGE || _la==ROWS) ) {
+ _errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ setState(939);
+ frameStart();
+ setState(941);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==EXCLUDE) {
+ {
+ setState(940);
+ frameExclusion();
+ }
+ }
+
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(943);
+ _la = _input.LA(1);
+ if ( !(_la==GROUPS || _la==RANGE || _la==ROWS) ) {
+ _errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ setState(944);
+ match(BETWEEN);
+ setState(945);
+ frameStart();
+ setState(946);
+ match(AND);
+ setState(947);
+ frameEnd();
+ setState(949);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==EXCLUDE) {
+ {
+ setState(948);
+ frameExclusion();
+ }
+ }
+
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class FrameStartContext extends ParserRuleContext {
+ public FrameStartContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_frameStart; }
+
+ public FrameStartContext() { }
+ public void copyFrom(FrameStartContext ctx) {
+ super.copyFrom(ctx);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class ExpressionFollowingFrameStartContext extends FrameStartContext {
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public TerminalNode FOLLOWING() { return getToken(HqlParser.FOLLOWING, 0); }
+ public ExpressionFollowingFrameStartContext(FrameStartContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterExpressionFollowingFrameStart(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitExpressionFollowingFrameStart(this);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class ExpressionPrecedingFrameStartContext extends FrameStartContext {
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public TerminalNode PRECEDING() { return getToken(HqlParser.PRECEDING, 0); }
+ public ExpressionPrecedingFrameStartContext(FrameStartContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterExpressionPrecedingFrameStart(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitExpressionPrecedingFrameStart(this);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class CurrentRowFrameStartContext extends FrameStartContext {
+ public TerminalNode CURRENT() { return getToken(HqlParser.CURRENT, 0); }
+ public TerminalNode ROW() { return getToken(HqlParser.ROW, 0); }
+ public CurrentRowFrameStartContext(FrameStartContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterCurrentRowFrameStart(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitCurrentRowFrameStart(this);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class UnboundedPrecedingFrameStartContext extends FrameStartContext {
+ public TerminalNode UNBOUNDED() { return getToken(HqlParser.UNBOUNDED, 0); }
+ public TerminalNode PRECEDING() { return getToken(HqlParser.PRECEDING, 0); }
+ public UnboundedPrecedingFrameStartContext(FrameStartContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterUnboundedPrecedingFrameStart(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitUnboundedPrecedingFrameStart(this);
+ }
+ }
+
+ public final FrameStartContext frameStart() throws RecognitionException {
+ FrameStartContext _localctx = new FrameStartContext(_ctx, getState());
+ enterRule(_localctx, 164, RULE_frameStart);
+ try {
+ setState(963);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,113,_ctx) ) {
+ case 1:
+ _localctx = new UnboundedPrecedingFrameStartContext(_localctx);
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(953);
+ match(UNBOUNDED);
+ setState(954);
+ match(PRECEDING);
+ }
+ break;
+ case 2:
+ _localctx = new ExpressionPrecedingFrameStartContext(_localctx);
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(955);
+ expression(0);
+ setState(956);
+ match(PRECEDING);
+ }
+ break;
+ case 3:
+ _localctx = new CurrentRowFrameStartContext(_localctx);
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(958);
+ match(CURRENT);
+ setState(959);
+ match(ROW);
+ }
+ break;
+ case 4:
+ _localctx = new ExpressionFollowingFrameStartContext(_localctx);
+ enterOuterAlt(_localctx, 4);
+ {
+ setState(960);
+ expression(0);
+ setState(961);
+ match(FOLLOWING);
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class FrameExclusionContext extends ParserRuleContext {
+ public FrameExclusionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_frameExclusion; }
+
+ public FrameExclusionContext() { }
+ public void copyFrom(FrameExclusionContext ctx) {
+ super.copyFrom(ctx);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class NoOthersFrameExclusionContext extends FrameExclusionContext {
+ public TerminalNode EXCLUDE() { return getToken(HqlParser.EXCLUDE, 0); }
+ public TerminalNode NO() { return getToken(HqlParser.NO, 0); }
+ public TerminalNode OTHERS() { return getToken(HqlParser.OTHERS, 0); }
+ public NoOthersFrameExclusionContext(FrameExclusionContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterNoOthersFrameExclusion(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitNoOthersFrameExclusion(this);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class GroupFrameExclusionContext extends FrameExclusionContext {
+ public TerminalNode EXCLUDE() { return getToken(HqlParser.EXCLUDE, 0); }
+ public TerminalNode GROUP() { return getToken(HqlParser.GROUP, 0); }
+ public GroupFrameExclusionContext(FrameExclusionContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterGroupFrameExclusion(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitGroupFrameExclusion(this);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class TiesFrameExclusionContext extends FrameExclusionContext {
+ public TerminalNode EXCLUDE() { return getToken(HqlParser.EXCLUDE, 0); }
+ public TerminalNode TIES() { return getToken(HqlParser.TIES, 0); }
+ public TiesFrameExclusionContext(FrameExclusionContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterTiesFrameExclusion(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitTiesFrameExclusion(this);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class CurrentRowFrameExclusionContext extends FrameExclusionContext {
+ public TerminalNode EXCLUDE() { return getToken(HqlParser.EXCLUDE, 0); }
+ public TerminalNode CURRENT() { return getToken(HqlParser.CURRENT, 0); }
+ public TerminalNode ROW() { return getToken(HqlParser.ROW, 0); }
+ public CurrentRowFrameExclusionContext(FrameExclusionContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterCurrentRowFrameExclusion(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitCurrentRowFrameExclusion(this);
+ }
+ }
+
+ public final FrameExclusionContext frameExclusion() throws RecognitionException {
+ FrameExclusionContext _localctx = new FrameExclusionContext(_ctx, getState());
+ enterRule(_localctx, 166, RULE_frameExclusion);
+ try {
+ setState(975);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,114,_ctx) ) {
+ case 1:
+ _localctx = new CurrentRowFrameExclusionContext(_localctx);
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(965);
+ match(EXCLUDE);
+ setState(966);
+ match(CURRENT);
+ setState(967);
+ match(ROW);
+ }
+ break;
+ case 2:
+ _localctx = new GroupFrameExclusionContext(_localctx);
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(968);
+ match(EXCLUDE);
+ setState(969);
+ match(GROUP);
+ }
+ break;
+ case 3:
+ _localctx = new TiesFrameExclusionContext(_localctx);
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(970);
+ match(EXCLUDE);
+ setState(971);
+ match(TIES);
+ }
+ break;
+ case 4:
+ _localctx = new NoOthersFrameExclusionContext(_localctx);
+ enterOuterAlt(_localctx, 4);
+ {
+ setState(972);
+ match(EXCLUDE);
+ setState(973);
+ match(NO);
+ setState(974);
+ match(OTHERS);
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class FrameEndContext extends ParserRuleContext {
+ public FrameEndContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_frameEnd; }
+
+ public FrameEndContext() { }
+ public void copyFrom(FrameEndContext ctx) {
+ super.copyFrom(ctx);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class CurrentRowFrameEndContext extends FrameEndContext {
+ public TerminalNode CURRENT() { return getToken(HqlParser.CURRENT, 0); }
+ public TerminalNode ROW() { return getToken(HqlParser.ROW, 0); }
+ public CurrentRowFrameEndContext(FrameEndContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterCurrentRowFrameEnd(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitCurrentRowFrameEnd(this);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class ExpressionPrecedingFrameEndContext extends FrameEndContext {
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public TerminalNode PRECEDING() { return getToken(HqlParser.PRECEDING, 0); }
+ public ExpressionPrecedingFrameEndContext(FrameEndContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterExpressionPrecedingFrameEnd(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitExpressionPrecedingFrameEnd(this);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class ExpressionFollowingFrameEndContext extends FrameEndContext {
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public TerminalNode FOLLOWING() { return getToken(HqlParser.FOLLOWING, 0); }
+ public ExpressionFollowingFrameEndContext(FrameEndContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterExpressionFollowingFrameEnd(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitExpressionFollowingFrameEnd(this);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class UnboundedFollowingFrameEndContext extends FrameEndContext {
+ public TerminalNode UNBOUNDED() { return getToken(HqlParser.UNBOUNDED, 0); }
+ public TerminalNode FOLLOWING() { return getToken(HqlParser.FOLLOWING, 0); }
+ public UnboundedFollowingFrameEndContext(FrameEndContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterUnboundedFollowingFrameEnd(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitUnboundedFollowingFrameEnd(this);
+ }
+ }
+
+ public final FrameEndContext frameEnd() throws RecognitionException {
+ FrameEndContext _localctx = new FrameEndContext(_ctx, getState());
+ enterRule(_localctx, 168, RULE_frameEnd);
+ try {
+ setState(987);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,115,_ctx) ) {
+ case 1:
+ _localctx = new ExpressionPrecedingFrameEndContext(_localctx);
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(977);
+ expression(0);
+ setState(978);
+ match(PRECEDING);
+ }
+ break;
+ case 2:
+ _localctx = new CurrentRowFrameEndContext(_localctx);
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(980);
+ match(CURRENT);
+ setState(981);
+ match(ROW);
+ }
+ break;
+ case 3:
+ _localctx = new ExpressionFollowingFrameEndContext(_localctx);
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(982);
+ expression(0);
+ setState(983);
+ match(FOLLOWING);
+ }
+ break;
+ case 4:
+ _localctx = new UnboundedFollowingFrameEndContext(_localctx);
+ enterOuterAlt(_localctx, 4);
+ {
+ setState(985);
+ match(UNBOUNDED);
+ setState(986);
+ match(FOLLOWING);
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class CastFunctionContext extends ParserRuleContext {
+ public TerminalNode CAST() { return getToken(HqlParser.CAST, 0); }
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public TerminalNode AS() { return getToken(HqlParser.AS, 0); }
+ public CastTargetContext castTarget() {
+ return getRuleContext(CastTargetContext.class,0);
+ }
+ public CastFunctionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_castFunction; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterCastFunction(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitCastFunction(this);
+ }
+ }
+
+ public final CastFunctionContext castFunction() throws RecognitionException {
+ CastFunctionContext _localctx = new CastFunctionContext(_ctx, getState());
+ enterRule(_localctx, 170, RULE_castFunction);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(989);
+ match(CAST);
+ setState(990);
+ match(T__1);
+ setState(991);
+ expression(0);
+ setState(992);
+ match(AS);
+ setState(993);
+ castTarget();
+ setState(994);
+ match(T__2);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class CastTargetContext extends ParserRuleContext {
+ public CastTargetTypeContext castTargetType() {
+ return getRuleContext(CastTargetTypeContext.class,0);
+ }
+ public List INTEGER_LITERAL() { return getTokens(HqlParser.INTEGER_LITERAL); }
+ public TerminalNode INTEGER_LITERAL(int i) {
+ return getToken(HqlParser.INTEGER_LITERAL, i);
+ }
+ public CastTargetContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_castTarget; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterCastTarget(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitCastTarget(this);
+ }
+ }
+
+ public final CastTargetContext castTarget() throws RecognitionException {
+ CastTargetContext _localctx = new CastTargetContext(_ctx, getState());
+ enterRule(_localctx, 172, RULE_castTarget);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(996);
+ castTargetType();
+ setState(1004);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==T__1) {
+ {
+ setState(997);
+ match(T__1);
+ setState(998);
+ match(INTEGER_LITERAL);
+ setState(1001);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==T__0) {
+ {
+ setState(999);
+ match(T__0);
+ setState(1000);
+ match(INTEGER_LITERAL);
+ }
+ }
+
+ setState(1003);
+ match(T__2);
+ }
+ }
+
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class CastTargetTypeContext extends ParserRuleContext {
+ public String fullTargetName;
+ public IdentifierContext i;
+ public IdentifierContext c;
+ public List identifier() {
+ return getRuleContexts(IdentifierContext.class);
+ }
+ public IdentifierContext identifier(int i) {
+ return getRuleContext(IdentifierContext.class,i);
+ }
+ public CastTargetTypeContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_castTargetType; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterCastTargetType(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitCastTargetType(this);
+ }
+ }
+
+ public final CastTargetTypeContext castTargetType() throws RecognitionException {
+ CastTargetTypeContext _localctx = new CastTargetTypeContext(_ctx, getState());
+ enterRule(_localctx, 174, RULE_castTargetType);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ {
+ setState(1006);
+ ((CastTargetTypeContext)_localctx).i = identifier();
+ ((CastTargetTypeContext)_localctx).fullTargetName = _localctx.i.getText();
+ }
+ setState(1015);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==T__13) {
+ {
+ {
+ setState(1009);
+ match(T__13);
+ setState(1010);
+ ((CastTargetTypeContext)_localctx).c = identifier();
+ _localctx.fullTargetName += ("." + _localctx.c.getText() );
+ }
+ }
+ setState(1017);
+ _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 ExtractFunctionContext extends ParserRuleContext {
+ public TerminalNode EXTRACT() { return getToken(HqlParser.EXTRACT, 0); }
+ public List expression() {
+ return getRuleContexts(ExpressionContext.class);
+ }
+ public ExpressionContext expression(int i) {
+ return getRuleContext(ExpressionContext.class,i);
+ }
+ public TerminalNode FROM() { return getToken(HqlParser.FROM, 0); }
+ public DateTimeFunctionContext dateTimeFunction() {
+ return getRuleContext(DateTimeFunctionContext.class,0);
+ }
+ public ExtractFunctionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_extractFunction; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterExtractFunction(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitExtractFunction(this);
+ }
+ }
+
+ public final ExtractFunctionContext extractFunction() throws RecognitionException {
+ ExtractFunctionContext _localctx = new ExtractFunctionContext(_ctx, getState());
+ enterRule(_localctx, 176, RULE_extractFunction);
+ try {
+ setState(1030);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case EXTRACT:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1018);
+ match(EXTRACT);
+ setState(1019);
+ match(T__1);
+ setState(1020);
+ expression(0);
+ setState(1021);
+ match(FROM);
+ setState(1022);
+ expression(0);
+ setState(1023);
+ match(T__2);
+ }
+ break;
+ case DAY:
+ case EPOCH:
+ case HOUR:
+ case MINUTE:
+ case MONTH:
+ case NANOSECOND:
+ case QUARTER:
+ case SECOND:
+ case WEEK:
+ case YEAR:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1025);
+ dateTimeFunction();
+ setState(1026);
+ match(T__1);
+ setState(1027);
+ expression(0);
+ setState(1028);
+ match(T__2);
+ }
+ 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 TrimFunctionContext extends ParserRuleContext {
+ public TerminalNode TRIM() { return getToken(HqlParser.TRIM, 0); }
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public StringLiteralContext stringLiteral() {
+ return getRuleContext(StringLiteralContext.class,0);
+ }
+ public TerminalNode FROM() { return getToken(HqlParser.FROM, 0); }
+ public TerminalNode LEADING() { return getToken(HqlParser.LEADING, 0); }
+ public TerminalNode TRAILING() { return getToken(HqlParser.TRAILING, 0); }
+ public TerminalNode BOTH() { return getToken(HqlParser.BOTH, 0); }
+ public TrimFunctionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_trimFunction; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterTrimFunction(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitTrimFunction(this);
+ }
+ }
+
+ public final TrimFunctionContext trimFunction() throws RecognitionException {
+ TrimFunctionContext _localctx = new TrimFunctionContext(_ctx, getState());
+ enterRule(_localctx, 178, RULE_trimFunction);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1032);
+ match(TRIM);
+ setState(1033);
+ match(T__1);
+ setState(1035);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,120,_ctx) ) {
+ case 1:
+ {
+ setState(1034);
+ _la = _input.LA(1);
+ if ( !(_la==BOTH || _la==LEADING || _la==TRAILING) ) {
+ _errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ }
+ break;
+ }
+ setState(1038);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,121,_ctx) ) {
+ case 1:
+ {
+ setState(1037);
+ stringLiteral();
+ }
+ break;
+ }
+ setState(1041);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,122,_ctx) ) {
+ case 1:
+ {
+ setState(1040);
+ match(FROM);
+ }
+ break;
+ }
+ setState(1043);
+ expression(0);
+ setState(1044);
+ match(T__2);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class DateTimeFunctionContext extends ParserRuleContext {
+ public Token d;
+ public TerminalNode YEAR() { return getToken(HqlParser.YEAR, 0); }
+ public TerminalNode MONTH() { return getToken(HqlParser.MONTH, 0); }
+ public TerminalNode DAY() { return getToken(HqlParser.DAY, 0); }
+ public TerminalNode WEEK() { return getToken(HqlParser.WEEK, 0); }
+ public TerminalNode QUARTER() { return getToken(HqlParser.QUARTER, 0); }
+ public TerminalNode HOUR() { return getToken(HqlParser.HOUR, 0); }
+ public TerminalNode MINUTE() { return getToken(HqlParser.MINUTE, 0); }
+ public TerminalNode SECOND() { return getToken(HqlParser.SECOND, 0); }
+ public TerminalNode NANOSECOND() { return getToken(HqlParser.NANOSECOND, 0); }
+ public TerminalNode EPOCH() { return getToken(HqlParser.EPOCH, 0); }
+ public DateTimeFunctionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_dateTimeFunction; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterDateTimeFunction(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitDateTimeFunction(this);
+ }
+ }
+
+ public final DateTimeFunctionContext dateTimeFunction() throws RecognitionException {
+ DateTimeFunctionContext _localctx = new DateTimeFunctionContext(_ctx, getState());
+ enterRule(_localctx, 180, RULE_dateTimeFunction);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1046);
+ ((DateTimeFunctionContext)_localctx).d = _input.LT(1);
+ _la = _input.LA(1);
+ if ( !(_la==DAY || _la==EPOCH || ((((_la - 87)) & ~0x3f) == 0 && ((1L << (_la - 87)) & 3848290697217L) != 0) || ((((_la - 156)) & ~0x3f) == 0 && ((1L << (_la - 156)) & 8933531975937L) != 0)) ) {
+ ((DateTimeFunctionContext)_localctx).d = (Token)_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 EveryFunctionContext extends ParserRuleContext {
+ public Token every;
+ public PredicateContext predicate() {
+ return getRuleContext(PredicateContext.class,0);
+ }
+ public TerminalNode EVERY() { return getToken(HqlParser.EVERY, 0); }
+ public TerminalNode ALL() { return getToken(HqlParser.ALL, 0); }
+ public SubqueryContext subquery() {
+ return getRuleContext(SubqueryContext.class,0);
+ }
+ public SimplePathContext simplePath() {
+ return getRuleContext(SimplePathContext.class,0);
+ }
+ public TerminalNode ELEMENTS() { return getToken(HqlParser.ELEMENTS, 0); }
+ public TerminalNode INDICES() { return getToken(HqlParser.INDICES, 0); }
+ public EveryFunctionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_everyFunction; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterEveryFunction(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitEveryFunction(this);
+ }
+ }
+
+ public final EveryFunctionContext everyFunction() throws RecognitionException {
+ EveryFunctionContext _localctx = new EveryFunctionContext(_ctx, getState());
+ enterRule(_localctx, 182, RULE_everyFunction);
+ int _la;
+ try {
+ setState(1064);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,123,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1048);
+ ((EveryFunctionContext)_localctx).every = _input.LT(1);
+ _la = _input.LA(1);
+ if ( !(_la==ALL || _la==EVERY) ) {
+ ((EveryFunctionContext)_localctx).every = (Token)_errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ setState(1049);
+ match(T__1);
+ setState(1050);
+ predicate(0);
+ setState(1051);
+ match(T__2);
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1053);
+ ((EveryFunctionContext)_localctx).every = _input.LT(1);
+ _la = _input.LA(1);
+ if ( !(_la==ALL || _la==EVERY) ) {
+ ((EveryFunctionContext)_localctx).every = (Token)_errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ setState(1054);
+ match(T__1);
+ setState(1055);
+ subquery();
+ setState(1056);
+ match(T__2);
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(1058);
+ ((EveryFunctionContext)_localctx).every = _input.LT(1);
+ _la = _input.LA(1);
+ if ( !(_la==ALL || _la==EVERY) ) {
+ ((EveryFunctionContext)_localctx).every = (Token)_errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ setState(1059);
+ _la = _input.LA(1);
+ if ( !(_la==ELEMENTS || _la==INDICES) ) {
+ _errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ setState(1060);
+ match(T__1);
+ setState(1061);
+ simplePath();
+ setState(1062);
+ match(T__2);
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class AnyFunctionContext extends ParserRuleContext {
+ public Token any;
+ public PredicateContext predicate() {
+ return getRuleContext(PredicateContext.class,0);
+ }
+ public TerminalNode ANY() { return getToken(HqlParser.ANY, 0); }
+ public TerminalNode SOME() { return getToken(HqlParser.SOME, 0); }
+ public SubqueryContext subquery() {
+ return getRuleContext(SubqueryContext.class,0);
+ }
+ public SimplePathContext simplePath() {
+ return getRuleContext(SimplePathContext.class,0);
+ }
+ public TerminalNode ELEMENTS() { return getToken(HqlParser.ELEMENTS, 0); }
+ public TerminalNode INDICES() { return getToken(HqlParser.INDICES, 0); }
+ public AnyFunctionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_anyFunction; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterAnyFunction(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitAnyFunction(this);
+ }
+ }
+
+ public final AnyFunctionContext anyFunction() throws RecognitionException {
+ AnyFunctionContext _localctx = new AnyFunctionContext(_ctx, getState());
+ enterRule(_localctx, 184, RULE_anyFunction);
+ int _la;
+ try {
+ setState(1082);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,124,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1066);
+ ((AnyFunctionContext)_localctx).any = _input.LT(1);
+ _la = _input.LA(1);
+ if ( !(_la==ANY || _la==SOME) ) {
+ ((AnyFunctionContext)_localctx).any = (Token)_errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ setState(1067);
+ match(T__1);
+ setState(1068);
+ predicate(0);
+ setState(1069);
+ match(T__2);
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1071);
+ ((AnyFunctionContext)_localctx).any = _input.LT(1);
+ _la = _input.LA(1);
+ if ( !(_la==ANY || _la==SOME) ) {
+ ((AnyFunctionContext)_localctx).any = (Token)_errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ setState(1072);
+ match(T__1);
+ setState(1073);
+ subquery();
+ setState(1074);
+ match(T__2);
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(1076);
+ ((AnyFunctionContext)_localctx).any = _input.LT(1);
+ _la = _input.LA(1);
+ if ( !(_la==ANY || _la==SOME) ) {
+ ((AnyFunctionContext)_localctx).any = (Token)_errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ setState(1077);
+ _la = _input.LA(1);
+ if ( !(_la==ELEMENTS || _la==INDICES) ) {
+ _errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ setState(1078);
+ match(T__1);
+ setState(1079);
+ simplePath();
+ setState(1080);
+ match(T__2);
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class TreatedPathContext extends ParserRuleContext {
+ public TerminalNode TREAT() { return getToken(HqlParser.TREAT, 0); }
+ public PathContext path() {
+ return getRuleContext(PathContext.class,0);
+ }
+ public TerminalNode AS() { return getToken(HqlParser.AS, 0); }
+ public SimplePathContext simplePath() {
+ return getRuleContext(SimplePathContext.class,0);
+ }
+ public PathContinutationContext pathContinutation() {
+ return getRuleContext(PathContinutationContext.class,0);
+ }
+ public TreatedPathContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_treatedPath; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterTreatedPath(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitTreatedPath(this);
+ }
+ }
+
+ public final TreatedPathContext treatedPath() throws RecognitionException {
+ TreatedPathContext _localctx = new TreatedPathContext(_ctx, getState());
+ enterRule(_localctx, 186, RULE_treatedPath);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1084);
+ match(TREAT);
+ setState(1085);
+ match(T__1);
+ setState(1086);
+ path();
+ setState(1087);
+ match(AS);
+ setState(1088);
+ simplePath();
+ setState(1089);
+ match(T__2);
+ setState(1091);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,125,_ctx) ) {
+ case 1:
+ {
+ setState(1090);
+ pathContinutation();
+ }
+ break;
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class PathContinutationContext extends ParserRuleContext {
+ public SimplePathContext simplePath() {
+ return getRuleContext(SimplePathContext.class,0);
+ }
+ public PathContinutationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_pathContinutation; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterPathContinutation(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitPathContinutation(this);
+ }
+ }
+
+ public final PathContinutationContext pathContinutation() throws RecognitionException {
+ PathContinutationContext _localctx = new PathContinutationContext(_ctx, getState());
+ enterRule(_localctx, 188, RULE_pathContinutation);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1093);
+ match(T__13);
+ setState(1094);
+ simplePath();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class PredicateContext extends ParserRuleContext {
+ public PredicateContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_predicate; }
+
+ public PredicateContext() { }
+ public void copyFrom(PredicateContext ctx) {
+ super.copyFrom(ctx);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class NullExpressionPredicateContext extends PredicateContext {
+ public DealingWithNullExpressionContext dealingWithNullExpression() {
+ return getRuleContext(DealingWithNullExpressionContext.class,0);
+ }
+ public NullExpressionPredicateContext(PredicateContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterNullExpressionPredicate(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitNullExpressionPredicate(this);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class BetweenPredicateContext extends PredicateContext {
+ public BetweenExpressionContext betweenExpression() {
+ return getRuleContext(BetweenExpressionContext.class,0);
+ }
+ public BetweenPredicateContext(PredicateContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterBetweenPredicate(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitBetweenPredicate(this);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class OrPredicateContext extends PredicateContext {
+ public List predicate() {
+ return getRuleContexts(PredicateContext.class);
+ }
+ public PredicateContext predicate(int i) {
+ return getRuleContext(PredicateContext.class,i);
+ }
+ public TerminalNode OR() { return getToken(HqlParser.OR, 0); }
+ public OrPredicateContext(PredicateContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterOrPredicate(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitOrPredicate(this);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class RelationalPredicateContext extends PredicateContext {
+ public RelationalExpressionContext relationalExpression() {
+ return getRuleContext(RelationalExpressionContext.class,0);
+ }
+ public RelationalPredicateContext(PredicateContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterRelationalPredicate(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitRelationalPredicate(this);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class ExistsPredicateContext extends PredicateContext {
+ public ExistsExpressionContext existsExpression() {
+ return getRuleContext(ExistsExpressionContext.class,0);
+ }
+ public ExistsPredicateContext(PredicateContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterExistsPredicate(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitExistsPredicate(this);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class CollectionPredicateContext extends PredicateContext {
+ public CollectionExpressionContext collectionExpression() {
+ return getRuleContext(CollectionExpressionContext.class,0);
+ }
+ public CollectionPredicateContext(PredicateContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterCollectionPredicate(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitCollectionPredicate(this);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class AndPredicateContext extends PredicateContext {
+ public List predicate() {
+ return getRuleContexts(PredicateContext.class);
+ }
+ public PredicateContext predicate(int i) {
+ return getRuleContext(PredicateContext.class,i);
+ }
+ public TerminalNode AND() { return getToken(HqlParser.AND, 0); }
+ public AndPredicateContext(PredicateContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterAndPredicate(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitAndPredicate(this);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class GroupedPredicateContext extends PredicateContext {
+ public PredicateContext predicate() {
+ return getRuleContext(PredicateContext.class,0);
+ }
+ public GroupedPredicateContext(PredicateContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterGroupedPredicate(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitGroupedPredicate(this);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class LikePredicateContext extends PredicateContext {
+ public StringPatternMatchingContext stringPatternMatching() {
+ return getRuleContext(StringPatternMatchingContext.class,0);
+ }
+ public LikePredicateContext(PredicateContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterLikePredicate(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitLikePredicate(this);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class InPredicateContext extends PredicateContext {
+ public InExpressionContext inExpression() {
+ return getRuleContext(InExpressionContext.class,0);
+ }
+ public InPredicateContext(PredicateContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterInPredicate(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitInPredicate(this);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class NotPredicateContext extends PredicateContext {
+ public TerminalNode NOT() { return getToken(HqlParser.NOT, 0); }
+ public PredicateContext predicate() {
+ return getRuleContext(PredicateContext.class,0);
+ }
+ public NotPredicateContext(PredicateContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterNotPredicate(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitNotPredicate(this);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class ExpressionPredicateContext extends PredicateContext {
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public ExpressionPredicateContext(PredicateContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterExpressionPredicate(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitExpressionPredicate(this);
+ }
+ }
+
+ public final PredicateContext predicate() throws RecognitionException {
+ return predicate(0);
+ }
+
+ private PredicateContext predicate(int _p) throws RecognitionException {
+ ParserRuleContext _parentctx = _ctx;
+ int _parentState = getState();
+ PredicateContext _localctx = new PredicateContext(_ctx, _parentState);
+ PredicateContext _prevctx = _localctx;
+ int _startState = 190;
+ enterRecursionRule(_localctx, 190, RULE_predicate, _p);
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1111);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,126,_ctx) ) {
+ case 1:
+ {
+ _localctx = new GroupedPredicateContext(_localctx);
+ _ctx = _localctx;
+ _prevctx = _localctx;
+
+ setState(1097);
+ match(T__1);
+ setState(1098);
+ predicate(0);
+ setState(1099);
+ match(T__2);
+ }
+ break;
+ case 2:
+ {
+ _localctx = new NullExpressionPredicateContext(_localctx);
+ _ctx = _localctx;
+ _prevctx = _localctx;
+ setState(1101);
+ dealingWithNullExpression();
+ }
+ break;
+ case 3:
+ {
+ _localctx = new InPredicateContext(_localctx);
+ _ctx = _localctx;
+ _prevctx = _localctx;
+ setState(1102);
+ inExpression();
+ }
+ break;
+ case 4:
+ {
+ _localctx = new BetweenPredicateContext(_localctx);
+ _ctx = _localctx;
+ _prevctx = _localctx;
+ setState(1103);
+ betweenExpression();
+ }
+ break;
+ case 5:
+ {
+ _localctx = new RelationalPredicateContext(_localctx);
+ _ctx = _localctx;
+ _prevctx = _localctx;
+ setState(1104);
+ relationalExpression();
+ }
+ break;
+ case 6:
+ {
+ _localctx = new LikePredicateContext(_localctx);
+ _ctx = _localctx;
+ _prevctx = _localctx;
+ setState(1105);
+ stringPatternMatching();
+ }
+ break;
+ case 7:
+ {
+ _localctx = new ExistsPredicateContext(_localctx);
+ _ctx = _localctx;
+ _prevctx = _localctx;
+ setState(1106);
+ existsExpression();
+ }
+ break;
+ case 8:
+ {
+ _localctx = new CollectionPredicateContext(_localctx);
+ _ctx = _localctx;
+ _prevctx = _localctx;
+ setState(1107);
+ collectionExpression();
+ }
+ break;
+ case 9:
+ {
+ _localctx = new NotPredicateContext(_localctx);
+ _ctx = _localctx;
+ _prevctx = _localctx;
+ setState(1108);
+ match(NOT);
+ setState(1109);
+ predicate(4);
+ }
+ break;
+ case 10:
+ {
+ _localctx = new ExpressionPredicateContext(_localctx);
+ _ctx = _localctx;
+ _prevctx = _localctx;
+ setState(1110);
+ expression(0);
+ }
+ break;
+ }
+ _ctx.stop = _input.LT(-1);
+ setState(1121);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,128,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ if ( _parseListeners!=null ) triggerExitRuleEvent();
+ _prevctx = _localctx;
+ {
+ setState(1119);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,127,_ctx) ) {
+ case 1:
+ {
+ _localctx = new AndPredicateContext(new PredicateContext(_parentctx, _parentState));
+ pushNewRecursionContext(_localctx, _startState, RULE_predicate);
+ setState(1113);
+ if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)");
+ setState(1114);
+ match(AND);
+ setState(1115);
+ predicate(4);
+ }
+ break;
+ case 2:
+ {
+ _localctx = new OrPredicateContext(new PredicateContext(_parentctx, _parentState));
+ pushNewRecursionContext(_localctx, _startState, RULE_predicate);
+ setState(1116);
+ if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)");
+ setState(1117);
+ match(OR);
+ setState(1118);
+ predicate(3);
+ }
+ break;
+ }
+ }
+ }
+ setState(1123);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,128,_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 ExpressionOrPredicateContext extends ParserRuleContext {
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public PredicateContext predicate() {
+ return getRuleContext(PredicateContext.class,0);
+ }
+ public ExpressionOrPredicateContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_expressionOrPredicate; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterExpressionOrPredicate(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitExpressionOrPredicate(this);
+ }
+ }
+
+ public final ExpressionOrPredicateContext expressionOrPredicate() throws RecognitionException {
+ ExpressionOrPredicateContext _localctx = new ExpressionOrPredicateContext(_ctx, getState());
+ enterRule(_localctx, 192, RULE_expressionOrPredicate);
+ try {
+ setState(1126);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,129,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1124);
+ expression(0);
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1125);
+ predicate(0);
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class RelationalExpressionContext extends ParserRuleContext {
+ public Token op;
+ public List expression() {
+ return getRuleContexts(ExpressionContext.class);
+ }
+ public ExpressionContext expression(int i) {
+ return getRuleContext(ExpressionContext.class,i);
+ }
+ 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 HqlListener ) ((HqlListener)listener).enterRelationalExpression(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitRelationalExpression(this);
+ }
+ }
+
+ public final RelationalExpressionContext relationalExpression() throws RecognitionException {
+ RelationalExpressionContext _localctx = new RelationalExpressionContext(_ctx, getState());
+ enterRule(_localctx, 194, RULE_relationalExpression);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1128);
+ expression(0);
+ setState(1129);
+ ((RelationalExpressionContext)_localctx).op = _input.LT(1);
+ _la = _input.LA(1);
+ if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & 4161552L) != 0)) ) {
+ ((RelationalExpressionContext)_localctx).op = (Token)_errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ setState(1130);
+ expression(0);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class BetweenExpressionContext extends ParserRuleContext {
+ public List expression() {
+ return getRuleContexts(ExpressionContext.class);
+ }
+ public ExpressionContext expression(int i) {
+ return getRuleContext(ExpressionContext.class,i);
+ }
+ public TerminalNode BETWEEN() { return getToken(HqlParser.BETWEEN, 0); }
+ public TerminalNode AND() { return getToken(HqlParser.AND, 0); }
+ public TerminalNode NOT() { return getToken(HqlParser.NOT, 0); }
+ public BetweenExpressionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_betweenExpression; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterBetweenExpression(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitBetweenExpression(this);
+ }
+ }
+
+ public final BetweenExpressionContext betweenExpression() throws RecognitionException {
+ BetweenExpressionContext _localctx = new BetweenExpressionContext(_ctx, getState());
+ enterRule(_localctx, 196, RULE_betweenExpression);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1132);
+ expression(0);
+ setState(1134);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==NOT) {
+ {
+ setState(1133);
+ match(NOT);
+ }
+ }
+
+ setState(1136);
+ match(BETWEEN);
+ setState(1137);
+ expression(0);
+ setState(1138);
+ match(AND);
+ setState(1139);
+ expression(0);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class DealingWithNullExpressionContext extends ParserRuleContext {
+ public List expression() {
+ return getRuleContexts(ExpressionContext.class);
+ }
+ public ExpressionContext expression(int i) {
+ return getRuleContext(ExpressionContext.class,i);
+ }
+ public TerminalNode IS() { return getToken(HqlParser.IS, 0); }
+ public TerminalNode NULL() { return getToken(HqlParser.NULL, 0); }
+ public TerminalNode NOT() { return getToken(HqlParser.NOT, 0); }
+ public TerminalNode DISTINCT() { return getToken(HqlParser.DISTINCT, 0); }
+ public TerminalNode FROM() { return getToken(HqlParser.FROM, 0); }
+ public DealingWithNullExpressionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_dealingWithNullExpression; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterDealingWithNullExpression(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitDealingWithNullExpression(this);
+ }
+ }
+
+ public final DealingWithNullExpressionContext dealingWithNullExpression() throws RecognitionException {
+ DealingWithNullExpressionContext _localctx = new DealingWithNullExpressionContext(_ctx, getState());
+ enterRule(_localctx, 198, RULE_dealingWithNullExpression);
+ int _la;
+ try {
+ setState(1157);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,133,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1141);
+ expression(0);
+ setState(1142);
+ match(IS);
+ setState(1144);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==NOT) {
+ {
+ setState(1143);
+ match(NOT);
+ }
+ }
+
+ setState(1146);
+ match(NULL);
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1148);
+ expression(0);
+ setState(1149);
+ match(IS);
+ setState(1151);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==NOT) {
+ {
+ setState(1150);
+ match(NOT);
+ }
+ }
+
+ setState(1153);
+ match(DISTINCT);
+ setState(1154);
+ match(FROM);
+ setState(1155);
+ expression(0);
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class StringPatternMatchingContext extends ParserRuleContext {
+ public List expression() {
+ return getRuleContexts(ExpressionContext.class);
+ }
+ public ExpressionContext expression(int i) {
+ return getRuleContext(ExpressionContext.class,i);
+ }
+ public TerminalNode LIKE() { return getToken(HqlParser.LIKE, 0); }
+ public TerminalNode ILIKE() { return getToken(HqlParser.ILIKE, 0); }
+ public TerminalNode NOT() { return getToken(HqlParser.NOT, 0); }
+ public TerminalNode ESCAPE() { return getToken(HqlParser.ESCAPE, 0); }
+ public StringLiteralContext stringLiteral() {
+ return getRuleContext(StringLiteralContext.class,0);
+ }
+ public ParameterContext parameter() {
+ return getRuleContext(ParameterContext.class,0);
+ }
+ public StringPatternMatchingContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_stringPatternMatching; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterStringPatternMatching(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitStringPatternMatching(this);
+ }
+ }
+
+ public final StringPatternMatchingContext stringPatternMatching() throws RecognitionException {
+ StringPatternMatchingContext _localctx = new StringPatternMatchingContext(_ctx, getState());
+ enterRule(_localctx, 200, RULE_stringPatternMatching);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1159);
+ expression(0);
+ setState(1161);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==NOT) {
+ {
+ setState(1160);
+ match(NOT);
+ }
+ }
+
+ setState(1163);
+ _la = _input.LA(1);
+ if ( !(_la==ILIKE || _la==LIKE) ) {
+ _errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ setState(1164);
+ expression(0);
+ setState(1170);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,136,_ctx) ) {
+ case 1:
+ {
+ setState(1165);
+ match(ESCAPE);
+ setState(1168);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case CHARACTER:
+ case STRINGLITERAL:
+ case JAVASTRINGLITERAL:
+ {
+ setState(1166);
+ stringLiteral();
+ }
+ break;
+ case T__21:
+ case T__22:
+ {
+ setState(1167);
+ parameter();
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ break;
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class InExpressionContext extends ParserRuleContext {
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public TerminalNode IN() { return getToken(HqlParser.IN, 0); }
+ public InListContext inList() {
+ return getRuleContext(InListContext.class,0);
+ }
+ public TerminalNode NOT() { return getToken(HqlParser.NOT, 0); }
+ public InExpressionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_inExpression; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterInExpression(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitInExpression(this);
+ }
+ }
+
+ public final InExpressionContext inExpression() throws RecognitionException {
+ InExpressionContext _localctx = new InExpressionContext(_ctx, getState());
+ enterRule(_localctx, 202, RULE_inExpression);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1172);
+ expression(0);
+ setState(1174);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==NOT) {
+ {
+ setState(1173);
+ match(NOT);
+ }
+ }
+
+ setState(1176);
+ match(IN);
+ setState(1177);
+ inList();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class InListContext extends ParserRuleContext {
+ public SimplePathContext simplePath() {
+ return getRuleContext(SimplePathContext.class,0);
+ }
+ public TerminalNode ELEMENTS() { return getToken(HqlParser.ELEMENTS, 0); }
+ public TerminalNode INDICES() { return getToken(HqlParser.INDICES, 0); }
+ public SubqueryContext subquery() {
+ return getRuleContext(SubqueryContext.class,0);
+ }
+ public ParameterContext parameter() {
+ return getRuleContext(ParameterContext.class,0);
+ }
+ public List expressionOrPredicate() {
+ return getRuleContexts(ExpressionOrPredicateContext.class);
+ }
+ public ExpressionOrPredicateContext expressionOrPredicate(int i) {
+ return getRuleContext(ExpressionOrPredicateContext.class,i);
+ }
+ public InListContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_inList; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterInList(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitInList(this);
+ }
+ }
+
+ public final InListContext inList() throws RecognitionException {
+ InListContext _localctx = new InListContext(_ctx, getState());
+ enterRule(_localctx, 204, RULE_inList);
+ int _la;
+ try {
+ setState(1201);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,140,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1179);
+ _la = _input.LA(1);
+ if ( !(_la==ELEMENTS || _la==INDICES) ) {
+ _errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ setState(1180);
+ match(T__1);
+ setState(1181);
+ simplePath();
+ setState(1182);
+ match(T__2);
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1184);
+ match(T__1);
+ setState(1185);
+ subquery();
+ setState(1186);
+ match(T__2);
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(1188);
+ parameter();
+ }
+ break;
+ case 4:
+ enterOuterAlt(_localctx, 4);
+ {
+ setState(1189);
+ match(T__1);
+ setState(1198);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & -275972619452L) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & -70918499995713L) != 0) || ((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & -1L) != 0) || ((((_la - 192)) & ~0x3f) == 0 && ((1L << (_la - 192)) & 65535L) != 0)) {
+ {
+ setState(1190);
+ expressionOrPredicate();
+ setState(1195);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==T__0) {
+ {
+ {
+ setState(1191);
+ match(T__0);
+ setState(1192);
+ expressionOrPredicate();
+ }
+ }
+ setState(1197);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ }
+ }
+
+ setState(1200);
+ match(T__2);
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ExistsExpressionContext extends ParserRuleContext {
+ public TerminalNode EXISTS() { return getToken(HqlParser.EXISTS, 0); }
+ public SimplePathContext simplePath() {
+ return getRuleContext(SimplePathContext.class,0);
+ }
+ public TerminalNode ELEMENTS() { return getToken(HqlParser.ELEMENTS, 0); }
+ public TerminalNode INDICES() { return getToken(HqlParser.INDICES, 0); }
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public ExistsExpressionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_existsExpression; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterExistsExpression(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitExistsExpression(this);
+ }
+ }
+
+ public final ExistsExpressionContext existsExpression() throws RecognitionException {
+ ExistsExpressionContext _localctx = new ExistsExpressionContext(_ctx, getState());
+ enterRule(_localctx, 206, RULE_existsExpression);
+ int _la;
+ try {
+ setState(1211);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,141,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1203);
+ match(EXISTS);
+ setState(1204);
+ _la = _input.LA(1);
+ if ( !(_la==ELEMENTS || _la==INDICES) ) {
+ _errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ setState(1205);
+ match(T__1);
+ setState(1206);
+ simplePath();
+ setState(1207);
+ match(T__2);
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1209);
+ match(EXISTS);
+ setState(1210);
+ expression(0);
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class CollectionExpressionContext extends ParserRuleContext {
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public TerminalNode IS() { return getToken(HqlParser.IS, 0); }
+ public TerminalNode EMPTY() { return getToken(HqlParser.EMPTY, 0); }
+ public TerminalNode NOT() { return getToken(HqlParser.NOT, 0); }
+ public TerminalNode MEMBER() { return getToken(HqlParser.MEMBER, 0); }
+ public TerminalNode OF() { return getToken(HqlParser.OF, 0); }
+ public PathContext path() {
+ return getRuleContext(PathContext.class,0);
+ }
+ public CollectionExpressionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_collectionExpression; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterCollectionExpression(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitCollectionExpression(this);
+ }
+ }
+
+ public final CollectionExpressionContext collectionExpression() throws RecognitionException {
+ CollectionExpressionContext _localctx = new CollectionExpressionContext(_ctx, getState());
+ enterRule(_localctx, 208, RULE_collectionExpression);
+ int _la;
+ try {
+ setState(1228);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,144,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1213);
+ expression(0);
+ setState(1214);
+ match(IS);
+ setState(1216);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==NOT) {
+ {
+ setState(1215);
+ match(NOT);
+ }
+ }
+
+ setState(1218);
+ match(EMPTY);
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1220);
+ expression(0);
+ setState(1222);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==NOT) {
+ {
+ setState(1221);
+ match(NOT);
+ }
+ }
+
+ setState(1224);
+ match(MEMBER);
+ setState(1225);
+ match(OF);
+ setState(1226);
+ path();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class InstantiationTargetContext extends ParserRuleContext {
+ public TerminalNode LIST() { return getToken(HqlParser.LIST, 0); }
+ public TerminalNode MAP() { return getToken(HqlParser.MAP, 0); }
+ public SimplePathContext simplePath() {
+ return getRuleContext(SimplePathContext.class,0);
+ }
+ public InstantiationTargetContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_instantiationTarget; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterInstantiationTarget(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitInstantiationTarget(this);
+ }
+ }
+
+ public final InstantiationTargetContext instantiationTarget() throws RecognitionException {
+ InstantiationTargetContext _localctx = new InstantiationTargetContext(_ctx, getState());
+ enterRule(_localctx, 210, RULE_instantiationTarget);
+ try {
+ setState(1233);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,145,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1230);
+ match(LIST);
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1231);
+ match(MAP);
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(1232);
+ simplePath();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class InstantiationArgumentsContext extends ParserRuleContext {
+ public List instantiationArgument() {
+ return getRuleContexts(InstantiationArgumentContext.class);
+ }
+ public InstantiationArgumentContext instantiationArgument(int i) {
+ return getRuleContext(InstantiationArgumentContext.class,i);
+ }
+ public InstantiationArgumentsContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_instantiationArguments; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterInstantiationArguments(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitInstantiationArguments(this);
+ }
+ }
+
+ public final InstantiationArgumentsContext instantiationArguments() throws RecognitionException {
+ InstantiationArgumentsContext _localctx = new InstantiationArgumentsContext(_ctx, getState());
+ enterRule(_localctx, 212, RULE_instantiationArguments);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1235);
+ instantiationArgument();
+ setState(1240);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==T__0) {
+ {
+ {
+ setState(1236);
+ match(T__0);
+ setState(1237);
+ instantiationArgument();
+ }
+ }
+ setState(1242);
+ _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 InstantiationArgumentContext extends ParserRuleContext {
+ public ExpressionOrPredicateContext expressionOrPredicate() {
+ return getRuleContext(ExpressionOrPredicateContext.class,0);
+ }
+ public InstantiationContext instantiation() {
+ return getRuleContext(InstantiationContext.class,0);
+ }
+ public VariableContext variable() {
+ return getRuleContext(VariableContext.class,0);
+ }
+ public InstantiationArgumentContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_instantiationArgument; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterInstantiationArgument(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitInstantiationArgument(this);
+ }
+ }
+
+ public final InstantiationArgumentContext instantiationArgument() throws RecognitionException {
+ InstantiationArgumentContext _localctx = new InstantiationArgumentContext(_ctx, getState());
+ enterRule(_localctx, 214, RULE_instantiationArgument);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1245);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,147,_ctx) ) {
+ case 1:
+ {
+ setState(1243);
+ expressionOrPredicate();
+ }
+ break;
+ case 2:
+ {
+ setState(1244);
+ instantiation();
+ }
+ break;
+ }
+ setState(1248);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (((((_la - 25)) & ~0x3f) == 0 && ((1L << (_la - 25)) & -2427721674137633L) != 0) || ((((_la - 89)) & ~0x3f) == 0 && ((1L << (_la - 89)) & -35184374202369L) != 0) || ((((_la - 153)) & ~0x3f) == 0 && ((1L << (_la - 153)) & 18155135729401855L) != 0)) {
+ {
+ setState(1247);
+ variable();
+ }
+ }
+
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ParameterOrIntegerLiteralContext extends ParserRuleContext {
+ public ParameterContext parameter() {
+ return getRuleContext(ParameterContext.class,0);
+ }
+ public TerminalNode INTEGER_LITERAL() { return getToken(HqlParser.INTEGER_LITERAL, 0); }
+ public ParameterOrIntegerLiteralContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_parameterOrIntegerLiteral; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterParameterOrIntegerLiteral(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitParameterOrIntegerLiteral(this);
+ }
+ }
+
+ public final ParameterOrIntegerLiteralContext parameterOrIntegerLiteral() throws RecognitionException {
+ ParameterOrIntegerLiteralContext _localctx = new ParameterOrIntegerLiteralContext(_ctx, getState());
+ enterRule(_localctx, 216, RULE_parameterOrIntegerLiteral);
+ try {
+ setState(1252);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case T__21:
+ case T__22:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1250);
+ parameter();
+ }
+ break;
+ case INTEGER_LITERAL:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1251);
+ match(INTEGER_LITERAL);
+ }
+ 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 ParameterOrNumberLiteralContext extends ParserRuleContext {
+ public ParameterContext parameter() {
+ return getRuleContext(ParameterContext.class,0);
+ }
+ public NumericLiteralContext numericLiteral() {
+ return getRuleContext(NumericLiteralContext.class,0);
+ }
+ public ParameterOrNumberLiteralContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_parameterOrNumberLiteral; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterParameterOrNumberLiteral(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitParameterOrNumberLiteral(this);
+ }
+ }
+
+ public final ParameterOrNumberLiteralContext parameterOrNumberLiteral() throws RecognitionException {
+ ParameterOrNumberLiteralContext _localctx = new ParameterOrNumberLiteralContext(_ctx, getState());
+ enterRule(_localctx, 218, RULE_parameterOrNumberLiteral);
+ try {
+ setState(1256);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case T__21:
+ case T__22:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1254);
+ parameter();
+ }
+ break;
+ case INTEGER_LITERAL:
+ case FLOAT_LITERAL:
+ case HEXLITERAL:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1255);
+ numericLiteral();
+ }
+ 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 VariableContext extends ParserRuleContext {
+ public TerminalNode AS() { return getToken(HqlParser.AS, 0); }
+ public IdentifierContext identifier() {
+ return getRuleContext(IdentifierContext.class,0);
+ }
+ public ReservedWordContext reservedWord() {
+ return getRuleContext(ReservedWordContext.class,0);
+ }
+ public VariableContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_variable; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterVariable(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitVariable(this);
+ }
+ }
+
+ public final VariableContext variable() throws RecognitionException {
+ VariableContext _localctx = new VariableContext(_ctx, getState());
+ enterRule(_localctx, 220, RULE_variable);
+ try {
+ setState(1261);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,151,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1258);
+ match(AS);
+ setState(1259);
+ identifier();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1260);
+ reservedWord();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ParameterContext extends ParserRuleContext {
+ public Token prefix;
+ public IdentifierContext identifier() {
+ return getRuleContext(IdentifierContext.class,0);
+ }
+ public TerminalNode INTEGER_LITERAL() { return getToken(HqlParser.INTEGER_LITERAL, 0); }
+ public ParameterContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_parameter; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterParameter(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitParameter(this);
+ }
+ }
+
+ public final ParameterContext parameter() throws RecognitionException {
+ ParameterContext _localctx = new ParameterContext(_ctx, getState());
+ enterRule(_localctx, 222, RULE_parameter);
+ try {
+ setState(1272);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case T__21:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1263);
+ ((ParameterContext)_localctx).prefix = match(T__21);
+ setState(1264);
+ identifier();
+ setState(1266);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,152,_ctx) ) {
+ case 1:
+ {
+ setState(1265);
+ match(T__4);
+ }
+ break;
+ }
+ }
+ break;
+ case T__22:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1268);
+ ((ParameterContext)_localctx).prefix = match(T__22);
+ setState(1270);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,153,_ctx) ) {
+ case 1:
+ {
+ setState(1269);
+ match(INTEGER_LITERAL);
+ }
+ 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 EntityNameContext extends ParserRuleContext {
+ public List identifier() {
+ return getRuleContexts(IdentifierContext.class);
+ }
+ public IdentifierContext identifier(int i) {
+ return getRuleContext(IdentifierContext.class,i);
+ }
+ public EntityNameContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_entityName; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterEntityName(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitEntityName(this);
+ }
+ }
+
+ public final EntityNameContext entityName() throws RecognitionException {
+ EntityNameContext _localctx = new EntityNameContext(_ctx, getState());
+ enterRule(_localctx, 224, RULE_entityName);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1274);
+ identifier();
+ setState(1279);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==T__13) {
+ {
+ {
+ setState(1275);
+ match(T__13);
+ setState(1276);
+ identifier();
+ }
+ }
+ setState(1281);
+ _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 IdentifierContext extends ParserRuleContext {
+ public ReservedWordContext reservedWord() {
+ return getRuleContext(ReservedWordContext.class,0);
+ }
+ public IdentifierContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_identifier; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterIdentifier(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitIdentifier(this);
+ }
+ }
+
+ public final IdentifierContext identifier() throws RecognitionException {
+ IdentifierContext _localctx = new IdentifierContext(_ctx, getState());
+ enterRule(_localctx, 226, RULE_identifier);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1282);
+ reservedWord();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class CharacterContext extends ParserRuleContext {
+ public TerminalNode CHARACTER() { return getToken(HqlParser.CHARACTER, 0); }
+ public CharacterContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_character; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterCharacter(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitCharacter(this);
+ }
+ }
+
+ public final CharacterContext character() throws RecognitionException {
+ CharacterContext _localctx = new CharacterContext(_ctx, getState());
+ enterRule(_localctx, 228, RULE_character);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1284);
+ match(CHARACTER);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class FunctionNameContext extends ParserRuleContext {
+ public List reservedWord() {
+ return getRuleContexts(ReservedWordContext.class);
+ }
+ public ReservedWordContext reservedWord(int i) {
+ return getRuleContext(ReservedWordContext.class,i);
+ }
+ public FunctionNameContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_functionName; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterFunctionName(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitFunctionName(this);
+ }
+ }
+
+ public final FunctionNameContext functionName() throws RecognitionException {
+ FunctionNameContext _localctx = new FunctionNameContext(_ctx, getState());
+ enterRule(_localctx, 230, RULE_functionName);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1286);
+ reservedWord();
+ setState(1291);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==T__13) {
+ {
+ {
+ setState(1287);
+ match(T__13);
+ setState(1288);
+ reservedWord();
+ }
+ }
+ setState(1293);
+ _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 ReservedWordContext extends ParserRuleContext {
+ public Token f;
+ public TerminalNode IDENTIFICATION_VARIABLE() { return getToken(HqlParser.IDENTIFICATION_VARIABLE, 0); }
+ public TerminalNode ALL() { return getToken(HqlParser.ALL, 0); }
+ public TerminalNode AND() { return getToken(HqlParser.AND, 0); }
+ public TerminalNode ANY() { return getToken(HqlParser.ANY, 0); }
+ public TerminalNode AS() { return getToken(HqlParser.AS, 0); }
+ public TerminalNode ASC() { return getToken(HqlParser.ASC, 0); }
+ public TerminalNode AVG() { return getToken(HqlParser.AVG, 0); }
+ public TerminalNode BETWEEN() { return getToken(HqlParser.BETWEEN, 0); }
+ public TerminalNode BOTH() { return getToken(HqlParser.BOTH, 0); }
+ public TerminalNode BREADTH() { return getToken(HqlParser.BREADTH, 0); }
+ public TerminalNode BY() { return getToken(HqlParser.BY, 0); }
+ public TerminalNode CASE() { return getToken(HqlParser.CASE, 0); }
+ public TerminalNode CAST() { return getToken(HqlParser.CAST, 0); }
+ public TerminalNode COLLATE() { return getToken(HqlParser.COLLATE, 0); }
+ public TerminalNode COUNT() { return getToken(HqlParser.COUNT, 0); }
+ public TerminalNode CROSS() { return getToken(HqlParser.CROSS, 0); }
+ public TerminalNode CUBE() { return getToken(HqlParser.CUBE, 0); }
+ public TerminalNode CURRENT() { return getToken(HqlParser.CURRENT, 0); }
+ public TerminalNode CURRENT_DATE() { return getToken(HqlParser.CURRENT_DATE, 0); }
+ public TerminalNode CURRENT_INSTANT() { return getToken(HqlParser.CURRENT_INSTANT, 0); }
+ public TerminalNode CURRENT_TIME() { return getToken(HqlParser.CURRENT_TIME, 0); }
+ public TerminalNode CURRENT_TIMESTAMP() { return getToken(HqlParser.CURRENT_TIMESTAMP, 0); }
+ public TerminalNode CYCLE() { return getToken(HqlParser.CYCLE, 0); }
+ public TerminalNode DATE() { return getToken(HqlParser.DATE, 0); }
+ public TerminalNode DATETIME() { return getToken(HqlParser.DATETIME, 0); }
+ public TerminalNode DAY() { return getToken(HqlParser.DAY, 0); }
+ public TerminalNode DEFAULT() { return getToken(HqlParser.DEFAULT, 0); }
+ public TerminalNode DELETE() { return getToken(HqlParser.DELETE, 0); }
+ public TerminalNode DEPTH() { return getToken(HqlParser.DEPTH, 0); }
+ public TerminalNode DESC() { return getToken(HqlParser.DESC, 0); }
+ public TerminalNode DISTINCT() { return getToken(HqlParser.DISTINCT, 0); }
+ public TerminalNode ELEMENT() { return getToken(HqlParser.ELEMENT, 0); }
+ public TerminalNode ELEMENTS() { return getToken(HqlParser.ELEMENTS, 0); }
+ public TerminalNode ELSE() { return getToken(HqlParser.ELSE, 0); }
+ public TerminalNode EMPTY() { return getToken(HqlParser.EMPTY, 0); }
+ public TerminalNode END() { return getToken(HqlParser.END, 0); }
+ public TerminalNode ENTRY() { return getToken(HqlParser.ENTRY, 0); }
+ public TerminalNode EPOCH() { return getToken(HqlParser.EPOCH, 0); }
+ public TerminalNode ERROR() { return getToken(HqlParser.ERROR, 0); }
+ public TerminalNode ESCAPE() { return getToken(HqlParser.ESCAPE, 0); }
+ public TerminalNode EVERY() { return getToken(HqlParser.EVERY, 0); }
+ public TerminalNode EXCEPT() { return getToken(HqlParser.EXCEPT, 0); }
+ public TerminalNode EXCLUDE() { return getToken(HqlParser.EXCLUDE, 0); }
+ public TerminalNode EXISTS() { return getToken(HqlParser.EXISTS, 0); }
+ public TerminalNode EXTRACT() { return getToken(HqlParser.EXTRACT, 0); }
+ public TerminalNode FETCH() { return getToken(HqlParser.FETCH, 0); }
+ public TerminalNode FILTER() { return getToken(HqlParser.FILTER, 0); }
+ public TerminalNode FIRST() { return getToken(HqlParser.FIRST, 0); }
+ public TerminalNode FLOOR() { return getToken(HqlParser.FLOOR, 0); }
+ public TerminalNode FOLLOWING() { return getToken(HqlParser.FOLLOWING, 0); }
+ public TerminalNode FOR() { return getToken(HqlParser.FOR, 0); }
+ public TerminalNode FORMAT() { return getToken(HqlParser.FORMAT, 0); }
+ public TerminalNode FROM() { return getToken(HqlParser.FROM, 0); }
+ public TerminalNode FULL() { return getToken(HqlParser.FULL, 0); }
+ public TerminalNode FUNCTION() { return getToken(HqlParser.FUNCTION, 0); }
+ public TerminalNode GROUP() { return getToken(HqlParser.GROUP, 0); }
+ public TerminalNode GROUPS() { return getToken(HqlParser.GROUPS, 0); }
+ public TerminalNode HAVING() { return getToken(HqlParser.HAVING, 0); }
+ public TerminalNode HOUR() { return getToken(HqlParser.HOUR, 0); }
+ public TerminalNode ID() { return getToken(HqlParser.ID, 0); }
+ public TerminalNode IGNORE() { return getToken(HqlParser.IGNORE, 0); }
+ public TerminalNode ILIKE() { return getToken(HqlParser.ILIKE, 0); }
+ public TerminalNode IN() { return getToken(HqlParser.IN, 0); }
+ public TerminalNode INDEX() { return getToken(HqlParser.INDEX, 0); }
+ public TerminalNode INDICES() { return getToken(HqlParser.INDICES, 0); }
+ public TerminalNode INNER() { return getToken(HqlParser.INNER, 0); }
+ public TerminalNode INSERT() { return getToken(HqlParser.INSERT, 0); }
+ public TerminalNode INSTANT() { return getToken(HqlParser.INSTANT, 0); }
+ public TerminalNode INTERSECT() { return getToken(HqlParser.INTERSECT, 0); }
+ public TerminalNode INTO() { return getToken(HqlParser.INTO, 0); }
+ public TerminalNode IS() { return getToken(HqlParser.IS, 0); }
+ public TerminalNode JOIN() { return getToken(HqlParser.JOIN, 0); }
+ public TerminalNode KEY() { return getToken(HqlParser.KEY, 0); }
+ public TerminalNode LAST() { return getToken(HqlParser.LAST, 0); }
+ public TerminalNode LEADING() { return getToken(HqlParser.LEADING, 0); }
+ public TerminalNode LEFT() { return getToken(HqlParser.LEFT, 0); }
+ public TerminalNode LIKE() { return getToken(HqlParser.LIKE, 0); }
+ public TerminalNode LIMIT() { return getToken(HqlParser.LIMIT, 0); }
+ public TerminalNode LIST() { return getToken(HqlParser.LIST, 0); }
+ public TerminalNode LISTAGG() { return getToken(HqlParser.LISTAGG, 0); }
+ public TerminalNode LOCAL() { return getToken(HqlParser.LOCAL, 0); }
+ public TerminalNode LOCAL_DATE() { return getToken(HqlParser.LOCAL_DATE, 0); }
+ public TerminalNode LOCAL_DATETIME() { return getToken(HqlParser.LOCAL_DATETIME, 0); }
+ public TerminalNode LOCAL_TIME() { return getToken(HqlParser.LOCAL_TIME, 0); }
+ public TerminalNode MAP() { return getToken(HqlParser.MAP, 0); }
+ public TerminalNode MATERIALIZED() { return getToken(HqlParser.MATERIALIZED, 0); }
+ public TerminalNode MAX() { return getToken(HqlParser.MAX, 0); }
+ public TerminalNode MAXELEMENT() { return getToken(HqlParser.MAXELEMENT, 0); }
+ public TerminalNode MAXINDEX() { return getToken(HqlParser.MAXINDEX, 0); }
+ public TerminalNode MEMBER() { return getToken(HqlParser.MEMBER, 0); }
+ public TerminalNode MICROSECOND() { return getToken(HqlParser.MICROSECOND, 0); }
+ public TerminalNode MILLISECOND() { return getToken(HqlParser.MILLISECOND, 0); }
+ public TerminalNode MIN() { return getToken(HqlParser.MIN, 0); }
+ public TerminalNode MINELEMENT() { return getToken(HqlParser.MINELEMENT, 0); }
+ public TerminalNode MININDEX() { return getToken(HqlParser.MININDEX, 0); }
+ public TerminalNode MINUTE() { return getToken(HqlParser.MINUTE, 0); }
+ public TerminalNode MONTH() { return getToken(HqlParser.MONTH, 0); }
+ public TerminalNode NANOSECOND() { return getToken(HqlParser.NANOSECOND, 0); }
+ public TerminalNode NATURALID() { return getToken(HqlParser.NATURALID, 0); }
+ public TerminalNode NEW() { return getToken(HqlParser.NEW, 0); }
+ public TerminalNode NEXT() { return getToken(HqlParser.NEXT, 0); }
+ public TerminalNode NO() { return getToken(HqlParser.NO, 0); }
+ public TerminalNode NOT() { return getToken(HqlParser.NOT, 0); }
+ public TerminalNode NULLS() { return getToken(HqlParser.NULLS, 0); }
+ public TerminalNode OBJECT() { return getToken(HqlParser.OBJECT, 0); }
+ public TerminalNode OF() { return getToken(HqlParser.OF, 0); }
+ public TerminalNode OFFSET() { return getToken(HqlParser.OFFSET, 0); }
+ public TerminalNode OFFSET_DATETIME() { return getToken(HqlParser.OFFSET_DATETIME, 0); }
+ public TerminalNode ON() { return getToken(HqlParser.ON, 0); }
+ public TerminalNode ONLY() { return getToken(HqlParser.ONLY, 0); }
+ public TerminalNode OR() { return getToken(HqlParser.OR, 0); }
+ public TerminalNode ORDER() { return getToken(HqlParser.ORDER, 0); }
+ public TerminalNode OTHERS() { return getToken(HqlParser.OTHERS, 0); }
+ public TerminalNode OUTER() { return getToken(HqlParser.OUTER, 0); }
+ public TerminalNode OVER() { return getToken(HqlParser.OVER, 0); }
+ public TerminalNode OVERFLOW() { return getToken(HqlParser.OVERFLOW, 0); }
+ public TerminalNode OVERLAY() { return getToken(HqlParser.OVERLAY, 0); }
+ public TerminalNode PAD() { return getToken(HqlParser.PAD, 0); }
+ public TerminalNode PARTITION() { return getToken(HqlParser.PARTITION, 0); }
+ public TerminalNode PERCENT() { return getToken(HqlParser.PERCENT, 0); }
+ public TerminalNode PLACING() { return getToken(HqlParser.PLACING, 0); }
+ public TerminalNode POSITION() { return getToken(HqlParser.POSITION, 0); }
+ public TerminalNode POWER() { return getToken(HqlParser.POWER, 0); }
+ public TerminalNode PRECEDING() { return getToken(HqlParser.PRECEDING, 0); }
+ public TerminalNode QUARTER() { return getToken(HqlParser.QUARTER, 0); }
+ public TerminalNode RANGE() { return getToken(HqlParser.RANGE, 0); }
+ public TerminalNode RESPECT() { return getToken(HqlParser.RESPECT, 0); }
+ public TerminalNode RIGHT() { return getToken(HqlParser.RIGHT, 0); }
+ public TerminalNode ROLLUP() { return getToken(HqlParser.ROLLUP, 0); }
+ public TerminalNode ROW() { return getToken(HqlParser.ROW, 0); }
+ public TerminalNode ROWS() { return getToken(HqlParser.ROWS, 0); }
+ public TerminalNode SEARCH() { return getToken(HqlParser.SEARCH, 0); }
+ public TerminalNode SECOND() { return getToken(HqlParser.SECOND, 0); }
+ public TerminalNode SELECT() { return getToken(HqlParser.SELECT, 0); }
+ public TerminalNode SET() { return getToken(HqlParser.SET, 0); }
+ public TerminalNode SIZE() { return getToken(HqlParser.SIZE, 0); }
+ public TerminalNode SOME() { return getToken(HqlParser.SOME, 0); }
+ public TerminalNode SUBSTRING() { return getToken(HqlParser.SUBSTRING, 0); }
+ public TerminalNode SUM() { return getToken(HqlParser.SUM, 0); }
+ public TerminalNode THEN() { return getToken(HqlParser.THEN, 0); }
+ public TerminalNode TIES() { return getToken(HqlParser.TIES, 0); }
+ public TerminalNode TIME() { return getToken(HqlParser.TIME, 0); }
+ public TerminalNode TIMESTAMP() { return getToken(HqlParser.TIMESTAMP, 0); }
+ public TerminalNode TIMEZONE_HOUR() { return getToken(HqlParser.TIMEZONE_HOUR, 0); }
+ public TerminalNode TIMEZONE_MINUTE() { return getToken(HqlParser.TIMEZONE_MINUTE, 0); }
+ public TerminalNode TO() { return getToken(HqlParser.TO, 0); }
+ public TerminalNode TRAILING() { return getToken(HqlParser.TRAILING, 0); }
+ public TerminalNode TREAT() { return getToken(HqlParser.TREAT, 0); }
+ public TerminalNode TRIM() { return getToken(HqlParser.TRIM, 0); }
+ public TerminalNode TRUNC() { return getToken(HqlParser.TRUNC, 0); }
+ public TerminalNode TRUNCATE() { return getToken(HqlParser.TRUNCATE, 0); }
+ public TerminalNode TYPE() { return getToken(HqlParser.TYPE, 0); }
+ public TerminalNode UNBOUNDED() { return getToken(HqlParser.UNBOUNDED, 0); }
+ public TerminalNode UNION() { return getToken(HqlParser.UNION, 0); }
+ public TerminalNode UPDATE() { return getToken(HqlParser.UPDATE, 0); }
+ public TerminalNode USING() { return getToken(HqlParser.USING, 0); }
+ public TerminalNode VALUE() { return getToken(HqlParser.VALUE, 0); }
+ public TerminalNode VALUES() { return getToken(HqlParser.VALUES, 0); }
+ public TerminalNode VERSION() { return getToken(HqlParser.VERSION, 0); }
+ public TerminalNode VERSIONED() { return getToken(HqlParser.VERSIONED, 0); }
+ public TerminalNode WEEK() { return getToken(HqlParser.WEEK, 0); }
+ public TerminalNode WHEN() { return getToken(HqlParser.WHEN, 0); }
+ public TerminalNode WHERE() { return getToken(HqlParser.WHERE, 0); }
+ public TerminalNode WITH() { return getToken(HqlParser.WITH, 0); }
+ public TerminalNode WITHIN() { return getToken(HqlParser.WITHIN, 0); }
+ public TerminalNode WITHOUT() { return getToken(HqlParser.WITHOUT, 0); }
+ public TerminalNode YEAR() { return getToken(HqlParser.YEAR, 0); }
+ public ReservedWordContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_reservedWord; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).enterReservedWord(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof HqlListener ) ((HqlListener)listener).exitReservedWord(this);
+ }
+ }
+
+ public final ReservedWordContext reservedWord() throws RecognitionException {
+ ReservedWordContext _localctx = new ReservedWordContext(_ctx, getState());
+ enterRule(_localctx, 232, RULE_reservedWord);
+ int _la;
+ try {
+ setState(1296);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case IDENTIFICATION_VARIABLE:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1294);
+ match(IDENTIFICATION_VARIABLE);
+ }
+ break;
+ case ALL:
+ case AND:
+ case ANY:
+ case AS:
+ case ASC:
+ case AVG:
+ case BETWEEN:
+ case BOTH:
+ case BREADTH:
+ case BY:
+ case CASE:
+ case CAST:
+ case COLLATE:
+ case COUNT:
+ case CROSS:
+ case CUBE:
+ case CURRENT:
+ case CURRENT_DATE:
+ case CURRENT_INSTANT:
+ case CURRENT_TIME:
+ case CURRENT_TIMESTAMP:
+ case CYCLE:
+ case DATE:
+ case DATETIME:
+ case DAY:
+ case DEFAULT:
+ case DELETE:
+ case DEPTH:
+ case DESC:
+ case DISTINCT:
+ case ELEMENT:
+ case ELEMENTS:
+ case ELSE:
+ case EMPTY:
+ case END:
+ case ENTRY:
+ case EPOCH:
+ case ERROR:
+ case ESCAPE:
+ case EVERY:
+ case EXCEPT:
+ case EXCLUDE:
+ case EXISTS:
+ case EXTRACT:
+ case FETCH:
+ case FILTER:
+ case FIRST:
+ case FLOOR:
+ case FOLLOWING:
+ case FOR:
+ case FORMAT:
+ case FROM:
+ case FULL:
+ case FUNCTION:
+ case GROUP:
+ case GROUPS:
+ case HAVING:
+ case HOUR:
+ case ID:
+ case IGNORE:
+ case ILIKE:
+ case IN:
+ case INDEX:
+ case INDICES:
+ case INNER:
+ case INSERT:
+ case INSTANT:
+ case INTERSECT:
+ case INTO:
+ case IS:
+ case JOIN:
+ case KEY:
+ case LAST:
+ case LEADING:
+ case LEFT:
+ case LIKE:
+ case LIMIT:
+ case LIST:
+ case LISTAGG:
+ case LOCAL:
+ case LOCAL_DATE:
+ case LOCAL_DATETIME:
+ case LOCAL_TIME:
+ case MAP:
+ case MATERIALIZED:
+ case MAX:
+ case MAXELEMENT:
+ case MAXINDEX:
+ case MEMBER:
+ case MICROSECOND:
+ case MILLISECOND:
+ case MIN:
+ case MINELEMENT:
+ case MININDEX:
+ case MINUTE:
+ case MONTH:
+ case NANOSECOND:
+ case NATURALID:
+ case NEW:
+ case NEXT:
+ case NO:
+ case NOT:
+ case NULLS:
+ case OBJECT:
+ case OF:
+ case OFFSET:
+ case OFFSET_DATETIME:
+ case ON:
+ case ONLY:
+ case OR:
+ case ORDER:
+ case OTHERS:
+ case OUTER:
+ case OVER:
+ case OVERFLOW:
+ case OVERLAY:
+ case PAD:
+ case PARTITION:
+ case PERCENT:
+ case PLACING:
+ case POSITION:
+ case POWER:
+ case PRECEDING:
+ case QUARTER:
+ case RANGE:
+ case RESPECT:
+ case RIGHT:
+ case ROLLUP:
+ case ROW:
+ case ROWS:
+ case SEARCH:
+ case SECOND:
+ case SELECT:
+ case SET:
+ case SIZE:
+ case SOME:
+ case SUBSTRING:
+ case SUM:
+ case THEN:
+ case TIES:
+ case TIME:
+ case TIMESTAMP:
+ case TIMEZONE_HOUR:
+ case TIMEZONE_MINUTE:
+ case TO:
+ case TRAILING:
+ case TREAT:
+ case TRIM:
+ case TRUNC:
+ case TRUNCATE:
+ case TYPE:
+ case UNBOUNDED:
+ case UNION:
+ case UPDATE:
+ case USING:
+ case VALUE:
+ case VALUES:
+ case VERSION:
+ case VERSIONED:
+ case WEEK:
+ case WHEN:
+ case WHERE:
+ case WITH:
+ case WITHIN:
+ case WITHOUT:
+ case YEAR:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1295);
+ ((ReservedWordContext)_localctx).f = _input.LT(1);
+ _la = _input.LA(1);
+ if ( !(((((_la - 25)) & ~0x3f) == 0 && ((1L << (_la - 25)) & -2427721674137633L) != 0) || ((((_la - 89)) & ~0x3f) == 0 && ((1L << (_la - 89)) & -35184374202369L) != 0) || ((((_la - 153)) & ~0x3f) == 0 && ((1L << (_la - 153)) & 140737219919871L) != 0)) ) {
+ ((ReservedWordContext)_localctx).f = (Token)_errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) {
+ switch (ruleIndex) {
+ case 62:
+ return expression_sempred((ExpressionContext)_localctx, predIndex);
+ case 95:
+ return predicate_sempred((PredicateContext)_localctx, predIndex);
+ }
+ return true;
+ }
+ private boolean expression_sempred(ExpressionContext _localctx, int predIndex) {
+ switch (predIndex) {
+ case 0:
+ return precpred(_ctx, 6);
+ case 1:
+ return precpred(_ctx, 5);
+ case 2:
+ return precpred(_ctx, 4);
+ case 3:
+ return precpred(_ctx, 8);
+ case 4:
+ return precpred(_ctx, 7);
+ }
+ return true;
+ }
+ private boolean predicate_sempred(PredicateContext _localctx, int predIndex) {
+ switch (predIndex) {
+ case 5:
+ return precpred(_ctx, 3);
+ case 6:
+ return precpred(_ctx, 2);
+ }
+ return true;
+ }
+
+ public static final String _serializedATN =
+ "\u0004\u0001\u00cf\u0513\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\u0007"+
+ "1\u00022\u00072\u00023\u00073\u00024\u00074\u00025\u00075\u00026\u0007"+
+ "6\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\u0007D\u0002E\u0007"+
+ "E\u0002F\u0007F\u0002G\u0007G\u0002H\u0007H\u0002I\u0007I\u0002J\u0007"+
+ "J\u0002K\u0007K\u0002L\u0007L\u0002M\u0007M\u0002N\u0007N\u0002O\u0007"+
+ "O\u0002P\u0007P\u0002Q\u0007Q\u0002R\u0007R\u0002S\u0007S\u0002T\u0007"+
+ "T\u0002U\u0007U\u0002V\u0007V\u0002W\u0007W\u0002X\u0007X\u0002Y\u0007"+
+ "Y\u0002Z\u0007Z\u0002[\u0007[\u0002\\\u0007\\\u0002]\u0007]\u0002^\u0007"+
+ "^\u0002_\u0007_\u0002`\u0007`\u0002a\u0007a\u0002b\u0007b\u0002c\u0007"+
+ "c\u0002d\u0007d\u0002e\u0007e\u0002f\u0007f\u0002g\u0007g\u0002h\u0007"+
+ "h\u0002i\u0007i\u0002j\u0007j\u0002k\u0007k\u0002l\u0007l\u0002m\u0007"+
+ "m\u0002n\u0007n\u0002o\u0007o\u0002p\u0007p\u0002q\u0007q\u0002r\u0007"+
+ "r\u0002s\u0007s\u0002t\u0007t\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
+ "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0003\u0001\u00f2\b\u0001\u0001"+
+ "\u0002\u0001\u0002\u0001\u0003\u0003\u0003\u00f7\b\u0003\u0001\u0003\u0001"+
+ "\u0003\u0001\u0003\u0001\u0003\u0005\u0003\u00fd\b\u0003\n\u0003\f\u0003"+
+ "\u0100\t\u0003\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0005\u0004"+
+ "\u0106\b\u0004\n\u0004\f\u0004\u0109\t\u0004\u0001\u0005\u0001\u0005\u0001"+
+ "\u0005\u0003\u0005\u010e\b\u0005\u0001\u0005\u0003\u0005\u0111\b\u0005"+
+ "\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0003\u0005\u0117\b\u0005"+
+ "\u0001\u0005\u0003\u0005\u011a\b\u0005\u0001\u0006\u0001\u0006\u0001\u0006"+
+ "\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0007"+
+ "\u0001\u0007\u0001\u0007\u0005\u0007\u0127\b\u0007\n\u0007\f\u0007\u012a"+
+ "\t\u0007\u0001\b\u0001\b\u0003\b\u012e\b\b\u0001\b\u0003\b\u0131\b\b\u0001"+
+ "\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0003"+
+ "\t\u013c\b\t\u0001\t\u0001\t\u0003\t\u0140\b\t\u0001\n\u0001\n\u0001\n"+
+ "\u0005\n\u0145\b\n\n\n\f\n\u0148\t\n\u0001\u000b\u0001\u000b\u0001\u000b"+
+ "\u0001\u000b\u0001\u000b\u0003\u000b\u014f\b\u000b\u0001\u000b\u0003\u000b"+
+ "\u0152\b\u000b\u0001\f\u0001\f\u0003\f\u0156\b\f\u0001\f\u0003\f\u0159"+
+ "\b\f\u0001\f\u0001\f\u0003\f\u015d\b\f\u0003\f\u015f\b\f\u0001\f\u0001"+
+ "\f\u0003\f\u0163\b\f\u0001\f\u0001\f\u0003\f\u0167\b\f\u0003\f\u0169\b"+
+ "\f\u0001\f\u0003\f\u016c\b\f\u0003\f\u016e\b\f\u0001\r\u0001\r\u0003\r"+
+ "\u0172\b\r\u0001\r\u0003\r\u0175\b\r\u0001\r\u0003\r\u0178\b\r\u0001\u000e"+
+ "\u0001\u000e\u0001\u000e\u0001\u000e\u0005\u000e\u017e\b\u000e\n\u000e"+
+ "\f\u000e\u0181\t\u000e\u0001\u000f\u0001\u000f\u0005\u000f\u0185\b\u000f"+
+ "\n\u000f\f\u000f\u0188\t\u000f\u0001\u0010\u0001\u0010\u0001\u0010\u0003"+
+ "\u0010\u018d\b\u0010\u0001\u0011\u0001\u0011\u0003\u0011\u0191\b\u0011"+
+ "\u0001\u0011\u0003\u0011\u0194\b\u0011\u0001\u0011\u0001\u0011\u0001\u0011"+
+ "\u0001\u0011\u0003\u0011\u019a\b\u0011\u0003\u0011\u019c\b\u0011\u0001"+
+ "\u0012\u0001\u0012\u0001\u0012\u0003\u0012\u01a1\b\u0012\u0001\u0012\u0001"+
+ "\u0012\u0003\u0012\u01a5\b\u0012\u0001\u0013\u0001\u0013\u0003\u0013\u01a9"+
+ "\b\u0013\u0001\u0013\u0003\u0013\u01ac\b\u0013\u0001\u0013\u0001\u0013"+
+ "\u0001\u0013\u0001\u0013\u0003\u0013\u01b2\b\u0013\u0003\u0013\u01b4\b"+
+ "\u0013\u0001\u0014\u0001\u0014\u0003\u0014\u01b8\b\u0014\u0001\u0014\u0001"+
+ "\u0014\u0001\u0014\u0003\u0014\u01bd\b\u0014\u0001\u0015\u0001\u0015\u0003"+
+ "\u0015\u01c1\b\u0015\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0005"+
+ "\u0016\u01c7\b\u0016\n\u0016\f\u0016\u01ca\t\u0016\u0001\u0017\u0001\u0017"+
+ "\u0001\u0017\u0001\u0017\u0001\u0018\u0001\u0018\u0003\u0018\u01d2\b\u0018"+
+ "\u0001\u0018\u0001\u0018\u0003\u0018\u01d6\b\u0018\u0001\u0019\u0001\u0019"+
+ "\u0003\u0019\u01da\b\u0019\u0001\u0019\u0001\u0019\u0001\u0019\u0001\u0019"+
+ "\u0003\u0019\u01e0\b\u0019\u0001\u001a\u0001\u001a\u0001\u001a\u0001\u001a"+
+ "\u0005\u001a\u01e6\b\u001a\n\u001a\f\u001a\u01e9\t\u001a\u0001\u001a\u0001"+
+ "\u001a\u0001\u001b\u0001\u001b\u0001\u001b\u0001\u001b\u0005\u001b\u01f1"+
+ "\b\u001b\n\u001b\f\u001b\u01f4\t\u001b\u0001\u001c\u0001\u001c\u0001\u001c"+
+ "\u0001\u001c\u0005\u001c\u01fa\b\u001c\n\u001c\f\u001c\u01fd\t\u001c\u0001"+
+ "\u001c\u0001\u001c\u0001\u001d\u0001\u001d\u0001\u001d\u0001\u001d\u0001"+
+ "\u001d\u0001\u001d\u0001\u001e\u0003\u001e\u0208\b\u001e\u0001\u001e\u0001"+
+ "\u001e\u0001\u001f\u0001\u001f\u0001\u001f\u0003\u001f\u020f\b\u001f\u0001"+
+ " \u0001 \u0003 \u0213\b \u0001 \u0003 \u0216\b \u0001!\u0001!\u0001!\u0003"+
+ "!\u021b\b!\u0001\"\u0001\"\u0001#\u0001#\u0001#\u0001$\u0001$\u0001$\u0001"+
+ "%\u0001%\u0001%\u0003%\u0228\b%\u0001&\u0001&\u0001&\u0001&\u0001&\u0001"+
+ "&\u0003&\u0230\b&\u0001&\u0001&\u0001&\u0001&\u0003&\u0236\b&\u0001\'"+
+ "\u0001\'\u0001(\u0001(\u0003(\u023c\b(\u0001(\u0001(\u0001)\u0001)\u0001"+
+ ")\u0005)\u0243\b)\n)\f)\u0246\t)\u0001*\u0001*\u0003*\u024a\b*\u0001+"+
+ "\u0001+\u0001+\u0001+\u0003+\u0250\b+\u0001,\u0001,\u0001,\u0001,\u0001"+
+ ",\u0001-\u0001-\u0001-\u0001-\u0001-\u0001.\u0001.\u0001.\u0001.\u0005"+
+ ".\u0260\b.\n.\f.\u0263\t.\u0001/\u0003/\u0266\b/\u0001/\u0003/\u0269\b"+
+ "/\u0001/\u0003/\u026c\b/\u0001/\u0003/\u026f\b/\u00010\u00010\u00010\u0001"+
+ "0\u00030\u0275\b0\u00011\u00011\u00011\u00012\u00012\u00012\u00012\u0001"+
+ "2\u00012\u00032\u0280\b2\u00013\u00013\u00013\u00013\u00013\u00053\u0287"+
+ "\b3\n3\f3\u028a\t3\u00014\u00014\u00014\u00014\u00014\u00054\u0291\b4"+
+ "\n4\f4\u0294\t4\u00015\u00015\u00015\u00015\u00055\u029a\b5\n5\f5\u029d"+
+ "\t5\u00016\u00016\u00036\u02a1\b6\u00016\u00016\u00036\u02a5\b6\u0001"+
+ "6\u00016\u00036\u02a9\b6\u00036\u02ab\b6\u00017\u00017\u00017\u00017\u0001"+
+ "7\u00017\u00037\u02b3\b7\u00018\u00018\u00019\u00019\u0001:\u0001:\u0001"+
+ ";\u0001;\u0001;\u0001;\u0001;\u0001;\u0001;\u0001;\u0001;\u0001;\u0001"+
+ ";\u0001;\u0001;\u0001;\u0003;\u02c9\b;\u0001<\u0001<\u0001=\u0001=\u0001"+
+ "=\u0001=\u0001=\u0005=\u02d2\b=\n=\f=\u02d5\t=\u0001=\u0003=\u02d8\b="+
+ "\u0001>\u0001>\u0001>\u0001>\u0001>\u0001>\u0001>\u0001>\u0001>\u0004"+
+ ">\u02e3\b>\u000b>\f>\u02e4\u0001>\u0001>\u0001>\u0001>\u0001>\u0001>\u0001"+
+ ">\u0001>\u0001>\u0001>\u0001>\u0001>\u0001>\u0001>\u0001>\u0001>\u0001"+
+ ">\u0001>\u0001>\u0001>\u0003>\u02fb\b>\u0001>\u0001>\u0001>\u0001>\u0001"+
+ ">\u0001>\u0001>\u0001>\u0001>\u0001>\u0001>\u0001>\u0001>\u0001>\u0005"+
+ ">\u030b\b>\n>\f>\u030e\t>\u0001?\u0001?\u0001?\u0001?\u0001?\u0003?\u0315"+
+ "\b?\u0001@\u0001@\u0003@\u0319\b@\u0001A\u0001A\u0003A\u031d\bA\u0001"+
+ "A\u0003A\u0320\bA\u0001B\u0001B\u0003B\u0324\bB\u0001C\u0001C\u0001C\u0001"+
+ "C\u0001C\u0003C\u032b\bC\u0001D\u0001D\u0005D\u032f\bD\nD\fD\u0332\tD"+
+ "\u0001E\u0001E\u0001E\u0001F\u0001F\u0003F\u0339\bF\u0001G\u0001G\u0001"+
+ "G\u0004G\u033e\bG\u000bG\fG\u033f\u0001G\u0001G\u0003G\u0344\bG\u0001"+
+ "G\u0001G\u0001H\u0001H\u0004H\u034a\bH\u000bH\fH\u034b\u0001H\u0001H\u0003"+
+ "H\u0350\bH\u0001H\u0001H\u0001I\u0001I\u0001I\u0001I\u0001I\u0001J\u0001"+
+ "J\u0001J\u0001J\u0001J\u0001K\u0001K\u0001K\u0001K\u0003K\u0362\bK\u0001"+
+ "K\u0001K\u0003K\u0366\bK\u0001K\u0003K\u0369\bK\u0001K\u0003K\u036c\b"+
+ "K\u0001K\u0003K\u036f\bK\u0001K\u0001K\u0001K\u0001K\u0001K\u0001K\u0001"+
+ "K\u0001K\u0001K\u0001K\u0001K\u0003K\u037c\bK\u0001L\u0003L\u037f\bL\u0001"+
+ "L\u0001L\u0001L\u0005L\u0384\bL\nL\fL\u0387\tL\u0001M\u0001M\u0001M\u0001"+
+ "M\u0001M\u0001N\u0001N\u0001N\u0001N\u0001N\u0001N\u0001O\u0001O\u0001"+
+ "O\u0003O\u0397\bO\u0001O\u0003O\u039a\bO\u0001O\u0003O\u039d\bO\u0001"+
+ "O\u0001O\u0001P\u0001P\u0001P\u0001P\u0001P\u0005P\u03a6\bP\nP\fP\u03a9"+
+ "\tP\u0001Q\u0001Q\u0001Q\u0003Q\u03ae\bQ\u0001Q\u0001Q\u0001Q\u0001Q\u0001"+
+ "Q\u0001Q\u0003Q\u03b6\bQ\u0003Q\u03b8\bQ\u0001R\u0001R\u0001R\u0001R\u0001"+
+ "R\u0001R\u0001R\u0001R\u0001R\u0001R\u0003R\u03c4\bR\u0001S\u0001S\u0001"+
+ "S\u0001S\u0001S\u0001S\u0001S\u0001S\u0001S\u0001S\u0003S\u03d0\bS\u0001"+
+ "T\u0001T\u0001T\u0001T\u0001T\u0001T\u0001T\u0001T\u0001T\u0001T\u0003"+
+ "T\u03dc\bT\u0001U\u0001U\u0001U\u0001U\u0001U\u0001U\u0001U\u0001V\u0001"+
+ "V\u0001V\u0001V\u0001V\u0003V\u03ea\bV\u0001V\u0003V\u03ed\bV\u0001W\u0001"+
+ "W\u0001W\u0001W\u0001W\u0001W\u0001W\u0005W\u03f6\bW\nW\fW\u03f9\tW\u0001"+
+ "X\u0001X\u0001X\u0001X\u0001X\u0001X\u0001X\u0001X\u0001X\u0001X\u0001"+
+ "X\u0001X\u0003X\u0407\bX\u0001Y\u0001Y\u0001Y\u0003Y\u040c\bY\u0001Y\u0003"+
+ "Y\u040f\bY\u0001Y\u0003Y\u0412\bY\u0001Y\u0001Y\u0001Y\u0001Z\u0001Z\u0001"+
+ "[\u0001[\u0001[\u0001[\u0001[\u0001[\u0001[\u0001[\u0001[\u0001[\u0001"+
+ "[\u0001[\u0001[\u0001[\u0001[\u0001[\u0003[\u0429\b[\u0001\\\u0001\\\u0001"+
+ "\\\u0001\\\u0001\\\u0001\\\u0001\\\u0001\\\u0001\\\u0001\\\u0001\\\u0001"+
+ "\\\u0001\\\u0001\\\u0001\\\u0001\\\u0003\\\u043b\b\\\u0001]\u0001]\u0001"+
+ "]\u0001]\u0001]\u0001]\u0001]\u0003]\u0444\b]\u0001^\u0001^\u0001^\u0001"+
+ "_\u0001_\u0001_\u0001_\u0001_\u0001_\u0001_\u0001_\u0001_\u0001_\u0001"+
+ "_\u0001_\u0001_\u0001_\u0001_\u0003_\u0458\b_\u0001_\u0001_\u0001_\u0001"+
+ "_\u0001_\u0001_\u0005_\u0460\b_\n_\f_\u0463\t_\u0001`\u0001`\u0003`\u0467"+
+ "\b`\u0001a\u0001a\u0001a\u0001a\u0001b\u0001b\u0003b\u046f\bb\u0001b\u0001"+
+ "b\u0001b\u0001b\u0001b\u0001c\u0001c\u0001c\u0003c\u0479\bc\u0001c\u0001"+
+ "c\u0001c\u0001c\u0001c\u0003c\u0480\bc\u0001c\u0001c\u0001c\u0001c\u0003"+
+ "c\u0486\bc\u0001d\u0001d\u0003d\u048a\bd\u0001d\u0001d\u0001d\u0001d\u0001"+
+ "d\u0003d\u0491\bd\u0003d\u0493\bd\u0001e\u0001e\u0003e\u0497\be\u0001"+
+ "e\u0001e\u0001e\u0001f\u0001f\u0001f\u0001f\u0001f\u0001f\u0001f\u0001"+
+ "f\u0001f\u0001f\u0001f\u0001f\u0001f\u0001f\u0005f\u04aa\bf\nf\ff\u04ad"+
+ "\tf\u0003f\u04af\bf\u0001f\u0003f\u04b2\bf\u0001g\u0001g\u0001g\u0001"+
+ "g\u0001g\u0001g\u0001g\u0001g\u0003g\u04bc\bg\u0001h\u0001h\u0001h\u0003"+
+ "h\u04c1\bh\u0001h\u0001h\u0001h\u0001h\u0003h\u04c7\bh\u0001h\u0001h\u0001"+
+ "h\u0001h\u0003h\u04cd\bh\u0001i\u0001i\u0001i\u0003i\u04d2\bi\u0001j\u0001"+
+ "j\u0001j\u0005j\u04d7\bj\nj\fj\u04da\tj\u0001k\u0001k\u0003k\u04de\bk"+
+ "\u0001k\u0003k\u04e1\bk\u0001l\u0001l\u0003l\u04e5\bl\u0001m\u0001m\u0003"+
+ "m\u04e9\bm\u0001n\u0001n\u0001n\u0003n\u04ee\bn\u0001o\u0001o\u0001o\u0003"+
+ "o\u04f3\bo\u0001o\u0001o\u0003o\u04f7\bo\u0003o\u04f9\bo\u0001p\u0001"+
+ "p\u0001p\u0005p\u04fe\bp\np\fp\u0501\tp\u0001q\u0001q\u0001r\u0001r\u0001"+
+ "s\u0001s\u0001s\u0005s\u050a\bs\ns\fs\u050d\ts\u0001t\u0001t\u0003t\u0511"+
+ "\bt\u0001t\u0000\u0002|\u00beu\u0000\u0002\u0004\u0006\b\n\f\u000e\u0010"+
+ "\u0012\u0014\u0016\u0018\u001a\u001c\u001e \"$&(*,.02468:<>@BDFHJLNPR"+
+ "TVXZ\\^`bdfhjlnprtvxz|~\u0080\u0082\u0084\u0086\u0088\u008a\u008c\u008e"+
+ "\u0090\u0092\u0094\u0096\u0098\u009a\u009c\u009e\u00a0\u00a2\u00a4\u00a6"+
+ "\u00a8\u00aa\u00ac\u00ae\u00b0\u00b2\u00b4\u00b6\u00b8\u00ba\u00bc\u00be"+
+ "\u00c0\u00c2\u00c4\u00c6\u00c8\u00ca\u00cc\u00ce\u00d0\u00d2\u00d4\u00d6"+
+ "\u00d8\u00da\u00dc\u00de\u00e0\u00e2\u00e4\u00e6\u00e8\u0000\u0017\u0002"+
+ "\u0000\"\"66\u0002\u0000\u001d\u001d77\u0002\u0000KKff\u0001\u0000\u00a1"+
+ "\u00a2\u0002\u0000KK\u0083\u0083\u0003\u0000RRii\u009f\u009f\u0002\u0000"+
+ "\u008c\u008c\u00c4\u00c4\u0002\u0000HH\u00b5\u00b5\u0001\u0000\u00c8\u00ca"+
+ "\u0001\u0000\u00cb\u00cd\u0002\u0000++oo\u0003\u0000++oo\u008a\u008a\b"+
+ "\u000033??WW~\u0080\u009c\u009c\u00a4\u00a4\u00c1\u00c1\u00c7\u00c7\u0001"+
+ "\u0000\b\t\u0002\u0000\n\n\u001e\u001e\u0003\u0000UU\u009d\u009d\u00a2"+
+ "\u00a2\u0003\u0000!!hh\u00b2\u00b2\u0002\u0000\u0019\u0019BB\u0002\u0000"+
+ "::]]\u0002\u0000\u001b\u001b\u00a8\u00a8\u0002\u0000\u0004\u0004\u000f"+
+ "\u0015\u0002\u0000ZZjj\n\u0000\u0019\u001d\u001f%\'EGGIKMfhmo\u0085\u0087"+
+ "\u00b4\u00b6\u00c7\u0578\u0000\u00ea\u0001\u0000\u0000\u0000\u0002\u00f1"+
+ "\u0001\u0000\u0000\u0000\u0004\u00f3\u0001\u0000\u0000\u0000\u0006\u00f6"+
+ "\u0001\u0000\u0000\u0000\b\u0101\u0001\u0000\u0000\u0000\n\u010a\u0001"+
+ "\u0000\u0000\u0000\f\u011b\u0001\u0000\u0000\u0000\u000e\u0123\u0001\u0000"+
+ "\u0000\u0000\u0010\u012b\u0001\u0000\u0000\u0000\u0012\u0132\u0001\u0000"+
+ "\u0000\u0000\u0014\u0141\u0001\u0000\u0000\u0000\u0016\u014e\u0001\u0000"+
+ "\u0000\u0000\u0018\u016d\u0001\u0000\u0000\u0000\u001a\u016f\u0001\u0000"+
+ "\u0000\u0000\u001c\u0179\u0001\u0000\u0000\u0000\u001e\u0182\u0001\u0000"+
+ "\u0000\u0000 \u018c\u0001\u0000\u0000\u0000\"\u019b\u0001\u0000\u0000"+
+ "\u0000$\u019d\u0001\u0000\u0000\u0000&\u01b3\u0001\u0000\u0000\u0000("+
+ "\u01b5\u0001\u0000\u0000\u0000*\u01be\u0001\u0000\u0000\u0000,\u01c2\u0001"+
+ "\u0000\u0000\u0000.\u01cb\u0001\u0000\u0000\u00000\u01cf\u0001\u0000\u0000"+
+ "\u00002\u01d7\u0001\u0000\u0000\u00004\u01e1\u0001\u0000\u0000\u00006"+
+ "\u01ec\u0001\u0000\u0000\u00008\u01f5\u0001\u0000\u0000\u0000:\u0200\u0001"+
+ "\u0000\u0000\u0000<\u0207\u0001\u0000\u0000\u0000>\u020e\u0001\u0000\u0000"+
+ "\u0000@\u0210\u0001\u0000\u0000\u0000B\u021a\u0001\u0000\u0000\u0000D"+
+ "\u021c\u0001\u0000\u0000\u0000F\u021e\u0001\u0000\u0000\u0000H\u0221\u0001"+
+ "\u0000\u0000\u0000J\u0224\u0001\u0000\u0000\u0000L\u0229\u0001\u0000\u0000"+
+ "\u0000N\u0237\u0001\u0000\u0000\u0000P\u0239\u0001\u0000\u0000\u0000R"+
+ "\u023f\u0001\u0000\u0000\u0000T\u0247\u0001\u0000\u0000\u0000V\u024f\u0001"+
+ "\u0000\u0000\u0000X\u0251\u0001\u0000\u0000\u0000Z\u0256\u0001\u0000\u0000"+
+ "\u0000\\\u025b\u0001\u0000\u0000\u0000^\u026e\u0001\u0000\u0000\u0000"+
+ "`\u0270\u0001\u0000\u0000\u0000b\u0276\u0001\u0000\u0000\u0000d\u0279"+
+ "\u0001\u0000\u0000\u0000f\u0281\u0001\u0000\u0000\u0000h\u028b\u0001\u0000"+
+ "\u0000\u0000j\u0295\u0001\u0000\u0000\u0000l\u02aa\u0001\u0000\u0000\u0000"+
+ "n\u02b2\u0001\u0000\u0000\u0000p\u02b4\u0001\u0000\u0000\u0000r\u02b6"+
+ "\u0001\u0000\u0000\u0000t\u02b8\u0001\u0000\u0000\u0000v\u02c8\u0001\u0000"+
+ "\u0000\u0000x\u02ca\u0001\u0000\u0000\u0000z\u02d7\u0001\u0000\u0000\u0000"+
+ "|\u02fa\u0001\u0000\u0000\u0000~\u0314\u0001\u0000\u0000\u0000\u0080\u0318"+
+ "\u0001\u0000\u0000\u0000\u0082\u031f\u0001\u0000\u0000\u0000\u0084\u0321"+
+ "\u0001\u0000\u0000\u0000\u0086\u0325\u0001\u0000\u0000\u0000\u0088\u032c"+
+ "\u0001\u0000\u0000\u0000\u008a\u0333\u0001\u0000\u0000\u0000\u008c\u0338"+
+ "\u0001\u0000\u0000\u0000\u008e\u033a\u0001\u0000\u0000\u0000\u0090\u0347"+
+ "\u0001\u0000\u0000\u0000\u0092\u0353\u0001\u0000\u0000\u0000\u0094\u0358"+
+ "\u0001\u0000\u0000\u0000\u0096\u037b\u0001\u0000\u0000\u0000\u0098\u037e"+
+ "\u0001\u0000\u0000\u0000\u009a\u0388\u0001\u0000\u0000\u0000\u009c\u038d"+
+ "\u0001\u0000\u0000\u0000\u009e\u0393\u0001\u0000\u0000\u0000\u00a0\u03a0"+
+ "\u0001\u0000\u0000\u0000\u00a2\u03b7\u0001\u0000\u0000\u0000\u00a4\u03c3"+
+ "\u0001\u0000\u0000\u0000\u00a6\u03cf\u0001\u0000\u0000\u0000\u00a8\u03db"+
+ "\u0001\u0000\u0000\u0000\u00aa\u03dd\u0001\u0000\u0000\u0000\u00ac\u03e4"+
+ "\u0001\u0000\u0000\u0000\u00ae\u03ee\u0001\u0000\u0000\u0000\u00b0\u0406"+
+ "\u0001\u0000\u0000\u0000\u00b2\u0408\u0001\u0000\u0000\u0000\u00b4\u0416"+
+ "\u0001\u0000\u0000\u0000\u00b6\u0428\u0001\u0000\u0000\u0000\u00b8\u043a"+
+ "\u0001\u0000\u0000\u0000\u00ba\u043c\u0001\u0000\u0000\u0000\u00bc\u0445"+
+ "\u0001\u0000\u0000\u0000\u00be\u0457\u0001\u0000\u0000\u0000\u00c0\u0466"+
+ "\u0001\u0000\u0000\u0000\u00c2\u0468\u0001\u0000\u0000\u0000\u00c4\u046c"+
+ "\u0001\u0000\u0000\u0000\u00c6\u0485\u0001\u0000\u0000\u0000\u00c8\u0487"+
+ "\u0001\u0000\u0000\u0000\u00ca\u0494\u0001\u0000\u0000\u0000\u00cc\u04b1"+
+ "\u0001\u0000\u0000\u0000\u00ce\u04bb\u0001\u0000\u0000\u0000\u00d0\u04cc"+
+ "\u0001\u0000\u0000\u0000\u00d2\u04d1\u0001\u0000\u0000\u0000\u00d4\u04d3"+
+ "\u0001\u0000\u0000\u0000\u00d6\u04dd\u0001\u0000\u0000\u0000\u00d8\u04e4"+
+ "\u0001\u0000\u0000\u0000\u00da\u04e8\u0001\u0000\u0000\u0000\u00dc\u04ed"+
+ "\u0001\u0000\u0000\u0000\u00de\u04f8\u0001\u0000\u0000\u0000\u00e0\u04fa"+
+ "\u0001\u0000\u0000\u0000\u00e2\u0502\u0001\u0000\u0000\u0000\u00e4\u0504"+
+ "\u0001\u0000\u0000\u0000\u00e6\u0506\u0001\u0000\u0000\u0000\u00e8\u0510"+
+ "\u0001\u0000\u0000\u0000\u00ea\u00eb\u0003\u0002\u0001\u0000\u00eb\u00ec"+
+ "\u0005\u0000\u0000\u0001\u00ec\u0001\u0001\u0000\u0000\u0000\u00ed\u00f2"+
+ "\u0003\u0004\u0002\u0000\u00ee\u00f2\u0003(\u0014\u0000\u00ef\u00f2\u0003"+
+ "0\u0018\u0000\u00f0\u00f2\u00032\u0019\u0000\u00f1\u00ed\u0001\u0000\u0000"+
+ "\u0000\u00f1\u00ee\u0001\u0000\u0000\u0000\u00f1\u00ef\u0001\u0000\u0000"+
+ "\u0000\u00f1\u00f0\u0001\u0000\u0000\u0000\u00f2\u0003\u0001\u0000\u0000"+
+ "\u0000\u00f3\u00f4\u0003\u0006\u0003\u0000\u00f4\u0005\u0001\u0000\u0000"+
+ "\u0000\u00f5\u00f7\u0003\b\u0004\u0000\u00f6\u00f5\u0001\u0000\u0000\u0000"+
+ "\u00f6\u00f7\u0001\u0000\u0000\u0000\u00f7\u00f8\u0001\u0000\u0000\u0000"+
+ "\u00f8\u00fe\u0003\u0016\u000b\u0000\u00f9\u00fa\u0003l6\u0000\u00fa\u00fb"+
+ "\u0003\u0016\u000b\u0000\u00fb\u00fd\u0001\u0000\u0000\u0000\u00fc\u00f9"+
+ "\u0001\u0000\u0000\u0000\u00fd\u0100\u0001\u0000\u0000\u0000\u00fe\u00fc"+
+ "\u0001\u0000\u0000\u0000\u00fe\u00ff\u0001\u0000\u0000\u0000\u00ff\u0007"+
+ "\u0001\u0000\u0000\u0000\u0100\u00fe\u0001\u0000\u0000\u0000\u0101\u0102"+
+ "\u0005\u00c4\u0000\u0000\u0102\u0107\u0003\n\u0005\u0000\u0103\u0104\u0005"+
+ "\u0001\u0000\u0000\u0104\u0106\u0003\n\u0005\u0000\u0105\u0103\u0001\u0000"+
+ "\u0000\u0000\u0106\u0109\u0001\u0000\u0000\u0000\u0107\u0105\u0001\u0000"+
+ "\u0000\u0000\u0107\u0108\u0001\u0000\u0000\u0000\u0108\t\u0001\u0000\u0000"+
+ "\u0000\u0109\u0107\u0001\u0000\u0000\u0000\u010a\u010b\u0003\u00e2q\u0000"+
+ "\u010b\u0110\u0005\u001c\u0000\u0000\u010c\u010e\u0005\u0085\u0000\u0000"+
+ "\u010d\u010c\u0001\u0000\u0000\u0000\u010d\u010e\u0001\u0000\u0000\u0000"+
+ "\u010e\u010f\u0001\u0000\u0000\u0000\u010f\u0111\u0005t\u0000\u0000\u0110"+
+ "\u010d\u0001\u0000\u0000\u0000\u0110\u0111\u0001\u0000\u0000\u0000\u0111"+
+ "\u0112\u0001\u0000\u0000\u0000\u0112\u0113\u0005\u0002\u0000\u0000\u0113"+
+ "\u0114\u0003\u0006\u0003\u0000\u0114\u0116\u0005\u0003\u0000\u0000\u0115"+
+ "\u0117\u0003\f\u0006\u0000\u0116\u0115\u0001\u0000\u0000\u0000\u0116\u0117"+
+ "\u0001\u0000\u0000\u0000\u0117\u0119\u0001\u0000\u0000\u0000\u0118\u011a"+
+ "\u0003\u0012\t\u0000\u0119\u0118\u0001\u0000\u0000\u0000\u0119\u011a\u0001"+
+ "\u0000\u0000\u0000\u011a\u000b\u0001\u0000\u0000\u0000\u011b\u011c\u0005"+
+ "\u00a3\u0000\u0000\u011c\u011d\u0007\u0000\u0000\u0000\u011d\u011e\u0005"+
+ "K\u0000\u0000\u011e\u011f\u0005#\u0000\u0000\u011f\u0120\u0003\u000e\u0007"+
+ "\u0000\u0120\u0121\u0005\u00a6\u0000\u0000\u0121\u0122\u0003\u00e2q\u0000"+
+ "\u0122\r\u0001\u0000\u0000\u0000\u0123\u0128\u0003\u0010\b\u0000\u0124"+
+ "\u0125\u0005\u0001\u0000\u0000\u0125\u0127\u0003\u0010\b\u0000\u0126\u0124"+
+ "\u0001\u0000\u0000\u0000\u0127\u012a\u0001\u0000\u0000\u0000\u0128\u0126"+
+ "\u0001\u0000\u0000\u0000\u0128\u0129\u0001\u0000\u0000\u0000\u0129\u000f"+
+ "\u0001\u0000\u0000\u0000\u012a\u0128\u0001\u0000\u0000\u0000\u012b\u012d"+
+ "\u0003\u00e2q\u0000\u012c\u012e\u0003D\"\u0000\u012d\u012c\u0001\u0000"+
+ "\u0000\u0000\u012d\u012e\u0001\u0000\u0000\u0000\u012e\u0130\u0001\u0000"+
+ "\u0000\u0000\u012f\u0131\u0003F#\u0000\u0130\u012f\u0001\u0000\u0000\u0000"+
+ "\u0130\u0131\u0001\u0000\u0000\u0000\u0131\u0011\u0001\u0000\u0000\u0000"+
+ "\u0132\u0133\u00050\u0000\u0000\u0133\u0134\u0003\u0014\n\u0000\u0134"+
+ "\u0135\u0005\u00a6\u0000\u0000\u0135\u013b\u0003\u00e2q\u0000\u0136\u0137"+
+ "\u0005\u00b1\u0000\u0000\u0137\u0138\u0003n7\u0000\u0138\u0139\u00054"+
+ "\u0000\u0000\u0139\u013a\u0003n7\u0000\u013a\u013c\u0001\u0000\u0000\u0000"+
+ "\u013b\u0136\u0001\u0000\u0000\u0000\u013b\u013c\u0001\u0000\u0000\u0000"+
+ "\u013c\u013f\u0001\u0000\u0000\u0000\u013d\u013e\u0005\u00bc\u0000\u0000"+
+ "\u013e\u0140\u0003\u00e2q\u0000\u013f\u013d\u0001\u0000\u0000\u0000\u013f"+
+ "\u0140\u0001\u0000\u0000\u0000\u0140\u0013\u0001\u0000\u0000\u0000\u0141"+
+ "\u0146\u0003\u00e2q\u0000\u0142\u0143\u0005\u0001\u0000\u0000\u0143\u0145"+
+ "\u0003\u00e2q\u0000\u0144\u0142\u0001\u0000\u0000\u0000\u0145\u0148\u0001"+
+ "\u0000\u0000\u0000\u0146\u0144\u0001\u0000\u0000\u0000\u0146\u0147\u0001"+
+ "\u0000\u0000\u0000\u0147\u0015\u0001\u0000\u0000\u0000\u0148\u0146\u0001"+
+ "\u0000\u0000\u0000\u0149\u014f\u0003\u0018\f\u0000\u014a\u014b\u0005\u0002"+
+ "\u0000\u0000\u014b\u014c\u0003\u0006\u0003\u0000\u014c\u014d\u0005\u0003"+
+ "\u0000\u0000\u014d\u014f\u0001\u0000\u0000\u0000\u014e\u0149\u0001\u0000"+
+ "\u0000\u0000\u014e\u014a\u0001\u0000\u0000\u0000\u014f\u0151\u0001\u0000"+
+ "\u0000\u0000\u0150\u0152\u0003\u001a\r\u0000\u0151\u0150\u0001\u0000\u0000"+
+ "\u0000\u0151\u0152\u0001\u0000\u0000\u0000\u0152\u0017\u0001\u0000\u0000"+
+ "\u0000\u0153\u0155\u0003P(\u0000\u0154\u0156\u0003\u001c\u000e\u0000\u0155"+
+ "\u0154\u0001\u0000\u0000\u0000\u0155\u0156\u0001\u0000\u0000\u0000\u0156"+
+ "\u0158\u0001\u0000\u0000\u0000\u0157\u0159\u0003\\.\u0000\u0158\u0157"+
+ "\u0001\u0000\u0000\u0000\u0158\u0159\u0001\u0000\u0000\u0000\u0159\u015e"+
+ "\u0001\u0000\u0000\u0000\u015a\u015c\u0003f3\u0000\u015b\u015d\u0003j"+
+ "5\u0000\u015c\u015b\u0001\u0000\u0000\u0000\u015c\u015d\u0001\u0000\u0000"+
+ "\u0000\u015d\u015f\u0001\u0000\u0000\u0000\u015e\u015a\u0001\u0000\u0000"+
+ "\u0000\u015e\u015f\u0001\u0000\u0000\u0000\u015f\u016e\u0001\u0000\u0000"+
+ "\u0000\u0160\u0162\u0003\u001c\u000e\u0000\u0161\u0163\u0003\\.\u0000"+
+ "\u0162\u0161\u0001\u0000\u0000\u0000\u0162\u0163\u0001\u0000\u0000\u0000"+
+ "\u0163\u0168\u0001\u0000\u0000\u0000\u0164\u0166\u0003f3\u0000\u0165\u0167"+
+ "\u0003j5\u0000\u0166\u0165\u0001\u0000\u0000\u0000\u0166\u0167\u0001\u0000"+
+ "\u0000\u0000\u0167\u0169\u0001\u0000\u0000\u0000\u0168\u0164\u0001\u0000"+
+ "\u0000\u0000\u0168\u0169\u0001\u0000\u0000\u0000\u0169\u016b\u0001\u0000"+
+ "\u0000\u0000\u016a\u016c\u0003P(\u0000\u016b\u016a\u0001\u0000\u0000\u0000"+
+ "\u016b\u016c\u0001\u0000\u0000\u0000\u016c\u016e\u0001\u0000\u0000\u0000"+
+ "\u016d\u0153\u0001\u0000\u0000\u0000\u016d\u0160\u0001\u0000\u0000\u0000"+
+ "\u016e\u0019\u0001\u0000\u0000\u0000\u016f\u0171\u0003h4\u0000\u0170\u0172"+
+ "\u0003H$\u0000\u0171\u0170\u0001\u0000\u0000\u0000\u0171\u0172\u0001\u0000"+
+ "\u0000\u0000\u0172\u0174\u0001\u0000\u0000\u0000\u0173\u0175\u0003J%\u0000"+
+ "\u0174\u0173\u0001\u0000\u0000\u0000\u0174\u0175\u0001\u0000\u0000\u0000"+
+ "\u0175\u0177\u0001\u0000\u0000\u0000\u0176\u0178\u0003L&\u0000\u0177\u0176"+
+ "\u0001\u0000\u0000\u0000\u0177\u0178\u0001\u0000\u0000\u0000\u0178\u001b"+
+ "\u0001\u0000\u0000\u0000\u0179\u017a\u0005Q\u0000\u0000\u017a\u017f\u0003"+
+ "\u001e\u000f\u0000\u017b\u017c\u0005\u0001\u0000\u0000\u017c\u017e\u0003"+
+ "\u001e\u000f\u0000\u017d\u017b\u0001\u0000\u0000\u0000\u017e\u0181\u0001"+
+ "\u0000\u0000\u0000\u017f\u017d\u0001\u0000\u0000\u0000\u017f\u0180\u0001"+
+ "\u0000\u0000\u0000\u0180\u001d\u0001\u0000\u0000\u0000\u0181\u017f\u0001"+
+ "\u0000\u0000\u0000\u0182\u0186\u0003\"\u0011\u0000\u0183\u0185\u0003 "+
+ "\u0010\u0000\u0184\u0183\u0001\u0000\u0000\u0000\u0185\u0188\u0001\u0000"+
+ "\u0000\u0000\u0186\u0184\u0001\u0000\u0000\u0000\u0186\u0187\u0001\u0000"+
+ "\u0000\u0000\u0187\u001f\u0001\u0000\u0000\u0000\u0188\u0186\u0001\u0000"+
+ "\u0000\u0000\u0189\u018d\u0003$\u0012\u0000\u018a\u018d\u0003`0\u0000"+
+ "\u018b\u018d\u0003d2\u0000\u018c\u0189\u0001\u0000\u0000\u0000\u018c\u018a"+
+ "\u0001\u0000\u0000\u0000\u018c\u018b\u0001\u0000\u0000\u0000\u018d!\u0001"+
+ "\u0000\u0000\u0000\u018e\u0190\u0003\u00e0p\u0000\u018f\u0191\u0003\u00dc"+
+ "n\u0000\u0190\u018f\u0001\u0000\u0000\u0000\u0190\u0191\u0001\u0000\u0000"+
+ "\u0000\u0191\u019c\u0001\u0000\u0000\u0000\u0192\u0194\u0005g\u0000\u0000"+
+ "\u0193\u0192\u0001\u0000\u0000\u0000\u0193\u0194\u0001\u0000\u0000\u0000"+
+ "\u0194\u0195\u0001\u0000\u0000\u0000\u0195\u0196\u0005\u0002\u0000\u0000"+
+ "\u0196\u0197\u0003N\'\u0000\u0197\u0199\u0005\u0003\u0000\u0000\u0198"+
+ "\u019a\u0003\u00dcn\u0000\u0199\u0198\u0001\u0000\u0000\u0000\u0199\u019a"+
+ "\u0001\u0000\u0000\u0000\u019a\u019c\u0001\u0000\u0000\u0000\u019b\u018e"+
+ "\u0001\u0000\u0000\u0000\u019b\u0193\u0001\u0000\u0000\u0000\u019c#\u0001"+
+ "\u0000\u0000\u0000\u019d\u019e\u0003^/\u0000\u019e\u01a0\u0005d\u0000"+
+ "\u0000\u019f\u01a1\u0005I\u0000\u0000\u01a0\u019f\u0001\u0000\u0000\u0000"+
+ "\u01a0\u01a1\u0001\u0000\u0000\u0000\u01a1\u01a2\u0001\u0000\u0000\u0000"+
+ "\u01a2\u01a4\u0003&\u0013\u0000\u01a3\u01a5\u0003b1\u0000\u01a4\u01a3"+
+ "\u0001\u0000\u0000\u0000\u01a4\u01a5\u0001\u0000\u0000\u0000\u01a5%\u0001"+
+ "\u0000\u0000\u0000\u01a6\u01a8\u0003\u0082A\u0000\u01a7\u01a9\u0003\u00dc"+
+ "n\u0000\u01a8\u01a7\u0001\u0000\u0000\u0000\u01a8\u01a9\u0001\u0000\u0000"+
+ "\u0000\u01a9\u01b4\u0001\u0000\u0000\u0000\u01aa\u01ac\u0005g\u0000\u0000"+
+ "\u01ab\u01aa\u0001\u0000\u0000\u0000\u01ab\u01ac\u0001\u0000\u0000\u0000"+
+ "\u01ac\u01ad\u0001\u0000\u0000\u0000\u01ad\u01ae\u0005\u0002\u0000\u0000"+
+ "\u01ae\u01af\u0003N\'\u0000\u01af\u01b1\u0005\u0003\u0000\u0000\u01b0"+
+ "\u01b2\u0003\u00dcn\u0000\u01b1\u01b0\u0001\u0000\u0000\u0000\u01b1\u01b2"+
+ "\u0001\u0000\u0000\u0000\u01b2\u01b4\u0001\u0000\u0000\u0000\u01b3\u01a6"+
+ "\u0001\u0000\u0000\u0000\u01b3\u01ab\u0001\u0000\u0000\u0000\u01b4\'\u0001"+
+ "\u0000\u0000\u0000\u01b5\u01b7\u0005\u00bb\u0000\u0000\u01b6\u01b8\u0005"+
+ "\u00c0\u0000\u0000\u01b7\u01b6\u0001\u0000\u0000\u0000\u01b7\u01b8\u0001"+
+ "\u0000\u0000\u0000\u01b8\u01b9\u0001\u0000\u0000\u0000\u01b9\u01ba\u0003"+
+ "*\u0015\u0000\u01ba\u01bc\u0003,\u0016\u0000\u01bb\u01bd\u0003\\.\u0000"+
+ "\u01bc\u01bb\u0001\u0000\u0000\u0000\u01bc\u01bd\u0001\u0000\u0000\u0000"+
+ "\u01bd)\u0001\u0000\u0000\u0000\u01be\u01c0\u0003\u00e0p\u0000\u01bf\u01c1"+
+ "\u0003\u00dcn\u0000\u01c0\u01bf\u0001\u0000\u0000\u0000\u01c0\u01c1\u0001"+
+ "\u0000\u0000\u0000\u01c1+\u0001\u0000\u0000\u0000\u01c2\u01c3\u0005\u00a6"+
+ "\u0000\u0000\u01c3\u01c8\u0003.\u0017\u0000\u01c4\u01c5\u0005\u0001\u0000"+
+ "\u0000\u01c5\u01c7\u0003.\u0017\u0000\u01c6\u01c4\u0001\u0000\u0000\u0000"+
+ "\u01c7\u01ca\u0001\u0000\u0000\u0000\u01c8\u01c6\u0001\u0000\u0000\u0000"+
+ "\u01c8\u01c9\u0001\u0000\u0000\u0000\u01c9-\u0001\u0000\u0000\u0000\u01ca"+
+ "\u01c8\u0001\u0000\u0000\u0000\u01cb\u01cc\u0003\u0088D\u0000\u01cc\u01cd"+
+ "\u0005\u0004\u0000\u0000\u01cd\u01ce\u0003\u00c0`\u0000\u01ce/\u0001\u0000"+
+ "\u0000\u0000\u01cf\u01d1\u00055\u0000\u0000\u01d0\u01d2\u0005Q\u0000\u0000"+
+ "\u01d1\u01d0\u0001\u0000\u0000\u0000\u01d1\u01d2\u0001\u0000\u0000\u0000"+
+ "\u01d2\u01d3\u0001\u0000\u0000\u0000\u01d3\u01d5\u0003*\u0015\u0000\u01d4"+
+ "\u01d6\u0003\\.\u0000\u01d5\u01d4\u0001\u0000\u0000\u0000\u01d5\u01d6"+
+ "\u0001\u0000\u0000\u0000\u01d61\u0001\u0000\u0000\u0000\u01d7\u01d9\u0005"+
+ "_\u0000\u0000\u01d8\u01da\u0005b\u0000\u0000\u01d9\u01d8\u0001\u0000\u0000"+
+ "\u0000\u01d9\u01da\u0001\u0000\u0000\u0000\u01da\u01db\u0001\u0000\u0000"+
+ "\u0000\u01db\u01dc\u0003*\u0015\u0000\u01dc\u01df\u00034\u001a\u0000\u01dd"+
+ "\u01e0\u0003\u0006\u0003\u0000\u01de\u01e0\u00036\u001b\u0000\u01df\u01dd"+
+ "\u0001\u0000\u0000\u0000\u01df\u01de\u0001\u0000\u0000\u0000\u01e03\u0001"+
+ "\u0000\u0000\u0000\u01e1\u01e2\u0005\u0002\u0000\u0000\u01e2\u01e7\u0003"+
+ "\u0088D\u0000\u01e3\u01e4\u0005\u0001\u0000\u0000\u01e4\u01e6\u0003\u0088"+
+ "D\u0000\u01e5\u01e3\u0001\u0000\u0000\u0000\u01e6\u01e9\u0001\u0000\u0000"+
+ "\u0000\u01e7\u01e5\u0001\u0000\u0000\u0000\u01e7\u01e8\u0001\u0000\u0000"+
+ "\u0000\u01e8\u01ea\u0001\u0000\u0000\u0000\u01e9\u01e7\u0001\u0000\u0000"+
+ "\u0000\u01ea\u01eb\u0005\u0003\u0000\u0000\u01eb5\u0001\u0000\u0000\u0000"+
+ "\u01ec\u01ed\u0005\u00be\u0000\u0000\u01ed\u01f2\u00038\u001c\u0000\u01ee"+
+ "\u01ef\u0005\u0001\u0000\u0000\u01ef\u01f1\u00038\u001c\u0000\u01f0\u01ee"+
+ "\u0001\u0000\u0000\u0000\u01f1\u01f4\u0001\u0000\u0000\u0000\u01f2\u01f0"+
+ "\u0001\u0000\u0000\u0000\u01f2\u01f3\u0001\u0000\u0000\u0000\u01f37\u0001"+
+ "\u0000\u0000\u0000\u01f4\u01f2\u0001\u0000\u0000\u0000\u01f5\u01f6\u0005"+
+ "\u0002\u0000\u0000\u01f6\u01fb\u0003|>\u0000\u01f7\u01f8\u0005\u0001\u0000"+
+ "\u0000\u01f8\u01fa\u0003|>\u0000\u01f9\u01f7\u0001\u0000\u0000\u0000\u01fa"+
+ "\u01fd\u0001\u0000\u0000\u0000\u01fb\u01f9\u0001\u0000\u0000\u0000\u01fb"+
+ "\u01fc\u0001\u0000\u0000\u0000\u01fc\u01fe\u0001\u0000\u0000\u0000\u01fd"+
+ "\u01fb\u0001\u0000\u0000\u0000\u01fe\u01ff\u0005\u0003\u0000\u0000\u01ff"+
+ "9\u0001\u0000\u0000\u0000\u0200\u0201\u0005\u0082\u0000\u0000\u0201\u0202"+
+ "\u0003\u00d2i\u0000\u0202\u0203\u0005\u0002\u0000\u0000\u0203\u0204\u0003"+
+ "\u00d4j\u0000\u0204\u0205\u0005\u0003\u0000\u0000\u0205;\u0001\u0000\u0000"+
+ "\u0000\u0206\u0208\u0005\u001c\u0000\u0000\u0207\u0206\u0001\u0000\u0000"+
+ "\u0000\u0207\u0208\u0001\u0000\u0000\u0000\u0208\u0209\u0001\u0000\u0000"+
+ "\u0000\u0209\u020a\u0003\u00e2q\u0000\u020a=\u0001\u0000\u0000\u0000\u020b"+
+ "\u020f\u0003\u00e2q\u0000\u020c\u020f\u0005\u00cb\u0000\u0000\u020d\u020f"+
+ "\u0003|>\u0000\u020e\u020b\u0001\u0000\u0000\u0000\u020e\u020c\u0001\u0000"+
+ "\u0000\u0000\u020e\u020d\u0001\u0000\u0000\u0000\u020f?\u0001\u0000\u0000"+
+ "\u0000\u0210\u0212\u0003B!\u0000\u0211\u0213\u0003D\"\u0000\u0212\u0211"+
+ "\u0001\u0000\u0000\u0000\u0212\u0213\u0001\u0000\u0000\u0000\u0213\u0215"+
+ "\u0001\u0000\u0000\u0000\u0214\u0216\u0003F#\u0000\u0215\u0214\u0001\u0000"+
+ "\u0000\u0000\u0215\u0216\u0001\u0000\u0000\u0000\u0216A\u0001\u0000\u0000"+
+ "\u0000\u0217\u021b\u0003\u00e2q\u0000\u0218\u021b\u0005\u00cb\u0000\u0000"+
+ "\u0219\u021b\u0003|>\u0000\u021a\u0217\u0001\u0000\u0000\u0000\u021a\u0218"+
+ "\u0001\u0000\u0000\u0000\u021a\u0219\u0001\u0000\u0000\u0000\u021bC\u0001"+
+ "\u0000\u0000\u0000\u021c\u021d\u0007\u0001\u0000\u0000\u021dE\u0001\u0000"+
+ "\u0000\u0000\u021e\u021f\u0005\u0087\u0000\u0000\u021f\u0220\u0007\u0002"+
+ "\u0000\u0000\u0220G\u0001\u0000\u0000\u0000\u0221\u0222\u0005k\u0000\u0000"+
+ "\u0222\u0223\u0003\u00d8l\u0000\u0223I\u0001\u0000\u0000\u0000\u0224\u0225"+
+ "\u0005\u008a\u0000\u0000\u0225\u0227\u0003\u00d8l\u0000\u0226\u0228\u0007"+
+ "\u0003\u0000\u0000\u0227\u0226\u0001\u0000\u0000\u0000\u0227\u0228\u0001"+
+ "\u0000\u0000\u0000\u0228K\u0001\u0000\u0000\u0000\u0229\u022a\u0005I\u0000"+
+ "\u0000\u022a\u022f\u0007\u0004\u0000\u0000\u022b\u0230\u0003\u00d8l\u0000"+
+ "\u022c\u022d\u0003\u00dam\u0000\u022d\u022e\u0005\u0005\u0000\u0000\u022e"+
+ "\u0230\u0001\u0000\u0000\u0000\u022f\u022b\u0001\u0000\u0000\u0000\u022f"+
+ "\u022c\u0001\u0000\u0000\u0000\u0230\u0231\u0001\u0000\u0000\u0000\u0231"+
+ "\u0235\u0007\u0003\u0000\u0000\u0232\u0236\u0005\u008d\u0000\u0000\u0233"+
+ "\u0234\u0005\u00c4\u0000\u0000\u0234\u0236\u0005\u00ac\u0000\u0000\u0235"+
+ "\u0232\u0001\u0000\u0000\u0000\u0235\u0233\u0001\u0000\u0000\u0000\u0236"+
+ "M\u0001\u0000\u0000\u0000\u0237\u0238\u0003\u0006\u0003\u0000\u0238O\u0001"+
+ "\u0000\u0000\u0000\u0239\u023b\u0005\u00a5\u0000\u0000\u023a\u023c\u0005"+
+ "8\u0000\u0000\u023b\u023a\u0001\u0000\u0000\u0000\u023b\u023c\u0001\u0000"+
+ "\u0000\u0000\u023c\u023d\u0001\u0000\u0000\u0000\u023d\u023e\u0003R)\u0000"+
+ "\u023eQ\u0001\u0000\u0000\u0000\u023f\u0244\u0003T*\u0000\u0240\u0241"+
+ "\u0005\u0001\u0000\u0000\u0241\u0243\u0003T*\u0000\u0242\u0240\u0001\u0000"+
+ "\u0000\u0000\u0243\u0246\u0001\u0000\u0000\u0000\u0244\u0242\u0001\u0000"+
+ "\u0000\u0000\u0244\u0245\u0001\u0000\u0000\u0000\u0245S\u0001\u0000\u0000"+
+ "\u0000\u0246\u0244\u0001\u0000\u0000\u0000\u0247\u0249\u0003V+\u0000\u0248"+
+ "\u024a\u0003\u00dcn\u0000\u0249\u0248\u0001\u0000\u0000\u0000\u0249\u024a"+
+ "\u0001\u0000\u0000\u0000\u024aU\u0001\u0000\u0000\u0000\u024b\u0250\u0003"+
+ ":\u001d\u0000\u024c\u0250\u0003X,\u0000\u024d\u0250\u0003Z-\u0000\u024e"+
+ "\u0250\u0003\u00c0`\u0000\u024f\u024b\u0001\u0000\u0000\u0000\u024f\u024c"+
+ "\u0001\u0000\u0000\u0000\u024f\u024d\u0001\u0000\u0000\u0000\u024f\u024e"+
+ "\u0001\u0000\u0000\u0000\u0250W\u0001\u0000\u0000\u0000\u0251\u0252\u0005"+
+ ">\u0000\u0000\u0252\u0253\u0005\u0002\u0000\u0000\u0253\u0254\u0003\u0082"+
+ "A\u0000\u0254\u0255\u0005\u0003\u0000\u0000\u0255Y\u0001\u0000\u0000\u0000"+
+ "\u0256\u0257\u0005\u0088\u0000\u0000\u0257\u0258\u0005\u0002\u0000\u0000"+
+ "\u0258\u0259\u0003\u00e2q\u0000\u0259\u025a\u0005\u0003\u0000\u0000\u025a"+
+ "[\u0001\u0000\u0000\u0000\u025b\u025c\u0005\u00c3\u0000\u0000\u025c\u0261"+
+ "\u0003\u00be_\u0000\u025d\u025e\u0005\u0001\u0000\u0000\u025e\u0260\u0003"+
+ "\u00be_\u0000\u025f\u025d\u0001\u0000\u0000\u0000\u0260\u0263\u0001\u0000"+
+ "\u0000\u0000\u0261\u025f\u0001\u0000\u0000\u0000\u0261\u0262\u0001\u0000"+
+ "\u0000\u0000\u0262]\u0001\u0000\u0000\u0000\u0263\u0261\u0001\u0000\u0000"+
+ "\u0000\u0264\u0266\u0005^\u0000\u0000\u0265\u0264\u0001\u0000\u0000\u0000"+
+ "\u0265\u0266\u0001\u0000\u0000\u0000\u0266\u026f\u0001\u0000\u0000\u0000"+
+ "\u0267\u0269\u0007\u0005\u0000\u0000\u0268\u0267\u0001\u0000\u0000\u0000"+
+ "\u0268\u0269\u0001\u0000\u0000\u0000\u0269\u026b\u0001\u0000\u0000\u0000"+
+ "\u026a\u026c\u0005\u0091\u0000\u0000\u026b\u026a\u0001\u0000\u0000\u0000"+
+ "\u026b\u026c\u0001\u0000\u0000\u0000\u026c\u026f\u0001\u0000\u0000\u0000"+
+ "\u026d\u026f\u0005)\u0000\u0000\u026e\u0265\u0001\u0000\u0000\u0000\u026e"+
+ "\u0268\u0001\u0000\u0000\u0000\u026e\u026d\u0001\u0000\u0000\u0000\u026f"+
+ "_\u0001\u0000\u0000\u0000\u0270\u0271\u0005)\u0000\u0000\u0271\u0272\u0005"+
+ "d\u0000\u0000\u0272\u0274\u0003\u00e0p\u0000\u0273\u0275\u0003\u00dcn"+
+ "\u0000\u0274\u0273\u0001\u0000\u0000\u0000\u0274\u0275\u0001\u0000\u0000"+
+ "\u0000\u0275a\u0001\u0000\u0000\u0000\u0276\u0277\u0007\u0006\u0000\u0000"+
+ "\u0277\u0278\u0003\u00be_\u0000\u0278c\u0001\u0000\u0000\u0000\u0279\u027a"+
+ "\u0005\u0001\u0000\u0000\u027a\u027b\u0005[\u0000\u0000\u027b\u027c\u0005"+
+ "\u0002\u0000\u0000\u027c\u027d\u0003\u0082A\u0000\u027d\u027f\u0005\u0003"+
+ "\u0000\u0000\u027e\u0280\u0003\u00dcn\u0000\u027f\u027e\u0001\u0000\u0000"+
+ "\u0000\u027f\u0280\u0001\u0000\u0000\u0000\u0280e\u0001\u0000\u0000\u0000"+
+ "\u0281\u0282\u0005T\u0000\u0000\u0282\u0283\u0005#\u0000\u0000\u0283\u0288"+
+ "\u0003>\u001f\u0000\u0284\u0285\u0005\u0001\u0000\u0000\u0285\u0287\u0003"+
+ ">\u001f\u0000\u0286\u0284\u0001\u0000\u0000\u0000\u0287\u028a\u0001\u0000"+
+ "\u0000\u0000\u0288\u0286\u0001\u0000\u0000\u0000\u0288\u0289\u0001\u0000"+
+ "\u0000\u0000\u0289g\u0001\u0000\u0000\u0000\u028a\u0288\u0001\u0000\u0000"+
+ "\u0000\u028b\u028c\u0005\u008f\u0000\u0000\u028c\u028d\u0005#\u0000\u0000"+
+ "\u028d\u0292\u0003@ \u0000\u028e\u028f\u0005\u0001\u0000\u0000\u028f\u0291"+
+ "\u0003@ \u0000\u0290\u028e\u0001\u0000\u0000\u0000\u0291\u0294\u0001\u0000"+
+ "\u0000\u0000\u0292\u0290\u0001\u0000\u0000\u0000\u0292\u0293\u0001\u0000"+
+ "\u0000\u0000\u0293i\u0001\u0000\u0000\u0000\u0294\u0292\u0001\u0000\u0000"+
+ "\u0000\u0295\u0296\u0005V\u0000\u0000\u0296\u029b\u0003\u00be_\u0000\u0297"+
+ "\u0298\u0005\u0001\u0000\u0000\u0298\u029a\u0003\u00be_\u0000\u0299\u0297"+
+ "\u0001\u0000\u0000\u0000\u029a\u029d\u0001\u0000\u0000\u0000\u029b\u0299"+
+ "\u0001\u0000\u0000\u0000\u029b\u029c\u0001\u0000\u0000\u0000\u029ck\u0001"+
+ "\u0000\u0000\u0000\u029d\u029b\u0001\u0000\u0000\u0000\u029e\u02a0\u0005"+
+ "\u00ba\u0000\u0000\u029f\u02a1\u0005\u0019\u0000\u0000\u02a0\u029f\u0001"+
+ "\u0000\u0000\u0000\u02a0\u02a1\u0001\u0000\u0000\u0000\u02a1\u02ab\u0001"+
+ "\u0000\u0000\u0000\u02a2\u02a4\u0005a\u0000\u0000\u02a3\u02a5\u0005\u0019"+
+ "\u0000\u0000\u02a4\u02a3\u0001\u0000\u0000\u0000\u02a4\u02a5\u0001\u0000"+
+ "\u0000\u0000\u02a5\u02ab\u0001\u0000\u0000\u0000\u02a6\u02a8\u0005C\u0000"+
+ "\u0000\u02a7\u02a9\u0005\u0019\u0000\u0000\u02a8\u02a7\u0001\u0000\u0000"+
+ "\u0000\u02a8\u02a9\u0001\u0000\u0000\u0000\u02a9\u02ab\u0001\u0000\u0000"+
+ "\u0000\u02aa\u029e\u0001\u0000\u0000\u0000\u02aa\u02a2\u0001\u0000\u0000"+
+ "\u0000\u02aa\u02a6\u0001\u0000\u0000\u0000\u02abm\u0001\u0000\u0000\u0000"+
+ "\u02ac\u02b3\u0005\u0086\u0000\u0000\u02ad\u02b3\u0003p8\u0000\u02ae\u02b3"+
+ "\u0003r9\u0000\u02af\u02b3\u0003t:\u0000\u02b0\u02b3\u0003v;\u0000\u02b1"+
+ "\u02b3\u0003z=\u0000\u02b2\u02ac\u0001\u0000\u0000\u0000\u02b2\u02ad\u0001"+
+ "\u0000\u0000\u0000\u02b2\u02ae\u0001\u0000\u0000\u0000\u02b2\u02af\u0001"+
+ "\u0000\u0000\u0000\u02b2\u02b0\u0001\u0000\u0000\u0000\u02b2\u02b1\u0001"+
+ "\u0000\u0000\u0000\u02b3o\u0001\u0000\u0000\u0000\u02b4\u02b5\u0007\u0007"+
+ "\u0000\u0000\u02b5q\u0001\u0000\u0000\u0000\u02b6\u02b7\u0007\b\u0000"+
+ "\u0000\u02b7s\u0001\u0000\u0000\u0000\u02b8\u02b9\u0007\t\u0000\u0000"+
+ "\u02b9u\u0001\u0000\u0000\u0000\u02ba\u02c9\u0005p\u0000\u0000\u02bb\u02c9"+
+ "\u0005r\u0000\u0000\u02bc\u02c9\u0005q\u0000\u0000\u02bd\u02c9\u0005,"+
+ "\u0000\u0000\u02be\u02c9\u0005.\u0000\u0000\u02bf\u02c9\u0005/\u0000\u0000"+
+ "\u02c0\u02c9\u0005\u008b\u0000\u0000\u02c1\u02c2\u0007\n\u0000\u0000\u02c2"+
+ "\u02c9\u00051\u0000\u0000\u02c3\u02c4\u0007\n\u0000\u0000\u02c4\u02c9"+
+ "\u0005\u00ad\u0000\u0000\u02c5\u02c6\u0007\u000b\u0000\u0000\u02c6\u02c9"+
+ "\u00052\u0000\u0000\u02c7\u02c9\u0005`\u0000\u0000\u02c8\u02ba\u0001\u0000"+
+ "\u0000\u0000\u02c8\u02bb\u0001\u0000\u0000\u0000\u02c8\u02bc\u0001\u0000"+
+ "\u0000\u0000\u02c8\u02bd\u0001\u0000\u0000\u0000\u02c8\u02be\u0001\u0000"+
+ "\u0000\u0000\u02c8\u02bf\u0001\u0000\u0000\u0000\u02c8\u02c0\u0001\u0000"+
+ "\u0000\u0000\u02c8\u02c1\u0001\u0000\u0000\u0000\u02c8\u02c3\u0001\u0000"+
+ "\u0000\u0000\u02c8\u02c5\u0001\u0000\u0000\u0000\u02c8\u02c7\u0001\u0000"+
+ "\u0000\u0000\u02c9w\u0001\u0000\u0000\u0000\u02ca\u02cb\u0007\f\u0000"+
+ "\u0000\u02cby\u0001\u0000\u0000\u0000\u02cc\u02d8\u0005\u00ce\u0000\u0000"+
+ "\u02cd\u02ce\u0005\u0006\u0000\u0000\u02ce\u02d3\u0005\u00cd\u0000\u0000"+
+ "\u02cf\u02d0\u0005\u0001\u0000\u0000\u02d0\u02d2\u0005\u00cd\u0000\u0000"+
+ "\u02d1\u02cf\u0001\u0000\u0000\u0000\u02d2\u02d5\u0001\u0000\u0000\u0000"+
+ "\u02d3\u02d1\u0001\u0000\u0000\u0000\u02d3\u02d4\u0001\u0000\u0000\u0000"+
+ "\u02d4\u02d6\u0001\u0000\u0000\u0000\u02d5\u02d3\u0001\u0000\u0000\u0000"+
+ "\u02d6\u02d8\u0005\u0007\u0000\u0000\u02d7\u02cc\u0001\u0000\u0000\u0000"+
+ "\u02d7\u02cd\u0001\u0000\u0000\u0000\u02d8{\u0001\u0000\u0000\u0000\u02d9"+
+ "\u02da\u0006>\uffff\uffff\u0000\u02da\u02db\u0005\u0002\u0000\u0000\u02db"+
+ "\u02dc\u0003|>\u0000\u02dc\u02dd\u0005\u0003\u0000\u0000\u02dd\u02fb\u0001"+
+ "\u0000\u0000\u0000\u02de\u02df\u0005\u0002\u0000\u0000\u02df\u02e2\u0003"+
+ "\u00c0`\u0000\u02e0\u02e1\u0005\u0001\u0000\u0000\u02e1\u02e3\u0003\u00c0"+
+ "`\u0000\u02e2\u02e0\u0001\u0000\u0000\u0000\u02e3\u02e4\u0001\u0000\u0000"+
+ "\u0000\u02e4\u02e2\u0001\u0000\u0000\u0000\u02e4\u02e5\u0001\u0000\u0000"+
+ "\u0000\u02e5\u02e6\u0001\u0000\u0000\u0000\u02e6\u02e7\u0005\u0003\u0000"+
+ "\u0000\u02e7\u02fb\u0001\u0000\u0000\u0000\u02e8\u02e9\u0005\u0002\u0000"+
+ "\u0000\u02e9\u02ea\u0003N\'\u0000\u02ea\u02eb\u0005\u0003\u0000\u0000"+
+ "\u02eb\u02fb\u0001\u0000\u0000\u0000\u02ec\u02fb\u0003~?\u0000\u02ed\u02ee"+
+ "\u0007\r\u0000\u0000\u02ee\u02fb\u0003t:\u0000\u02ef\u02f0\u0007\r\u0000"+
+ "\u0000\u02f0\u02fb\u0003|>\t\u02f1\u02f2\u00053\u0000\u0000\u02f2\u02f3"+
+ "\u0005\u0089\u0000\u0000\u02f3\u02fb\u0005\u00c1\u0000\u0000\u02f4\u02f5"+
+ "\u00053\u0000\u0000\u02f5\u02f6\u0005\u0089\u0000\u0000\u02f6\u02fb\u0005"+
+ "\u007f\u0000\u0000\u02f7\u02f8\u0005\u00c1\u0000\u0000\u02f8\u02f9\u0005"+
+ "\u0089\u0000\u0000\u02f9\u02fb\u0005\u00c7\u0000\u0000\u02fa\u02d9\u0001"+
+ "\u0000\u0000\u0000\u02fa\u02de\u0001\u0000\u0000\u0000\u02fa\u02e8\u0001"+
+ "\u0000\u0000\u0000\u02fa\u02ec\u0001\u0000\u0000\u0000\u02fa\u02ed\u0001"+
+ "\u0000\u0000\u0000\u02fa\u02ef\u0001\u0000\u0000\u0000\u02fa\u02f1\u0001"+
+ "\u0000\u0000\u0000\u02fa\u02f4\u0001\u0000\u0000\u0000\u02fa\u02f7\u0001"+
+ "\u0000\u0000\u0000\u02fb\u030c\u0001\u0000\u0000\u0000\u02fc\u02fd\n\u0006"+
+ "\u0000\u0000\u02fd\u02fe\u0007\u000e\u0000\u0000\u02fe\u030b\u0003|>\u0007"+
+ "\u02ff\u0300\n\u0005\u0000\u0000\u0300\u0301\u0007\r\u0000\u0000\u0301"+
+ "\u030b\u0003|>\u0006\u0302\u0303\n\u0004\u0000\u0000\u0303\u0304\u0005"+
+ "\u000b\u0000\u0000\u0304\u030b\u0003|>\u0005\u0305\u0306\n\b\u0000\u0000"+
+ "\u0306\u030b\u0003x<\u0000\u0307\u0308\n\u0007\u0000\u0000\u0308\u0309"+
+ "\u0005#\u0000\u0000\u0309\u030b\u0003x<\u0000\u030a\u02fc\u0001\u0000"+
+ "\u0000\u0000\u030a\u02ff\u0001\u0000\u0000\u0000\u030a\u0302\u0001\u0000"+
+ "\u0000\u0000\u030a\u0305\u0001\u0000\u0000\u0000\u030a\u0307\u0001\u0000"+
+ "\u0000\u0000\u030b\u030e\u0001\u0000\u0000\u0000\u030c\u030a\u0001\u0000"+
+ "\u0000\u0000\u030c\u030d\u0001\u0000\u0000\u0000\u030d}\u0001\u0000\u0000"+
+ "\u0000\u030e\u030c\u0001\u0000\u0000\u0000\u030f\u0315\u0003\u008cF\u0000"+
+ "\u0310\u0315\u0003n7\u0000\u0311\u0315\u0003\u00deo\u0000\u0312\u0315"+
+ "\u0003\u0096K\u0000\u0313\u0315\u0003\u0084B\u0000\u0314\u030f\u0001\u0000"+
+ "\u0000\u0000\u0314\u0310\u0001\u0000\u0000\u0000\u0314\u0311\u0001\u0000"+
+ "\u0000\u0000\u0314\u0312\u0001\u0000\u0000\u0000\u0314\u0313\u0001\u0000"+
+ "\u0000\u0000\u0315\u007f\u0001\u0000\u0000\u0000\u0316\u0319\u0003\u00e2"+
+ "q\u0000\u0317\u0319\u0003\u0088D\u0000\u0318\u0316\u0001\u0000\u0000\u0000"+
+ "\u0318\u0317\u0001\u0000\u0000\u0000\u0319\u0081\u0001\u0000\u0000\u0000"+
+ "\u031a\u031c\u0003\u00ba]\u0000\u031b\u031d\u0003\u00bc^\u0000\u031c\u031b"+
+ "\u0001\u0000\u0000\u0000\u031c\u031d\u0001\u0000\u0000\u0000\u031d\u0320"+
+ "\u0001\u0000\u0000\u0000\u031e\u0320\u0003\u0084B\u0000\u031f\u031a\u0001"+
+ "\u0000\u0000\u0000\u031f\u031e\u0001\u0000\u0000\u0000\u0320\u0083\u0001"+
+ "\u0000\u0000\u0000\u0321\u0323\u0003\u0088D\u0000\u0322\u0324\u0003\u0086"+
+ "C\u0000\u0323\u0322\u0001\u0000\u0000\u0000\u0323\u0324\u0001\u0000\u0000"+
+ "\u0000\u0324\u0085\u0001\u0000\u0000\u0000\u0325\u0326\u0005\f\u0000\u0000"+
+ "\u0326\u0327\u0003|>\u0000\u0327\u032a\u0005\r\u0000\u0000\u0328\u0329"+
+ "\u0005\u000e\u0000\u0000\u0329\u032b\u0003\u0084B\u0000\u032a\u0328\u0001"+
+ "\u0000\u0000\u0000\u032a\u032b\u0001\u0000\u0000\u0000\u032b\u0087\u0001"+
+ "\u0000\u0000\u0000\u032c\u0330\u0003\u00e2q\u0000\u032d\u032f\u0003\u008a"+
+ "E\u0000\u032e\u032d\u0001\u0000\u0000\u0000\u032f\u0332\u0001\u0000\u0000"+
+ "\u0000\u0330\u032e\u0001\u0000\u0000\u0000\u0330\u0331\u0001\u0000\u0000"+
+ "\u0000\u0331\u0089\u0001\u0000\u0000\u0000\u0332\u0330\u0001\u0000\u0000"+
+ "\u0000\u0333\u0334\u0005\u000e\u0000\u0000\u0334\u0335\u0003\u00e2q\u0000"+
+ "\u0335\u008b\u0001\u0000\u0000\u0000\u0336\u0339\u0003\u008eG\u0000\u0337"+
+ "\u0339\u0003\u0090H\u0000\u0338\u0336\u0001\u0000\u0000\u0000\u0338\u0337"+
+ "\u0001\u0000\u0000\u0000\u0339\u008d\u0001\u0000\u0000\u0000\u033a\u033b"+
+ "\u0005$\u0000\u0000\u033b\u033d\u0003\u00c0`\u0000\u033c\u033e\u0003\u0092"+
+ "I\u0000\u033d\u033c\u0001\u0000\u0000\u0000\u033e\u033f\u0001\u0000\u0000"+
+ "\u0000\u033f\u033d\u0001\u0000\u0000\u0000\u033f\u0340\u0001\u0000\u0000"+
+ "\u0000\u0340\u0343\u0001\u0000\u0000\u0000\u0341\u0342\u0005;\u0000\u0000"+
+ "\u0342\u0344\u0003\u00c0`\u0000\u0343\u0341\u0001\u0000\u0000\u0000\u0343"+
+ "\u0344\u0001\u0000\u0000\u0000\u0344\u0345\u0001\u0000\u0000\u0000\u0345"+
+ "\u0346\u0005=\u0000\u0000\u0346\u008f\u0001\u0000\u0000\u0000\u0347\u0349"+
+ "\u0005$\u0000\u0000\u0348\u034a\u0003\u0094J\u0000\u0349\u0348\u0001\u0000"+
+ "\u0000\u0000\u034a\u034b\u0001\u0000\u0000\u0000\u034b\u0349\u0001\u0000"+
+ "\u0000\u0000\u034b\u034c\u0001\u0000\u0000\u0000\u034c\u034f\u0001\u0000"+
+ "\u0000\u0000\u034d\u034e\u0005;\u0000\u0000\u034e\u0350\u0003\u00c0`\u0000"+
+ "\u034f\u034d\u0001\u0000\u0000\u0000\u034f\u0350\u0001\u0000\u0000\u0000"+
+ "\u0350\u0351\u0001\u0000\u0000\u0000\u0351\u0352\u0005=\u0000\u0000\u0352"+
+ "\u0091\u0001\u0000\u0000\u0000\u0353\u0354\u0005\u00c2\u0000\u0000\u0354"+
+ "\u0355\u0003|>\u0000\u0355\u0356\u0005\u00ab\u0000\u0000\u0356\u0357\u0003"+
+ "\u00c0`\u0000\u0357\u0093\u0001\u0000\u0000\u0000\u0358\u0359\u0005\u00c2"+
+ "\u0000\u0000\u0359\u035a\u0003\u00be_\u0000\u035a\u035b\u0005\u00ab\u0000"+
+ "\u0000\u035b\u035c\u0003\u00c0`\u0000\u035c\u0095\u0001\u0000\u0000\u0000"+
+ "\u035d\u035e\u0003\u00e6s\u0000\u035e\u0361\u0005\u0002\u0000\u0000\u035f"+
+ "\u0362\u0003\u0098L\u0000\u0360\u0362\u0005\u001e\u0000\u0000\u0361\u035f"+
+ "\u0001\u0000\u0000\u0000\u0361\u0360\u0001\u0000\u0000\u0000\u0361\u0362"+
+ "\u0001\u0000\u0000\u0000\u0362\u0363\u0001\u0000\u0000\u0000\u0363\u0365"+
+ "\u0005\u0003\u0000\u0000\u0364\u0366\u0003\u00bc^\u0000\u0365\u0364\u0001"+
+ "\u0000\u0000\u0000\u0365\u0366\u0001\u0000\u0000\u0000\u0366\u0368\u0001"+
+ "\u0000\u0000\u0000\u0367\u0369\u0003\u009aM\u0000\u0368\u0367\u0001\u0000"+
+ "\u0000\u0000\u0368\u0369\u0001\u0000\u0000\u0000\u0369\u036b\u0001\u0000"+
+ "\u0000\u0000\u036a\u036c\u0003\u009cN\u0000\u036b\u036a\u0001\u0000\u0000"+
+ "\u0000\u036b\u036c\u0001\u0000\u0000\u0000\u036c\u036e\u0001\u0000\u0000"+
+ "\u0000\u036d\u036f\u0003\u009eO\u0000\u036e\u036d\u0001\u0000\u0000\u0000"+
+ "\u036e\u036f\u0001\u0000\u0000\u0000\u036f\u037c\u0001\u0000\u0000\u0000"+
+ "\u0370\u0371\u0003\u00e6s\u0000\u0371\u0372\u0005\u0002\u0000\u0000\u0372"+
+ "\u0373\u0003N\'\u0000\u0373\u0374\u0005\u0003\u0000\u0000\u0374\u037c"+
+ "\u0001\u0000\u0000\u0000\u0375\u037c\u0003\u00aaU\u0000\u0376\u037c\u0003"+
+ "\u00b0X\u0000\u0377\u037c\u0003\u00b2Y\u0000\u0378\u037c\u0003\u00b6["+
+ "\u0000\u0379\u037c\u0003\u00b8\\\u0000\u037a\u037c\u0003\u00ba]\u0000"+
+ "\u037b\u035d\u0001\u0000\u0000\u0000\u037b\u0370\u0001\u0000\u0000\u0000"+
+ "\u037b\u0375\u0001\u0000\u0000\u0000\u037b\u0376\u0001\u0000\u0000\u0000"+
+ "\u037b\u0377\u0001\u0000\u0000\u0000\u037b\u0378\u0001\u0000\u0000\u0000"+
+ "\u037b\u0379\u0001\u0000\u0000\u0000\u037b\u037a\u0001\u0000\u0000\u0000"+
+ "\u037c\u0097\u0001\u0000\u0000\u0000\u037d\u037f\u00058\u0000\u0000\u037e"+
+ "\u037d\u0001\u0000\u0000\u0000\u037e\u037f\u0001\u0000\u0000\u0000\u037f"+
+ "\u0380\u0001\u0000\u0000\u0000\u0380\u0385\u0003\u00c0`\u0000\u0381\u0382"+
+ "\u0005\u0001\u0000\u0000\u0382\u0384\u0003\u00c0`\u0000\u0383\u0381\u0001"+
+ "\u0000\u0000\u0000\u0384\u0387\u0001\u0000\u0000\u0000\u0385\u0383\u0001"+
+ "\u0000\u0000\u0000\u0385\u0386\u0001\u0000\u0000\u0000\u0386\u0099\u0001"+
+ "\u0000\u0000\u0000\u0387\u0385\u0001\u0000\u0000\u0000\u0388\u0389\u0005"+
+ "J\u0000\u0000\u0389\u038a\u0005\u0002\u0000\u0000\u038a\u038b\u0003\\"+
+ ".\u0000\u038b\u038c\u0005\u0003\u0000\u0000\u038c\u009b\u0001\u0000\u0000"+
+ "\u0000\u038d\u038e\u0005\u00c5\u0000\u0000\u038e\u038f\u0005T\u0000\u0000"+
+ "\u038f\u0390\u0005\u0002\u0000\u0000\u0390\u0391\u0003h4\u0000\u0391\u0392"+
+ "\u0005\u0003\u0000\u0000\u0392\u009d\u0001\u0000\u0000\u0000\u0393\u0394"+
+ "\u0005\u0092\u0000\u0000\u0394\u0396\u0005\u0002\u0000\u0000\u0395\u0397"+
+ "\u0003\u00a0P\u0000\u0396\u0395\u0001\u0000\u0000\u0000\u0396\u0397\u0001"+
+ "\u0000\u0000\u0000\u0397\u0399\u0001\u0000\u0000\u0000\u0398\u039a\u0003"+
+ "h4\u0000\u0399\u0398\u0001\u0000\u0000\u0000\u0399\u039a\u0001\u0000\u0000"+
+ "\u0000\u039a\u039c\u0001\u0000\u0000\u0000\u039b\u039d\u0003\u00a2Q\u0000"+
+ "\u039c\u039b\u0001\u0000\u0000\u0000\u039c\u039d\u0001\u0000\u0000\u0000"+
+ "\u039d\u039e\u0001\u0000\u0000\u0000\u039e\u039f\u0005\u0003\u0000\u0000"+
+ "\u039f\u009f\u0001\u0000\u0000\u0000\u03a0\u03a1\u0005\u0096\u0000\u0000"+
+ "\u03a1\u03a2\u0005#\u0000\u0000\u03a2\u03a7\u0003|>\u0000\u03a3\u03a4"+
+ "\u0005\u0001\u0000\u0000\u03a4\u03a6\u0003|>\u0000\u03a5\u03a3\u0001\u0000"+
+ "\u0000\u0000\u03a6\u03a9\u0001\u0000\u0000\u0000\u03a7\u03a5\u0001\u0000"+
+ "\u0000\u0000\u03a7\u03a8\u0001\u0000\u0000\u0000\u03a8\u00a1\u0001\u0000"+
+ "\u0000\u0000\u03a9\u03a7\u0001\u0000\u0000\u0000\u03aa\u03ab\u0007\u000f"+
+ "\u0000\u0000\u03ab\u03ad\u0003\u00a4R\u0000\u03ac\u03ae\u0003\u00a6S\u0000"+
+ "\u03ad\u03ac\u0001\u0000\u0000\u0000\u03ad\u03ae\u0001\u0000\u0000\u0000"+
+ "\u03ae\u03b8\u0001\u0000\u0000\u0000\u03af\u03b0\u0007\u000f\u0000\u0000"+
+ "\u03b0\u03b1\u0005 \u0000\u0000\u03b1\u03b2\u0003\u00a4R\u0000\u03b2\u03b3"+
+ "\u0005\u001a\u0000\u0000\u03b3\u03b5\u0003\u00a8T\u0000\u03b4\u03b6\u0003"+
+ "\u00a6S\u0000\u03b5\u03b4\u0001\u0000\u0000\u0000\u03b5\u03b6\u0001\u0000"+
+ "\u0000\u0000\u03b6\u03b8\u0001\u0000\u0000\u0000\u03b7\u03aa\u0001\u0000"+
+ "\u0000\u0000\u03b7\u03af\u0001\u0000\u0000\u0000\u03b8\u00a3\u0001\u0000"+
+ "\u0000\u0000\u03b9\u03ba\u0005\u00b9\u0000\u0000\u03ba\u03c4\u0005\u009b"+
+ "\u0000\u0000\u03bb\u03bc\u0003|>\u0000\u03bc\u03bd\u0005\u009b\u0000\u0000"+
+ "\u03bd\u03c4\u0001\u0000\u0000\u0000\u03be\u03bf\u0005+\u0000\u0000\u03bf"+
+ "\u03c4\u0005\u00a1\u0000\u0000\u03c0\u03c1\u0003|>\u0000\u03c1\u03c2\u0005"+
+ "N\u0000\u0000\u03c2\u03c4\u0001\u0000\u0000\u0000\u03c3\u03b9\u0001\u0000"+
+ "\u0000\u0000\u03c3\u03bb\u0001\u0000\u0000\u0000\u03c3\u03be\u0001\u0000"+
+ "\u0000\u0000\u03c3\u03c0\u0001\u0000\u0000\u0000\u03c4\u00a5\u0001\u0000"+
+ "\u0000\u0000\u03c5\u03c6\u0005D\u0000\u0000\u03c6\u03c7\u0005+\u0000\u0000"+
+ "\u03c7\u03d0\u0005\u00a1\u0000\u0000\u03c8\u03c9\u0005D\u0000\u0000\u03c9"+
+ "\u03d0\u0005T\u0000\u0000\u03ca\u03cb\u0005D\u0000\u0000\u03cb\u03d0\u0005"+
+ "\u00ac\u0000\u0000\u03cc\u03cd\u0005D\u0000\u0000\u03cd\u03ce\u0005\u0084"+
+ "\u0000\u0000\u03ce\u03d0\u0005\u0090\u0000\u0000\u03cf\u03c5\u0001\u0000"+
+ "\u0000\u0000\u03cf\u03c8\u0001\u0000\u0000\u0000\u03cf\u03ca\u0001\u0000"+
+ "\u0000\u0000\u03cf\u03cc\u0001\u0000\u0000\u0000\u03d0\u00a7\u0001\u0000"+
+ "\u0000\u0000\u03d1\u03d2\u0003|>\u0000\u03d2\u03d3\u0005\u009b\u0000\u0000"+
+ "\u03d3\u03dc\u0001\u0000\u0000\u0000\u03d4\u03d5\u0005+\u0000\u0000\u03d5"+
+ "\u03dc\u0005\u00a1\u0000\u0000\u03d6\u03d7\u0003|>\u0000\u03d7\u03d8\u0005"+
+ "N\u0000\u0000\u03d8\u03dc\u0001\u0000\u0000\u0000\u03d9\u03da\u0005\u00b9"+
+ "\u0000\u0000\u03da\u03dc\u0005N\u0000\u0000\u03db\u03d1\u0001\u0000\u0000"+
+ "\u0000\u03db\u03d4\u0001\u0000\u0000\u0000\u03db\u03d6\u0001\u0000\u0000"+
+ "\u0000\u03db\u03d9\u0001\u0000\u0000\u0000\u03dc\u00a9\u0001\u0000\u0000"+
+ "\u0000\u03dd\u03de\u0005%\u0000\u0000\u03de\u03df\u0005\u0002\u0000\u0000"+
+ "\u03df\u03e0\u0003|>\u0000\u03e0\u03e1\u0005\u001c\u0000\u0000\u03e1\u03e2"+
+ "\u0003\u00acV\u0000\u03e2\u03e3\u0005\u0003\u0000\u0000\u03e3\u00ab\u0001"+
+ "\u0000\u0000\u0000\u03e4\u03ec\u0003\u00aeW\u0000\u03e5\u03e6\u0005\u0002"+
+ "\u0000\u0000\u03e6\u03e9\u0005\u00cb\u0000\u0000\u03e7\u03e8\u0005\u0001"+
+ "\u0000\u0000\u03e8\u03ea\u0005\u00cb\u0000\u0000\u03e9\u03e7\u0001\u0000"+
+ "\u0000\u0000\u03e9\u03ea\u0001\u0000\u0000\u0000\u03ea\u03eb\u0001\u0000"+
+ "\u0000\u0000\u03eb\u03ed\u0005\u0003\u0000\u0000\u03ec\u03e5\u0001\u0000"+
+ "\u0000\u0000\u03ec\u03ed\u0001\u0000\u0000\u0000\u03ed\u00ad\u0001\u0000"+
+ "\u0000\u0000\u03ee\u03ef\u0003\u00e2q\u0000\u03ef\u03f0\u0006W\uffff\uffff"+
+ "\u0000\u03f0\u03f7\u0001\u0000\u0000\u0000\u03f1\u03f2\u0005\u000e\u0000"+
+ "\u0000\u03f2\u03f3\u0003\u00e2q\u0000\u03f3\u03f4\u0006W\uffff\uffff\u0000"+
+ "\u03f4\u03f6\u0001\u0000\u0000\u0000\u03f5\u03f1\u0001\u0000\u0000\u0000"+
+ "\u03f6\u03f9\u0001\u0000\u0000\u0000\u03f7\u03f5\u0001\u0000\u0000\u0000"+
+ "\u03f7\u03f8\u0001\u0000\u0000\u0000\u03f8\u00af\u0001\u0000\u0000\u0000"+
+ "\u03f9\u03f7\u0001\u0000\u0000\u0000\u03fa\u03fb\u0005G\u0000\u0000\u03fb"+
+ "\u03fc\u0005\u0002\u0000\u0000\u03fc\u03fd\u0003|>\u0000\u03fd\u03fe\u0005"+
+ "Q\u0000\u0000\u03fe\u03ff\u0003|>\u0000\u03ff\u0400\u0005\u0003\u0000"+
+ "\u0000\u0400\u0407\u0001\u0000\u0000\u0000\u0401\u0402\u0003\u00b4Z\u0000"+
+ "\u0402\u0403\u0005\u0002\u0000\u0000\u0403\u0404\u0003|>\u0000\u0404\u0405"+
+ "\u0005\u0003\u0000\u0000\u0405\u0407\u0001\u0000\u0000\u0000\u0406\u03fa"+
+ "\u0001\u0000\u0000\u0000\u0406\u0401\u0001\u0000\u0000\u0000\u0407\u00b1"+
+ "\u0001\u0000\u0000\u0000\u0408\u0409\u0005\u00b4\u0000\u0000\u0409\u040b"+
+ "\u0005\u0002\u0000\u0000\u040a\u040c\u0007\u0010\u0000\u0000\u040b\u040a"+
+ "\u0001\u0000\u0000\u0000\u040b\u040c\u0001\u0000\u0000\u0000\u040c\u040e"+
+ "\u0001\u0000\u0000\u0000\u040d\u040f\u0003r9\u0000\u040e\u040d\u0001\u0000"+
+ "\u0000\u0000\u040e\u040f\u0001\u0000\u0000\u0000\u040f\u0411\u0001\u0000"+
+ "\u0000\u0000\u0410\u0412\u0005Q\u0000\u0000\u0411\u0410\u0001\u0000\u0000"+
+ "\u0000\u0411\u0412\u0001\u0000\u0000\u0000\u0412\u0413\u0001\u0000\u0000"+
+ "\u0000\u0413\u0414\u0003|>\u0000\u0414\u0415\u0005\u0003\u0000\u0000\u0415"+
+ "\u00b3\u0001\u0000\u0000\u0000\u0416\u0417\u0007\f\u0000\u0000\u0417\u00b5"+
+ "\u0001\u0000\u0000\u0000\u0418\u0419\u0007\u0011\u0000\u0000\u0419\u041a"+
+ "\u0005\u0002\u0000\u0000\u041a\u041b\u0003\u00be_\u0000\u041b\u041c\u0005"+
+ "\u0003\u0000\u0000\u041c\u0429\u0001\u0000\u0000\u0000\u041d\u041e\u0007"+
+ "\u0011\u0000\u0000\u041e\u041f\u0005\u0002\u0000\u0000\u041f\u0420\u0003"+
+ "N\'\u0000\u0420\u0421\u0005\u0003\u0000\u0000\u0421\u0429\u0001\u0000"+
+ "\u0000\u0000\u0422\u0423\u0007\u0011\u0000\u0000\u0423\u0424\u0007\u0012"+
+ "\u0000\u0000\u0424\u0425\u0005\u0002\u0000\u0000\u0425\u0426\u0003\u0088"+
+ "D\u0000\u0426\u0427\u0005\u0003\u0000\u0000\u0427\u0429\u0001\u0000\u0000"+
+ "\u0000\u0428\u0418\u0001\u0000\u0000\u0000\u0428\u041d\u0001\u0000\u0000"+
+ "\u0000\u0428\u0422\u0001\u0000\u0000\u0000\u0429\u00b7\u0001\u0000\u0000"+
+ "\u0000\u042a\u042b\u0007\u0013\u0000\u0000\u042b\u042c\u0005\u0002\u0000"+
+ "\u0000\u042c\u042d\u0003\u00be_\u0000\u042d\u042e\u0005\u0003\u0000\u0000"+
+ "\u042e\u043b\u0001\u0000\u0000\u0000\u042f\u0430\u0007\u0013\u0000\u0000"+
+ "\u0430\u0431\u0005\u0002\u0000\u0000\u0431\u0432\u0003N\'\u0000\u0432"+
+ "\u0433\u0005\u0003\u0000\u0000\u0433\u043b\u0001\u0000\u0000\u0000\u0434"+
+ "\u0435\u0007\u0013\u0000\u0000\u0435\u0436\u0007\u0012\u0000\u0000\u0436"+
+ "\u0437\u0005\u0002\u0000\u0000\u0437\u0438\u0003\u0088D\u0000\u0438\u0439"+
+ "\u0005\u0003\u0000\u0000\u0439\u043b\u0001\u0000\u0000\u0000\u043a\u042a"+
+ "\u0001\u0000\u0000\u0000\u043a\u042f\u0001\u0000\u0000\u0000\u043a\u0434"+
+ "\u0001\u0000\u0000\u0000\u043b\u00b9\u0001\u0000\u0000\u0000\u043c\u043d"+
+ "\u0005\u00b3\u0000\u0000\u043d\u043e\u0005\u0002\u0000\u0000\u043e\u043f"+
+ "\u0003\u0082A\u0000\u043f\u0440\u0005\u001c\u0000\u0000\u0440\u0441\u0003"+
+ "\u0088D\u0000\u0441\u0443\u0005\u0003\u0000\u0000\u0442\u0444\u0003\u00bc"+
+ "^\u0000\u0443\u0442\u0001\u0000\u0000\u0000\u0443\u0444\u0001\u0000\u0000"+
+ "\u0000\u0444\u00bb\u0001\u0000\u0000\u0000\u0445\u0446\u0005\u000e\u0000"+
+ "\u0000\u0446\u0447\u0003\u0088D\u0000\u0447\u00bd\u0001\u0000\u0000\u0000"+
+ "\u0448\u0449\u0006_\uffff\uffff\u0000\u0449\u044a\u0005\u0002\u0000\u0000"+
+ "\u044a\u044b\u0003\u00be_\u0000\u044b\u044c\u0005\u0003\u0000\u0000\u044c"+
+ "\u0458\u0001\u0000\u0000\u0000\u044d\u0458\u0003\u00c6c\u0000\u044e\u0458"+
+ "\u0003\u00cae\u0000\u044f\u0458\u0003\u00c4b\u0000\u0450\u0458\u0003\u00c2"+
+ "a\u0000\u0451\u0458\u0003\u00c8d\u0000\u0452\u0458\u0003\u00ceg\u0000"+
+ "\u0453\u0458\u0003\u00d0h\u0000\u0454\u0455\u0005\u0085\u0000\u0000\u0455"+
+ "\u0458\u0003\u00be_\u0004\u0456\u0458\u0003|>\u0000\u0457\u0448\u0001"+
+ "\u0000\u0000\u0000\u0457\u044d\u0001\u0000\u0000\u0000\u0457\u044e\u0001"+
+ "\u0000\u0000\u0000\u0457\u044f\u0001\u0000\u0000\u0000\u0457\u0450\u0001"+
+ "\u0000\u0000\u0000\u0457\u0451\u0001\u0000\u0000\u0000\u0457\u0452\u0001"+
+ "\u0000\u0000\u0000\u0457\u0453\u0001\u0000\u0000\u0000\u0457\u0454\u0001"+
+ "\u0000\u0000\u0000\u0457\u0456\u0001\u0000\u0000\u0000\u0458\u0461\u0001"+
+ "\u0000\u0000\u0000\u0459\u045a\n\u0003\u0000\u0000\u045a\u045b\u0005\u001a"+
+ "\u0000\u0000\u045b\u0460\u0003\u00be_\u0004\u045c\u045d\n\u0002\u0000"+
+ "\u0000\u045d\u045e\u0005\u008e\u0000\u0000\u045e\u0460\u0003\u00be_\u0003"+
+ "\u045f\u0459\u0001\u0000\u0000\u0000\u045f\u045c\u0001\u0000\u0000\u0000"+
+ "\u0460\u0463\u0001\u0000\u0000\u0000\u0461\u045f\u0001\u0000\u0000\u0000"+
+ "\u0461\u0462\u0001\u0000\u0000\u0000\u0462\u00bf\u0001\u0000\u0000\u0000"+
+ "\u0463\u0461\u0001\u0000\u0000\u0000\u0464\u0467\u0003|>\u0000\u0465\u0467"+
+ "\u0003\u00be_\u0000\u0466\u0464\u0001\u0000\u0000\u0000\u0466\u0465\u0001"+
+ "\u0000\u0000\u0000\u0467\u00c1\u0001\u0000\u0000\u0000\u0468\u0469\u0003"+
+ "|>\u0000\u0469\u046a\u0007\u0014\u0000\u0000\u046a\u046b\u0003|>\u0000"+
+ "\u046b\u00c3\u0001\u0000\u0000\u0000\u046c\u046e\u0003|>\u0000\u046d\u046f"+
+ "\u0005\u0085\u0000\u0000\u046e\u046d\u0001\u0000\u0000\u0000\u046e\u046f"+
+ "\u0001\u0000\u0000\u0000\u046f\u0470\u0001\u0000\u0000\u0000\u0470\u0471"+
+ "\u0005 \u0000\u0000\u0471\u0472\u0003|>\u0000\u0472\u0473\u0005\u001a"+
+ "\u0000\u0000\u0473\u0474\u0003|>\u0000\u0474\u00c5\u0001\u0000\u0000\u0000"+
+ "\u0475\u0476\u0003|>\u0000\u0476\u0478\u0005c\u0000\u0000\u0477\u0479"+
+ "\u0005\u0085\u0000\u0000\u0478\u0477\u0001\u0000\u0000\u0000\u0478\u0479"+
+ "\u0001\u0000\u0000\u0000\u0479\u047a\u0001\u0000\u0000\u0000\u047a\u047b"+
+ "\u0005\u0086\u0000\u0000\u047b\u0486\u0001\u0000\u0000\u0000\u047c\u047d"+
+ "\u0003|>\u0000\u047d\u047f\u0005c\u0000\u0000\u047e\u0480\u0005\u0085"+
+ "\u0000\u0000\u047f\u047e\u0001\u0000\u0000\u0000\u047f\u0480\u0001\u0000"+
+ "\u0000\u0000\u0480\u0481\u0001\u0000\u0000\u0000\u0481\u0482\u00058\u0000"+
+ "\u0000\u0482\u0483\u0005Q\u0000\u0000\u0483\u0484\u0003|>\u0000\u0484"+
+ "\u0486\u0001\u0000\u0000\u0000\u0485\u0475\u0001\u0000\u0000\u0000\u0485"+
+ "\u047c\u0001\u0000\u0000\u0000\u0486\u00c7\u0001\u0000\u0000\u0000\u0487"+
+ "\u0489\u0003|>\u0000\u0488\u048a\u0005\u0085\u0000\u0000\u0489\u0488\u0001"+
+ "\u0000\u0000\u0000\u0489\u048a\u0001\u0000\u0000\u0000\u048a\u048b\u0001"+
+ "\u0000\u0000\u0000\u048b\u048c\u0007\u0015\u0000\u0000\u048c\u0492\u0003"+
+ "|>\u0000\u048d\u0490\u0005A\u0000\u0000\u048e\u0491\u0003r9\u0000\u048f"+
+ "\u0491\u0003\u00deo\u0000\u0490\u048e\u0001\u0000\u0000\u0000\u0490\u048f"+
+ "\u0001\u0000\u0000\u0000\u0491\u0493\u0001\u0000\u0000\u0000\u0492\u048d"+
+ "\u0001\u0000\u0000\u0000\u0492\u0493\u0001\u0000\u0000\u0000\u0493\u00c9"+
+ "\u0001\u0000\u0000\u0000\u0494\u0496\u0003|>\u0000\u0495\u0497\u0005\u0085"+
+ "\u0000\u0000\u0496\u0495\u0001\u0000\u0000\u0000\u0496\u0497\u0001\u0000"+
+ "\u0000\u0000\u0497\u0498\u0001\u0000\u0000\u0000\u0498\u0499\u0005[\u0000"+
+ "\u0000\u0499\u049a\u0003\u00ccf\u0000\u049a\u00cb\u0001\u0000\u0000\u0000"+
+ "\u049b\u049c\u0007\u0012\u0000\u0000\u049c\u049d\u0005\u0002\u0000\u0000"+
+ "\u049d\u049e\u0003\u0088D\u0000\u049e\u049f\u0005\u0003\u0000\u0000\u049f"+
+ "\u04b2\u0001\u0000\u0000\u0000\u04a0\u04a1\u0005\u0002\u0000\u0000\u04a1"+
+ "\u04a2\u0003N\'\u0000\u04a2\u04a3\u0005\u0003\u0000\u0000\u04a3\u04b2"+
+ "\u0001\u0000\u0000\u0000\u04a4\u04b2\u0003\u00deo\u0000\u04a5\u04ae\u0005"+
+ "\u0002\u0000\u0000\u04a6\u04ab\u0003\u00c0`\u0000\u04a7\u04a8\u0005\u0001"+
+ "\u0000\u0000\u04a8\u04aa\u0003\u00c0`\u0000\u04a9\u04a7\u0001\u0000\u0000"+
+ "\u0000\u04aa\u04ad\u0001\u0000\u0000\u0000\u04ab\u04a9\u0001\u0000\u0000"+
+ "\u0000\u04ab\u04ac\u0001\u0000\u0000\u0000\u04ac\u04af\u0001\u0000\u0000"+
+ "\u0000\u04ad\u04ab\u0001\u0000\u0000\u0000\u04ae\u04a6\u0001\u0000\u0000"+
+ "\u0000\u04ae\u04af\u0001\u0000\u0000\u0000\u04af\u04b0\u0001\u0000\u0000"+
+ "\u0000\u04b0\u04b2\u0005\u0003\u0000\u0000\u04b1\u049b\u0001\u0000\u0000"+
+ "\u0000\u04b1\u04a0\u0001\u0000\u0000\u0000\u04b1\u04a4\u0001\u0000\u0000"+
+ "\u0000\u04b1\u04a5\u0001\u0000\u0000\u0000\u04b2\u00cd\u0001\u0000\u0000"+
+ "\u0000\u04b3\u04b4\u0005E\u0000\u0000\u04b4\u04b5\u0007\u0012\u0000\u0000"+
+ "\u04b5\u04b6\u0005\u0002\u0000\u0000\u04b6\u04b7\u0003\u0088D\u0000\u04b7"+
+ "\u04b8\u0005\u0003\u0000\u0000\u04b8\u04bc\u0001\u0000\u0000\u0000\u04b9"+
+ "\u04ba\u0005E\u0000\u0000\u04ba\u04bc\u0003|>\u0000\u04bb\u04b3\u0001"+
+ "\u0000\u0000\u0000\u04bb\u04b9\u0001\u0000\u0000\u0000\u04bc\u00cf\u0001"+
+ "\u0000\u0000\u0000\u04bd\u04be\u0003|>\u0000\u04be\u04c0\u0005c\u0000"+
+ "\u0000\u04bf\u04c1\u0005\u0085\u0000\u0000\u04c0\u04bf\u0001\u0000\u0000"+
+ "\u0000\u04c0\u04c1\u0001\u0000\u0000\u0000\u04c1\u04c2\u0001\u0000\u0000"+
+ "\u0000\u04c2\u04c3\u0005<\u0000\u0000\u04c3\u04cd\u0001\u0000\u0000\u0000"+
+ "\u04c4\u04c6\u0003|>\u0000\u04c5\u04c7\u0005\u0085\u0000\u0000\u04c6\u04c5"+
+ "\u0001\u0000\u0000\u0000\u04c6\u04c7\u0001\u0000\u0000\u0000\u04c7\u04c8"+
+ "\u0001\u0000\u0000\u0000\u04c8\u04c9\u0005x\u0000\u0000\u04c9\u04ca\u0005"+
+ "\u0089\u0000\u0000\u04ca\u04cb\u0003\u0082A\u0000\u04cb\u04cd\u0001\u0000"+
+ "\u0000\u0000\u04cc\u04bd\u0001\u0000\u0000\u0000\u04cc\u04c4\u0001\u0000"+
+ "\u0000\u0000\u04cd\u00d1\u0001\u0000\u0000\u0000\u04ce\u04d2\u0005l\u0000"+
+ "\u0000\u04cf\u04d2\u0005s\u0000\u0000\u04d0\u04d2\u0003\u0088D\u0000\u04d1"+
+ "\u04ce\u0001\u0000\u0000\u0000\u04d1\u04cf\u0001\u0000\u0000\u0000\u04d1"+
+ "\u04d0\u0001\u0000\u0000\u0000\u04d2\u00d3\u0001\u0000\u0000\u0000\u04d3"+
+ "\u04d8\u0003\u00d6k\u0000\u04d4\u04d5\u0005\u0001\u0000\u0000\u04d5\u04d7"+
+ "\u0003\u00d6k\u0000\u04d6\u04d4\u0001\u0000\u0000\u0000\u04d7\u04da\u0001"+
+ "\u0000\u0000\u0000\u04d8\u04d6\u0001\u0000\u0000\u0000\u04d8\u04d9\u0001"+
+ "\u0000\u0000\u0000\u04d9\u00d5\u0001\u0000\u0000\u0000\u04da\u04d8\u0001"+
+ "\u0000\u0000\u0000\u04db\u04de\u0003\u00c0`\u0000\u04dc\u04de\u0003:\u001d"+
+ "\u0000\u04dd\u04db\u0001\u0000\u0000\u0000\u04dd\u04dc\u0001\u0000\u0000"+
+ "\u0000\u04de\u04e0\u0001\u0000\u0000\u0000\u04df\u04e1\u0003\u00dcn\u0000"+
+ "\u04e0\u04df\u0001\u0000\u0000\u0000\u04e0\u04e1\u0001\u0000\u0000\u0000"+
+ "\u04e1\u00d7\u0001\u0000\u0000\u0000\u04e2\u04e5\u0003\u00deo\u0000\u04e3"+
+ "\u04e5\u0005\u00cb\u0000\u0000\u04e4\u04e2\u0001\u0000\u0000\u0000\u04e4"+
+ "\u04e3\u0001\u0000\u0000\u0000\u04e5\u00d9\u0001\u0000\u0000\u0000\u04e6"+
+ "\u04e9\u0003\u00deo\u0000\u04e7\u04e9\u0003t:\u0000\u04e8\u04e6\u0001"+
+ "\u0000\u0000\u0000\u04e8\u04e7\u0001\u0000\u0000\u0000\u04e9\u00db\u0001"+
+ "\u0000\u0000\u0000\u04ea\u04eb\u0005\u001c\u0000\u0000\u04eb\u04ee\u0003"+
+ "\u00e2q\u0000\u04ec\u04ee\u0003\u00e8t\u0000\u04ed\u04ea\u0001\u0000\u0000"+
+ "\u0000\u04ed\u04ec\u0001\u0000\u0000\u0000\u04ee\u00dd\u0001\u0000\u0000"+
+ "\u0000\u04ef\u04f0\u0005\u0016\u0000\u0000\u04f0\u04f2\u0003\u00e2q\u0000"+
+ "\u04f1\u04f3\u0005\u0005\u0000\u0000\u04f2\u04f1\u0001\u0000\u0000\u0000"+
+ "\u04f2\u04f3\u0001\u0000\u0000\u0000\u04f3\u04f9\u0001\u0000\u0000\u0000"+
+ "\u04f4\u04f6\u0005\u0017\u0000\u0000\u04f5\u04f7\u0005\u00cb\u0000\u0000"+
+ "\u04f6\u04f5\u0001\u0000\u0000\u0000\u04f6\u04f7\u0001\u0000\u0000\u0000"+
+ "\u04f7\u04f9\u0001\u0000\u0000\u0000\u04f8\u04ef\u0001\u0000\u0000\u0000"+
+ "\u04f8\u04f4\u0001\u0000\u0000\u0000\u04f9\u00df\u0001\u0000\u0000\u0000"+
+ "\u04fa\u04ff\u0003\u00e2q\u0000\u04fb\u04fc\u0005\u000e\u0000\u0000\u04fc"+
+ "\u04fe\u0003\u00e2q\u0000\u04fd\u04fb\u0001\u0000\u0000\u0000\u04fe\u0501"+
+ "\u0001\u0000\u0000\u0000\u04ff\u04fd\u0001\u0000\u0000\u0000\u04ff\u0500"+
+ "\u0001\u0000\u0000\u0000\u0500\u00e1\u0001\u0000\u0000\u0000\u0501\u04ff"+
+ "\u0001\u0000\u0000\u0000\u0502\u0503\u0003\u00e8t\u0000\u0503\u00e3\u0001"+
+ "\u0000\u0000\u0000\u0504\u0505\u0005\u00c8\u0000\u0000\u0505\u00e5\u0001"+
+ "\u0000\u0000\u0000\u0506\u050b\u0003\u00e8t\u0000\u0507\u0508\u0005\u000e"+
+ "\u0000\u0000\u0508\u050a\u0003\u00e8t\u0000\u0509\u0507\u0001\u0000\u0000"+
+ "\u0000\u050a\u050d\u0001\u0000\u0000\u0000\u050b\u0509\u0001\u0000\u0000"+
+ "\u0000\u050b\u050c\u0001\u0000\u0000\u0000\u050c\u00e7\u0001\u0000\u0000"+
+ "\u0000\u050d\u050b\u0001\u0000\u0000\u0000\u050e\u0511\u0005\u00cf\u0000"+
+ "\u0000\u050f\u0511\u0007\u0016\u0000\u0000\u0510\u050e\u0001\u0000\u0000"+
+ "\u0000\u0510\u050f\u0001\u0000\u0000\u0000\u0511\u00e9\u0001\u0000\u0000"+
+ "\u0000\u009e\u00f1\u00f6\u00fe\u0107\u010d\u0110\u0116\u0119\u0128\u012d"+
+ "\u0130\u013b\u013f\u0146\u014e\u0151\u0155\u0158\u015c\u015e\u0162\u0166"+
+ "\u0168\u016b\u016d\u0171\u0174\u0177\u017f\u0186\u018c\u0190\u0193\u0199"+
+ "\u019b\u01a0\u01a4\u01a8\u01ab\u01b1\u01b3\u01b7\u01bc\u01c0\u01c8\u01d1"+
+ "\u01d5\u01d9\u01df\u01e7\u01f2\u01fb\u0207\u020e\u0212\u0215\u021a\u0227"+
+ "\u022f\u0235\u023b\u0244\u0249\u024f\u0261\u0265\u0268\u026b\u026e\u0274"+
+ "\u027f\u0288\u0292\u029b\u02a0\u02a4\u02a8\u02aa\u02b2\u02c8\u02d3\u02d7"+
+ "\u02e4\u02fa\u030a\u030c\u0314\u0318\u031c\u031f\u0323\u032a\u0330\u0338"+
+ "\u033f\u0343\u034b\u034f\u0361\u0365\u0368\u036b\u036e\u037b\u037e\u0385"+
+ "\u0396\u0399\u039c\u03a7\u03ad\u03b5\u03b7\u03c3\u03cf\u03db\u03e9\u03ec"+
+ "\u03f7\u0406\u040b\u040e\u0411\u0428\u043a\u0443\u0457\u045f\u0461\u0466"+
+ "\u046e\u0478\u047f\u0485\u0489\u0490\u0492\u0496\u04ab\u04ae\u04b1\u04bb"+
+ "\u04c0\u04c6\u04cc\u04d1\u04d8\u04dd\u04e0\u04e4\u04e8\u04ed\u04f2\u04f6"+
+ "\u04f8\u04ff\u050b\u0510";
+ 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/headless-services/commons/jpql/src/main/java/org/springframework/ide/vscode/jpql/antlr/parser/JpqlBaseListener.java b/headless-services/commons/jpql/src/main/java/org/springframework/ide/vscode/parser/jpql/JpqlBaseListener.java
similarity index 99%
rename from headless-services/commons/jpql/src/main/java/org/springframework/ide/vscode/jpql/antlr/parser/JpqlBaseListener.java
rename to headless-services/commons/jpql/src/main/java/org/springframework/ide/vscode/parser/jpql/JpqlBaseListener.java
index a087506f4..77e4abbce 100644
--- a/headless-services/commons/jpql/src/main/java/org/springframework/ide/vscode/jpql/antlr/parser/JpqlBaseListener.java
+++ b/headless-services/commons/jpql/src/main/java/org/springframework/ide/vscode/parser/jpql/JpqlBaseListener.java
@@ -1,5 +1,5 @@
// Generated from Jpql.g4 by ANTLR 4.13.1
-package org.springframework.ide.vscode.jpql.antlr.parser;
+package org.springframework.ide.vscode.parser.jpql;
/**
* JPQL per https://jakarta.ee/specifications/persistence/3.1/jakarta-persistence-spec-3.1.html#bnf
diff --git a/headless-services/commons/jpql/src/main/java/org/springframework/ide/vscode/jpql/antlr/parser/JpqlLexer.java b/headless-services/commons/jpql/src/main/java/org/springframework/ide/vscode/parser/jpql/JpqlLexer.java
similarity index 99%
rename from headless-services/commons/jpql/src/main/java/org/springframework/ide/vscode/jpql/antlr/parser/JpqlLexer.java
rename to headless-services/commons/jpql/src/main/java/org/springframework/ide/vscode/parser/jpql/JpqlLexer.java
index bb0f46ec2..a8bf06014 100644
--- a/headless-services/commons/jpql/src/main/java/org/springframework/ide/vscode/jpql/antlr/parser/JpqlLexer.java
+++ b/headless-services/commons/jpql/src/main/java/org/springframework/ide/vscode/parser/jpql/JpqlLexer.java
@@ -1,5 +1,5 @@
// Generated from Jpql.g4 by ANTLR 4.13.1
-package org.springframework.ide.vscode.jpql.antlr.parser;
+package org.springframework.ide.vscode.parser.jpql;
/**
* JPQL per https://jakarta.ee/specifications/persistence/3.1/jakarta-persistence-spec-3.1.html#bnf
diff --git a/headless-services/commons/jpql/src/main/java/org/springframework/ide/vscode/jpql/antlr/parser/JpqlListener.java b/headless-services/commons/jpql/src/main/java/org/springframework/ide/vscode/parser/jpql/JpqlListener.java
similarity index 99%
rename from headless-services/commons/jpql/src/main/java/org/springframework/ide/vscode/jpql/antlr/parser/JpqlListener.java
rename to headless-services/commons/jpql/src/main/java/org/springframework/ide/vscode/parser/jpql/JpqlListener.java
index efe8860af..591604cde 100644
--- a/headless-services/commons/jpql/src/main/java/org/springframework/ide/vscode/jpql/antlr/parser/JpqlListener.java
+++ b/headless-services/commons/jpql/src/main/java/org/springframework/ide/vscode/parser/jpql/JpqlListener.java
@@ -1,5 +1,5 @@
// Generated from Jpql.g4 by ANTLR 4.13.1
-package org.springframework.ide.vscode.jpql.antlr.parser;
+package org.springframework.ide.vscode.parser.jpql;
/**
* JPQL per https://jakarta.ee/specifications/persistence/3.1/jakarta-persistence-spec-3.1.html#bnf
diff --git a/headless-services/commons/jpql/src/main/java/org/springframework/ide/vscode/jpql/antlr/parser/JpqlParser.java b/headless-services/commons/jpql/src/main/java/org/springframework/ide/vscode/parser/jpql/JpqlParser.java
similarity index 99%
rename from headless-services/commons/jpql/src/main/java/org/springframework/ide/vscode/jpql/antlr/parser/JpqlParser.java
rename to headless-services/commons/jpql/src/main/java/org/springframework/ide/vscode/parser/jpql/JpqlParser.java
index 7da8c0281..ff64d94ae 100644
--- a/headless-services/commons/jpql/src/main/java/org/springframework/ide/vscode/jpql/antlr/parser/JpqlParser.java
+++ b/headless-services/commons/jpql/src/main/java/org/springframework/ide/vscode/parser/jpql/JpqlParser.java
@@ -1,5 +1,5 @@
// Generated from Jpql.g4 by ANTLR 4.13.1
-package org.springframework.ide.vscode.jpql.antlr.parser;
+package org.springframework.ide.vscode.parser.jpql;
/**
* JPQL per https://jakarta.ee/specifications/persistence/3.1/jakarta-persistence-spec-3.1.html#bnf
diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/data/jpa/queries/HqlSemanticTokens.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/data/jpa/queries/HqlSemanticTokens.java
new file mode 100644
index 000000000..4a75a2d91
--- /dev/null
+++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/data/jpa/queries/HqlSemanticTokens.java
@@ -0,0 +1,133 @@
+/*******************************************************************************
+ * Copyright (c) 2024 Broadcom, Inc.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Broadcom, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.springframework.ide.vscode.boot.java.data.jpa.queries;
+
+import java.util.ArrayList;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Stack;
+
+import org.antlr.v4.runtime.CharStreams;
+import org.antlr.v4.runtime.CommonTokenStream;
+import org.antlr.v4.runtime.Token;
+import org.antlr.v4.runtime.tree.ErrorNode;
+import org.antlr.v4.runtime.tree.TerminalNode;
+import org.springframework.ide.vscode.commons.languageserver.semantic.tokens.SemanticTokenData;
+import org.springframework.ide.vscode.commons.languageserver.semantic.tokens.SemanticTokensDataProvider;
+import org.springframework.ide.vscode.parser.hql.HqlBaseListener;
+import org.springframework.ide.vscode.parser.hql.HqlLexer;
+import org.springframework.ide.vscode.parser.hql.HqlParser;
+import org.springframework.ide.vscode.parser.hql.HqlParser.EntityNameContext;
+import org.springframework.ide.vscode.parser.hql.HqlParser.SimplePathElementContext;
+
+public class HqlSemanticTokens implements SemanticTokensDataProvider {
+
+ private static List TOKEN_TYPES = List.of("keyword", "type", "class", "string", "number", "operator",
+ "variable", "method", "modifier", "regexp");
+
+ @Override
+ public List getTokenTypes() {
+ return TOKEN_TYPES;
+ }
+
+ @Override
+ public List computeTokens(String text, int initialOffset) {
+ List tokens = new ArrayList<>();
+ HqlLexer lexer = new HqlLexer(CharStreams.fromString(text));
+ CommonTokenStream antlrTokens = new CommonTokenStream(lexer);
+ HqlParser parser = new HqlParser(antlrTokens);
+ LinkedHashSet coloredTokens = new LinkedHashSet<>();
+
+ Stack pathContexts = new Stack<>();
+
+ parser.addParseListener(new HqlBaseListener() {
+
+ private void addToken(Token token, String tokenType) {
+ tokens.add(new SemanticTokenData(token.getStartIndex() + initialOffset,
+ token.getStartIndex() + token.getText().length() + initialOffset, tokenType, new String[0]));
+ coloredTokens.add(token);
+ }
+
+ private void processTerminalNode(TerminalNode node) {
+ if (coloredTokens.contains(node.getSymbol())) {
+ return;
+ }
+ int type = node.getSymbol().getType();
+ switch (type) {
+ case HqlParser.STRINGLITERAL:
+ case HqlParser.CHARACTER:
+ addToken(node.getSymbol(), "string");
+ break;
+ case HqlParser.HEXLITERAL:
+ case HqlParser.INTEGER_LITERAL:
+ case HqlParser.FLOAT_LITERAL:
+ case HqlParser.BINARY_LITERAL:
+ addToken(node.getSymbol(), "number");
+ break;
+ case HqlParser.IDENTIFICATION_VARIABLE:
+ if (pathContexts.isEmpty()) {
+ addToken(node.getSymbol(), "variable");
+ } else {
+ addToken(node.getSymbol(), "method");
+ }
+ break;
+ case HqlParser.JAVASTRINGLITERAL:
+ addToken(node.getSymbol(), "class");
+ break;
+ case HqlParser.WS:
+ break;
+// case JpqlParser.SPEL:
+// addToken(node.getSymbol(), "regexp");
+// break;
+ default:
+ if (HqlParser.WS < type && type <= HqlParser.YEAR) {
+ addToken(node.getSymbol(), "keyword");
+ } else {
+ addToken(node.getSymbol(), "modifier");
+ }
+ }
+ }
+
+ @Override
+ public void visitTerminal(TerminalNode node) {
+ processTerminalNode(node);
+ }
+
+ @Override
+ public void visitErrorNode(ErrorNode node) {
+ processTerminalNode(node);
+ }
+
+
+ @Override
+ public void enterEntityName(EntityNameContext ctx) {
+ addToken(ctx.getStart(), "class");
+ }
+
+
+
+ @Override
+ public void enterSimplePathElement(SimplePathElementContext ctx) {
+ pathContexts.push(ctx);
+ }
+
+ @Override
+ public void exitSimplePathElement(SimplePathElementContext ctx) {
+ pathContexts.pop();
+ }
+
+ });
+
+ parser.ql_statement();
+ return tokens;
+ }
+
+}
diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/data/jpa/queries/JpqlSemanticTokens.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/data/jpa/queries/JpqlSemanticTokens.java
index 1a58c6475..812b5974a 100644
--- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/data/jpa/queries/JpqlSemanticTokens.java
+++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/data/jpa/queries/JpqlSemanticTokens.java
@@ -21,14 +21,14 @@ import org.antlr.v4.runtime.tree.ErrorNode;
import org.antlr.v4.runtime.tree.TerminalNode;
import org.springframework.ide.vscode.commons.languageserver.semantic.tokens.SemanticTokenData;
import org.springframework.ide.vscode.commons.languageserver.semantic.tokens.SemanticTokensDataProvider;
-import org.springframework.ide.vscode.jpql.antlr.parser.JpqlBaseListener;
-import org.springframework.ide.vscode.jpql.antlr.parser.JpqlLexer;
-import org.springframework.ide.vscode.jpql.antlr.parser.JpqlParser;
-import org.springframework.ide.vscode.jpql.antlr.parser.JpqlParser.Collection_valued_fieldContext;
-import org.springframework.ide.vscode.jpql.antlr.parser.JpqlParser.Entity_nameContext;
-import org.springframework.ide.vscode.jpql.antlr.parser.JpqlParser.Entity_type_literalContext;
-import org.springframework.ide.vscode.jpql.antlr.parser.JpqlParser.Single_valued_object_fieldContext;
-import org.springframework.ide.vscode.jpql.antlr.parser.JpqlParser.State_fieldContext;
+import org.springframework.ide.vscode.parser.jpql.JpqlBaseListener;
+import org.springframework.ide.vscode.parser.jpql.JpqlLexer;
+import org.springframework.ide.vscode.parser.jpql.JpqlParser;
+import org.springframework.ide.vscode.parser.jpql.JpqlParser.Collection_valued_fieldContext;
+import org.springframework.ide.vscode.parser.jpql.JpqlParser.Entity_nameContext;
+import org.springframework.ide.vscode.parser.jpql.JpqlParser.Entity_type_literalContext;
+import org.springframework.ide.vscode.parser.jpql.JpqlParser.Single_valued_object_fieldContext;
+import org.springframework.ide.vscode.parser.jpql.JpqlParser.State_fieldContext;
public class JpqlSemanticTokens implements SemanticTokensDataProvider {
diff --git a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/java/data/jpa/queries/HqlSemanticTokensTest.java b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/java/data/jpa/queries/HqlSemanticTokensTest.java
new file mode 100644
index 000000000..6a3462752
--- /dev/null
+++ b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/java/data/jpa/queries/HqlSemanticTokensTest.java
@@ -0,0 +1,91 @@
+/*******************************************************************************
+ * Copyright (c) 2024 Broadcom, Inc.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Broadcom, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.springframework.ide.vscode.boot.java.data.jpa.queries;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.util.List;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.ide.vscode.commons.languageserver.semantic.tokens.SemanticTokenData;
+
+public class HqlSemanticTokensTest {
+
+ private HqlSemanticTokens provider = new HqlSemanticTokens();
+
+ @Test
+ void simpleQuery_1() {
+ List tokens = provider.computeTokens("SELECT owner FROM Owner owner", 0);
+ assertThat(tokens.get(0)).isEqualTo(new SemanticTokenData(0, 6, "keyword", new String[0]));
+ assertThat(tokens.get(1)).isEqualTo(new SemanticTokenData(7, 12, "variable", new String[0]));
+ assertThat(tokens.get(2)).isEqualTo(new SemanticTokenData(13, 17, "keyword", new String[0]));
+ assertThat(tokens.get(3)).isEqualTo(new SemanticTokenData(18, 23, "class", new String[0]));
+ assertThat(tokens.get(4)).isEqualTo(new SemanticTokenData(24, 29, "variable", new String[0]));
+
+ assertThat(tokens.size()).isEqualTo(5);
+ }
+
+ @Test
+ void initialOffset() {
+ List tokens = provider.computeTokens("SELECT owner FROM Owner owner", 3);
+ assertThat(tokens.get(0)).isEqualTo(new SemanticTokenData(3, 9, "keyword", new String[0]));
+ assertThat(tokens.get(1)).isEqualTo(new SemanticTokenData(10, 15, "variable", new String[0]));
+ assertThat(tokens.get(2)).isEqualTo(new SemanticTokenData(16, 20, "keyword", new String[0]));
+ assertThat(tokens.get(3)).isEqualTo(new SemanticTokenData(21, 26, "class", new String[0]));
+ assertThat(tokens.get(4)).isEqualTo(new SemanticTokenData(27, 32, "variable", new String[0]));
+
+ assertThat(tokens.size()).isEqualTo(5);
+ }
+
+ @Test
+ void query_with_conflicting_groupby() {
+ List tokens = provider.computeTokens("SELECT g FROM Group g GROUP BY g.name", 0);
+ assertThat(tokens.get(0)).isEqualTo(new SemanticTokenData(0, 6, "keyword", new String[0]));
+ assertThat(tokens.get(1)).isEqualTo(new SemanticTokenData(7, 8, "variable", new String[0]));
+ assertThat(tokens.get(2)).isEqualTo(new SemanticTokenData(9, 13, "keyword", new String[0]));
+ assertThat(tokens.get(3)).isEqualTo(new SemanticTokenData(14, 19, "class", new String[0]));
+ assertThat(tokens.get(4)).isEqualTo(new SemanticTokenData(20, 21, "variable", new String[0]));
+ assertThat(tokens.get(5)).isEqualTo(new SemanticTokenData(22, 27, "keyword", new String[0]));
+ assertThat(tokens.get(6)).isEqualTo(new SemanticTokenData(28, 30, "keyword", new String[0]));
+ assertThat(tokens.get(7)).isEqualTo(new SemanticTokenData(31, 32, "variable", new String[0]));
+ assertThat(tokens.get(8)).isEqualTo(new SemanticTokenData(32, 33, "modifier", new String[0]));
+ assertThat(tokens.get(9)).isEqualTo(new SemanticTokenData(33, 37, "method", new String[0]));
+
+ assertThat(tokens.size()).isEqualTo(10);
+ }
+
+ @Test
+ void query_with_parameter() {
+ List tokens = provider.computeTokens("SELECT DISTINCT owner FROM Owner owner left join owner.pets WHERE owner.lastName LIKE :lastName%", 0);
+ assertThat(tokens.get(0)).isEqualTo(new SemanticTokenData(0, 6, "keyword", new String[0])); // SELECT
+ assertThat(tokens.get(1)).isEqualTo(new SemanticTokenData(7, 15, "keyword", new String[0])); // DISTINCT
+ assertThat(tokens.get(2)).isEqualTo(new SemanticTokenData(16, 21, "variable", new String[0])); // owner
+ assertThat(tokens.get(3)).isEqualTo(new SemanticTokenData(22, 26, "keyword", new String[0])); // FROM
+ assertThat(tokens.get(4)).isEqualTo(new SemanticTokenData(27, 32, "class", new String[0])); // Owner
+ assertThat(tokens.get(5)).isEqualTo(new SemanticTokenData(33, 38, "variable", new String[0])); // owner
+ assertThat(tokens.get(6)).isEqualTo(new SemanticTokenData(39, 43, "keyword", new String[0])); // left
+ assertThat(tokens.get(7)).isEqualTo(new SemanticTokenData(44, 48, "keyword", new String[0])); // join
+ assertThat(tokens.get(8)).isEqualTo(new SemanticTokenData(50, 55, "variable", new String[0])); // owner
+ assertThat(tokens.get(9)).isEqualTo(new SemanticTokenData(55, 56, "modifier", new String[0])); // .
+ assertThat(tokens.get(10)).isEqualTo(new SemanticTokenData(56, 60, "method", new String[0])); // pets
+ assertThat(tokens.get(11)).isEqualTo(new SemanticTokenData(61, 66, "keyword", new String[0])); // WHERE
+ assertThat(tokens.get(12)).isEqualTo(new SemanticTokenData(67, 72, "variable", new String[0])); // owner
+ assertThat(tokens.get(13)).isEqualTo(new SemanticTokenData(72, 73, "modifier", new String[0])); // .
+ assertThat(tokens.get(14)).isEqualTo(new SemanticTokenData(73, 81, "method", new String[0])); // lastName
+ assertThat(tokens.get(15)).isEqualTo(new SemanticTokenData(82, 86, "keyword", new String[0])); // LIKE
+ assertThat(tokens.get(16)).isEqualTo(new SemanticTokenData(87, 88, "modifier", new String[0])); // :
+ assertThat(tokens.get(17)).isEqualTo(new SemanticTokenData(88, 96, "variable", new String[0])); // lastName
+ assertThat(tokens.get(18)).isEqualTo(new SemanticTokenData(96, 97, "modifier", new String[0])); // lastName
+
+ assertThat(tokens.size()).isEqualTo(19);
+ }
+
+}