diff --git a/README.md b/README.md index 46cc753..27b0cd5 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ ### 介绍 -基于antlr4 statement 解析器,支持spark sql, tidb sql, flink sql, Spark/flink jar 运行命令解析 +基于antlr4 statement 数据血缘解析器,支持spark sql,presto sql,tidb sql, flink sql, Spark/flink jar 运行命令解析 ##### build diff --git a/pom.xml b/pom.xml index a824ddb..2e8272d 100644 --- a/pom.xml +++ b/pom.xml @@ -6,10 +6,10 @@ com.github.bigdata.sql.parser bigdata-sql-parser - 2.1.0-SNAPSHOT + 1.0.0 - 1.2.51 + 1.3.72 4.7 @@ -31,12 +31,19 @@ commons-collections 3.2.2 + commons-configuration commons-configuration 1.10 + + com.facebook.presto + presto-parser + 0.259.1 + + junit junit @@ -48,22 +55,13 @@ org.slf4j slf4j-api 1.7.24 + provided org.slf4j log4j-over-slf4j 1.7.24 - - - - ch.qos.logback - logback-core - 1.2.1 - - - ch.qos.logback - logback-classic - 1.2.1 + provided @@ -183,4 +181,4 @@ https://repository.cloudera.com/content/repositories/releases/ - \ No newline at end of file + diff --git a/src/main/antlr4/com/github/bigdata/sql/antlr4/presto/PrestoSql.g4 b/src/main/antlr4/com/github/bigdata/sql/antlr4/presto/PrestoSql.g4 new file mode 100644 index 0000000..6c6af4e --- /dev/null +++ b/src/main/antlr4/com/github/bigdata/sql/antlr4/presto/PrestoSql.g4 @@ -0,0 +1,891 @@ +/* + * 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 + * + * http://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 PrestoSql; + +tokens { + DELIMITER +} + +singleStatement + : statement EOF + ; + +standaloneExpression + : expression EOF + ; + +standaloneRoutineBody + : routineBody EOF + ; + +statement + : query #statementDefault + | USE schema=identifier #use + | USE catalog=identifier '.' schema=identifier #use + | CREATE SCHEMA (IF NOT EXISTS)? qualifiedName + (WITH properties)? #createSchema + | DROP SCHEMA (IF EXISTS)? qualifiedName (CASCADE | RESTRICT)? #dropSchema + | ALTER SCHEMA qualifiedName RENAME TO identifier #renameSchema + | CREATE TABLE (IF NOT EXISTS)? qualifiedName columnAliases? + (COMMENT string)? + (WITH properties)? AS (query | '('query')') + (WITH (NO)? DATA)? #createTableAsSelect + | CREATE TABLE (IF NOT EXISTS)? qualifiedName + '(' tableElement (',' tableElement)* ')' + (COMMENT string)? + (WITH properties)? #createTable + | DROP TABLE (IF EXISTS)? qualifiedName #dropTable + | INSERT INTO qualifiedName columnAliases? query #insertInto + | DELETE FROM qualifiedName (WHERE booleanExpression)? #delete + | ALTER TABLE (IF EXISTS)? from=qualifiedName + RENAME TO to=qualifiedName #renameTable + | ALTER TABLE (IF EXISTS)? tableName=qualifiedName + RENAME COLUMN (IF EXISTS)? from=identifier TO to=identifier #renameColumn + | ALTER TABLE (IF EXISTS)? tableName=qualifiedName + DROP COLUMN (IF EXISTS)? column=qualifiedName #dropColumn + | ALTER TABLE (IF EXISTS)? tableName=qualifiedName + ADD COLUMN (IF NOT EXISTS)? column=columnDefinition #addColumn + | ANALYZE qualifiedName (WITH properties)? #analyze + | CREATE TYPE qualifiedName AS ( + '(' sqlParameterDeclaration (',' sqlParameterDeclaration)* ')' + | type) #createType + | CREATE (OR REPLACE)? VIEW qualifiedName + (SECURITY (DEFINER | INVOKER))? AS query #createView + | DROP VIEW (IF EXISTS)? qualifiedName #dropView + | CREATE MATERIALIZED VIEW (IF NOT EXISTS)? qualifiedName + (COMMENT string)? + (WITH properties)? AS (query | '('query')') #createMaterializedView + | DROP MATERIALIZED VIEW (IF EXISTS)? qualifiedName #dropMaterializedView + | REFRESH MATERIALIZED VIEW qualifiedName WHERE booleanExpression #refreshMaterializedView + | CREATE (OR REPLACE)? TEMPORARY? FUNCTION functionName=qualifiedName + '(' (sqlParameterDeclaration (',' sqlParameterDeclaration)*)? ')' + RETURNS returnType=type + (COMMENT string)? + routineCharacteristics routineBody #createFunction + | ALTER FUNCTION qualifiedName types? + alterRoutineCharacteristics #alterFunction + | DROP TEMPORARY? FUNCTION (IF EXISTS)? qualifiedName types? #dropFunction + | CALL qualifiedName '(' (callArgument (',' callArgument)*)? ')' #call + | CREATE ROLE name=identifier + (WITH ADMIN grantor)? #createRole + | DROP ROLE name=identifier #dropRole + | GRANT + roles + TO principal (',' principal)* + (WITH ADMIN OPTION)? + (GRANTED BY grantor)? #grantRoles + | REVOKE + (ADMIN OPTION FOR)? + roles + FROM principal (',' principal)* + (GRANTED BY grantor)? #revokeRoles + | SET ROLE (ALL | NONE | role=identifier) #setRole + | GRANT + (privilege (',' privilege)* | ALL PRIVILEGES) + ON TABLE? qualifiedName TO grantee=principal + (WITH GRANT OPTION)? #grant + | REVOKE + (GRANT OPTION FOR)? + (privilege (',' privilege)* | ALL PRIVILEGES) + ON TABLE? qualifiedName FROM grantee=principal #revoke + | SHOW GRANTS + (ON TABLE? qualifiedName)? #showGrants + | EXPLAIN ANALYZE? VERBOSE? + ('(' explainOption (',' explainOption)* ')')? statement #explain + | SHOW CREATE TABLE qualifiedName #showCreateTable + | SHOW CREATE VIEW qualifiedName #showCreateView + | SHOW CREATE MATERIALIZED VIEW qualifiedName #showCreateMaterializedView + | SHOW CREATE FUNCTION qualifiedName types? #showCreateFunction + | SHOW TABLES ((FROM | IN) qualifiedName)? + (LIKE pattern=string (ESCAPE escape=string)?)? #showTables + | SHOW SCHEMAS ((FROM | IN) identifier)? + (LIKE pattern=string (ESCAPE escape=string)?)? #showSchemas + | SHOW CATALOGS (LIKE pattern=string)? #showCatalogs + | SHOW COLUMNS (FROM | IN) qualifiedName #showColumns + | SHOW STATS FOR qualifiedName #showStats + | SHOW STATS FOR '(' querySpecification ')' #showStatsForQuery + | SHOW CURRENT? ROLES ((FROM | IN) identifier)? #showRoles + | SHOW ROLE GRANTS ((FROM | IN) identifier)? #showRoleGrants + | DESCRIBE qualifiedName #showColumns + | DESC qualifiedName #showColumns + | SHOW FUNCTIONS + (LIKE pattern=string (ESCAPE escape=string)?)? #showFunctions + | SHOW SESSION #showSession + | SET SESSION qualifiedName EQ expression #setSession + | RESET SESSION qualifiedName #resetSession + | START TRANSACTION (transactionMode (',' transactionMode)*)? #startTransaction + | COMMIT WORK? #commit + | ROLLBACK WORK? #rollback + | PREPARE identifier FROM statement #prepare + | DEALLOCATE PREPARE identifier #deallocate + | EXECUTE identifier (USING expression (',' expression)*)? #execute + | DESCRIBE INPUT identifier #describeInput + | DESCRIBE OUTPUT identifier #describeOutput + ; + +query + : with? queryNoWith + ; + +with + : WITH RECURSIVE? namedQuery (',' namedQuery)* + ; + +tableElement + : columnDefinition + | likeClause + ; + +columnDefinition + : identifier type (NOT NULL)? (COMMENT string)? (WITH properties)? + ; + +likeClause + : LIKE qualifiedName (optionType=(INCLUDING | EXCLUDING) PROPERTIES)? + ; + +properties + : '(' property (',' property)* ')' + ; + +property + : identifier EQ expression + ; + +sqlParameterDeclaration + : identifier type + ; + +routineCharacteristics + : routineCharacteristic* + ; + +routineCharacteristic + : LANGUAGE language + | determinism + | nullCallClause + ; + +alterRoutineCharacteristics + : alterRoutineCharacteristic* + ; + +alterRoutineCharacteristic + : nullCallClause + ; + +routineBody + : returnStatement + | externalBodyReference + ; + +returnStatement + : RETURN expression + ; + +externalBodyReference + : EXTERNAL (NAME externalRoutineName)? + ; + +language + : SQL + | identifier + ; + +determinism + : DETERMINISTIC + | NOT DETERMINISTIC; + +nullCallClause + : RETURNS NULL ON NULL INPUT + | CALLED ON NULL INPUT + ; + +externalRoutineName + : identifier + ; + +queryNoWith: + queryTerm + (ORDER BY sortItem (',' sortItem)*)? + (OFFSET offset=INTEGER_VALUE (ROW | ROWS)?)? + (LIMIT limit=(INTEGER_VALUE | ALL))? + ; + +queryTerm + : queryPrimary #queryTermDefault + | left=queryTerm operator=INTERSECT setQuantifier? right=queryTerm #setOperation + | left=queryTerm operator=(UNION | EXCEPT) setQuantifier? right=queryTerm #setOperation + ; + +queryPrimary + : querySpecification #queryPrimaryDefault + | TABLE qualifiedName #table + | VALUES expression (',' expression)* #inlineTable + | '(' queryNoWith ')' #subquery + ; + +sortItem + : expression ordering=(ASC | DESC)? (NULLS nullOrdering=(FIRST | LAST))? + ; + +querySpecification + : SELECT setQuantifier? selectItem (',' selectItem)* + (FROM relation (',' relation)*)? + (WHERE where=booleanExpression)? + (GROUP BY groupBy)? + (HAVING having=booleanExpression)? + ; + +groupBy + : setQuantifier? groupingElement (',' groupingElement)* + ; + +groupingElement + : groupingSet #singleGroupingSet + | ROLLUP '(' (expression (',' expression)*)? ')' #rollup + | CUBE '(' (expression (',' expression)*)? ')' #cube + | GROUPING SETS '(' groupingSet (',' groupingSet)* ')' #multipleGroupingSets + ; + +groupingSet + : '(' (expression (',' expression)*)? ')' + | expression + ; + +namedQuery + : name=identifier (columnAliases)? AS '(' query ')' + ; + +setQuantifier + : DISTINCT + | ALL + ; + +selectItem + : expression (AS? identifier)? #selectSingle + | qualifiedName '.' ASTERISK #selectAll + | ASTERISK #selectAll + ; + +relation + : left=relation + ( CROSS JOIN right=sampledRelation + | joinType JOIN rightRelation=relation joinCriteria + | NATURAL joinType JOIN right=sampledRelation + ) #joinRelation + | sampledRelation #relationDefault + ; + +joinType + : INNER? + | LEFT OUTER? + | RIGHT OUTER? + | FULL OUTER? + ; + +joinCriteria + : ON booleanExpression + | USING '(' identifier (',' identifier)* ')' + ; + +sampledRelation + : aliasedRelation ( + TABLESAMPLE sampleType '(' percentage=expression ')' + )? + ; + +sampleType + : BERNOULLI + | SYSTEM + ; + +aliasedRelation + : relationPrimary (AS? identifier columnAliases?)? + ; + +columnAliases + : '(' identifier (',' identifier)* ')' + ; + +relationPrimary + : qualifiedName #tableName + | '(' query ')' #subqueryRelation + | UNNEST '(' expression (',' expression)* ')' (WITH ORDINALITY)? #unnest + | LATERAL '(' query ')' #lateral + | '(' relation ')' #parenthesizedRelation + ; + +expression + : booleanExpression + ; + +booleanExpression + : valueExpression predicate[$valueExpression.ctx]? #predicated + | NOT booleanExpression #logicalNot + | left=booleanExpression operator=AND right=booleanExpression #logicalBinary + | left=booleanExpression operator=OR right=booleanExpression #logicalBinary + ; + +// workaround for https://github.com/antlr/antlr4/issues/780 +predicate[ParserRuleContext value] + : comparisonOperator right=valueExpression #comparison + | comparisonOperator comparisonQuantifier '(' query ')' #quantifiedComparison + | NOT? BETWEEN lower=valueExpression AND upper=valueExpression #between + | NOT? IN '(' expression (',' expression)* ')' #inList + | NOT? IN '(' query ')' #inSubquery + | NOT? LIKE pattern=valueExpression (ESCAPE escape=valueExpression)? #like + | IS NOT? NULL #nullPredicate + | IS NOT? DISTINCT FROM right=valueExpression #distinctFrom + ; + +valueExpression + : primaryExpression #valueExpressionDefault + | valueExpression AT timeZoneSpecifier #atTimeZone + | operator=(MINUS | PLUS) valueExpression #arithmeticUnary + | left=valueExpression operator=(ASTERISK | SLASH | PERCENT) right=valueExpression #arithmeticBinary + | left=valueExpression operator=(PLUS | MINUS) right=valueExpression #arithmeticBinary + | left=valueExpression CONCAT right=valueExpression #concatenation + ; + +primaryExpression + : NULL #nullLiteral + | interval #intervalLiteral + | identifier string #typeConstructor + | DOUBLE_PRECISION string #typeConstructor + | number #numericLiteral + | booleanValue #booleanLiteral + | string #stringLiteral + | BINARY_LITERAL #binaryLiteral + | '?' #parameter + | POSITION '(' valueExpression IN valueExpression ')' #position + | '(' expression (',' expression)+ ')' #rowConstructor + | ROW '(' expression (',' expression)* ')' #rowConstructor + | qualifiedName '(' ASTERISK ')' filter? over? #functionCall + | qualifiedName '(' (setQuantifier? expression (',' expression)*)? + (ORDER BY sortItem (',' sortItem)*)? ')' filter? (nullTreatment? over)? #functionCall + | identifier '->' expression #lambda + | '(' (identifier (',' identifier)*)? ')' '->' expression #lambda + | '(' query ')' #subqueryExpression + // This is an extension to ANSI SQL, which considers EXISTS to be a + | EXISTS '(' query ')' #exists + | CASE valueExpression whenClause+ (ELSE elseExpression=expression)? END #simpleCase + | CASE whenClause+ (ELSE elseExpression=expression)? END #searchedCase + | CAST '(' expression AS type ')' #cast + | TRY_CAST '(' expression AS type ')' #cast + | ARRAY '[' (expression (',' expression)*)? ']' #arrayConstructor + | value=primaryExpression '[' index=valueExpression ']' #subscript + | identifier #columnReference + | base=primaryExpression '.' fieldName=identifier #dereference + | name=CURRENT_DATE #specialDateTimeFunction + | name=CURRENT_TIME ('(' precision=INTEGER_VALUE ')')? #specialDateTimeFunction + | name=CURRENT_TIMESTAMP ('(' precision=INTEGER_VALUE ')')? #specialDateTimeFunction + | name=LOCALTIME ('(' precision=INTEGER_VALUE ')')? #specialDateTimeFunction + | name=LOCALTIMESTAMP ('(' precision=INTEGER_VALUE ')')? #specialDateTimeFunction + | name=CURRENT_USER #currentUser + | SUBSTRING '(' valueExpression FROM valueExpression (FOR valueExpression)? ')' #substring + | NORMALIZE '(' valueExpression (',' normalForm)? ')' #normalize + | EXTRACT '(' identifier FROM valueExpression ')' #extract + | '(' expression ')' #parenthesizedExpression + | GROUPING '(' (qualifiedName (',' qualifiedName)*)? ')' #groupingOperation + ; + +string + : STRING #basicStringLiteral + | UNICODE_STRING (UESCAPE STRING)? #unicodeStringLiteral + ; + +nullTreatment + : IGNORE NULLS + | RESPECT NULLS + ; + +timeZoneSpecifier + : TIME ZONE interval #timeZoneInterval + | TIME ZONE string #timeZoneString + ; + +comparisonOperator + : EQ | NEQ | LT | LTE | GT | GTE + ; + +comparisonQuantifier + : ALL | SOME | ANY + ; + +booleanValue + : TRUE | FALSE + ; + +interval + : INTERVAL sign=(PLUS | MINUS)? string from=intervalField (TO to=intervalField)? + ; + +intervalField + : YEAR | MONTH | DAY | HOUR | MINUTE | SECOND + ; + +normalForm + : NFD | NFC | NFKD | NFKC + ; + +types + : '(' (type (',' type)*)? ')' + ; + +type + : type ARRAY + | ARRAY '<' type '>' + | MAP '<' type ',' type '>' + | ROW '(' identifier type (',' identifier type)* ')' + | baseType ('(' typeParameter (',' typeParameter)* ')')? + | INTERVAL from=intervalField TO to=intervalField + ; + +typeParameter + : INTEGER_VALUE | type + ; + +baseType + : TIME_WITH_TIME_ZONE + | TIMESTAMP_WITH_TIME_ZONE + | DOUBLE_PRECISION + | qualifiedName + ; + +whenClause + : WHEN condition=expression THEN result=expression + ; + +filter + : FILTER '(' WHERE booleanExpression ')' + ; + +over + : OVER '(' + (PARTITION BY partition+=expression (',' partition+=expression)*)? + (ORDER BY sortItem (',' sortItem)*)? + windowFrame? + ')' + ; + +windowFrame + : frameType=RANGE start=frameBound + | frameType=ROWS start=frameBound + | frameType=RANGE BETWEEN start=frameBound AND end=frameBound + | frameType=ROWS BETWEEN start=frameBound AND end=frameBound + ; + +frameBound + : UNBOUNDED boundType=PRECEDING #unboundedFrame + | UNBOUNDED boundType=FOLLOWING #unboundedFrame + | CURRENT ROW #currentRowBound + | expression boundType=(PRECEDING | FOLLOWING) #boundedFrame // expression should be unsignedLiteral + ; + + +explainOption + : FORMAT value=(TEXT | GRAPHVIZ | JSON) #explainFormat + | TYPE value=(LOGICAL | DISTRIBUTED | VALIDATE | IO) #explainType + ; + +transactionMode + : ISOLATION LEVEL levelOfIsolation #isolationLevel + | READ accessMode=(ONLY | WRITE) #transactionAccessMode + ; + +levelOfIsolation + : READ UNCOMMITTED #readUncommitted + | READ COMMITTED #readCommitted + | REPEATABLE READ #repeatableRead + | SERIALIZABLE #serializable + ; + +callArgument + : expression #positionalArgument + | identifier '=>' expression #namedArgument + ; + +privilege + : SELECT | DELETE | INSERT | identifier + ; + +qualifiedName + : identifier ('.' identifier)* + ; + +grantor + : CURRENT_USER #currentUserGrantor + | CURRENT_ROLE #currentRoleGrantor + | principal #specifiedPrincipal + ; + +principal + : USER identifier #userPrincipal + | ROLE identifier #rolePrincipal + | identifier #unspecifiedPrincipal + ; + +roles + : identifier (',' identifier)* + ; + +identifier + : IDENTIFIER #unquotedIdentifier + | QUOTED_IDENTIFIER #quotedIdentifier + | nonReserved #unquotedIdentifier + | BACKQUOTED_IDENTIFIER #backQuotedIdentifier + | DIGIT_IDENTIFIER #digitIdentifier + ; + +number + : DECIMAL_VALUE #decimalLiteral + | DOUBLE_VALUE #doubleLiteral + | INTEGER_VALUE #integerLiteral + ; + +nonReserved + // IMPORTANT: this rule must only contain tokens. Nested rules are not supported. See SqlParser.exitNonReserved + : ADD | ADMIN | ALL | ANALYZE | ANY | ARRAY | ASC | AT + | BERNOULLI + | CALL | CALLED | CASCADE | CATALOGS | COLUMN | COLUMNS | COMMENT | COMMIT | COMMITTED | CURRENT | CURRENT_ROLE + | DATA | DATE | DAY | DEFINER | DESC | DETERMINISTIC | DISTRIBUTED + | EXCLUDING | EXPLAIN | EXTERNAL + | FILTER | FIRST | FOLLOWING | FORMAT | FUNCTION | FUNCTIONS + | GRANT | GRANTED | GRANTS | GRAPHVIZ + | HOUR + | IF | IGNORE | INCLUDING | INPUT | INTERVAL | INVOKER | IO | ISOLATION + | JSON + | LANGUAGE | LAST | LATERAL | LEVEL | LIMIT | LOGICAL + | MAP | MATERIALIZED | MINUTE | MONTH + | NAME | NFC | NFD | NFKC | NFKD | NO | NONE | NULLIF | NULLS + | OFFSET | ONLY | OPTION | ORDINALITY | OUTPUT | OVER + | PARTITION | PARTITIONS | POSITION | PRECEDING | PRIVILEGES | PROPERTIES + | RANGE | READ | REFRESH | RENAME | REPEATABLE | REPLACE | RESET | RESPECT | RESTRICT | RETURN | RETURNS | REVOKE | ROLE | ROLES | ROLLBACK | ROW | ROWS + | SCHEMA | SCHEMAS | SECOND | SECURITY | SERIALIZABLE | SESSION | SET | SETS | SQL + | SHOW | SOME | START | STATS | SUBSTRING | SYSTEM + | TABLES | TABLESAMPLE | TEMPORARY | TEXT | TIME | TIMESTAMP | TO | TRANSACTION | TRY_CAST | TYPE + | UNBOUNDED | UNCOMMITTED | USE | USER + | VALIDATE | VERBOSE | VIEW + | WORK | WRITE + | YEAR + | ZONE + ; + +ADD: 'ADD'; +ADMIN: 'ADMIN'; +ALL: 'ALL'; +ALTER: 'ALTER'; +ANALYZE: 'ANALYZE'; +AND: 'AND'; +ANY: 'ANY'; +ARRAY: 'ARRAY'; +AS: 'AS'; +ASC: 'ASC'; +AT: 'AT'; +BERNOULLI: 'BERNOULLI'; +BETWEEN: 'BETWEEN'; +BY: 'BY'; +CALL: 'CALL'; +CALLED: 'CALLED'; +CASCADE: 'CASCADE'; +CASE: 'CASE'; +CAST: 'CAST'; +CATALOGS: 'CATALOGS'; +COLUMN: 'COLUMN'; +COLUMNS: 'COLUMNS'; +COMMENT: 'COMMENT'; +COMMIT: 'COMMIT'; +COMMITTED: 'COMMITTED'; +CONSTRAINT: 'CONSTRAINT'; +CREATE: 'CREATE'; +CROSS: 'CROSS'; +CUBE: 'CUBE'; +CURRENT: 'CURRENT'; +CURRENT_DATE: 'CURRENT_DATE'; +CURRENT_ROLE: 'CURRENT_ROLE'; +CURRENT_TIME: 'CURRENT_TIME'; +CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'; +CURRENT_USER: 'CURRENT_USER'; +DATA: 'DATA'; +DATE: 'DATE'; +DAY: 'DAY'; +DEALLOCATE: 'DEALLOCATE'; +DEFINER: 'DEFINER'; +DELETE: 'DELETE'; +DESC: 'DESC'; +DESCRIBE: 'DESCRIBE'; +DETERMINISTIC: 'DETERMINISTIC'; +DISTINCT: 'DISTINCT'; +DISTRIBUTED: 'DISTRIBUTED'; +DROP: 'DROP'; +ELSE: 'ELSE'; +END: 'END'; +ESCAPE: 'ESCAPE'; +EXCEPT: 'EXCEPT'; +EXCLUDING: 'EXCLUDING'; +EXECUTE: 'EXECUTE'; +EXISTS: 'EXISTS'; +EXPLAIN: 'EXPLAIN'; +EXTRACT: 'EXTRACT'; +EXTERNAL: 'EXTERNAL'; +FALSE: 'FALSE'; +FILTER: 'FILTER'; +FIRST: 'FIRST'; +FOLLOWING: 'FOLLOWING'; +FOR: 'FOR'; +FORMAT: 'FORMAT'; +FROM: 'FROM'; +FULL: 'FULL'; +FUNCTION: 'FUNCTION'; +FUNCTIONS: 'FUNCTIONS'; +GRANT: 'GRANT'; +GRANTED: 'GRANTED'; +GRANTS: 'GRANTS'; +GRAPHVIZ: 'GRAPHVIZ'; +GROUP: 'GROUP'; +GROUPING: 'GROUPING'; +HAVING: 'HAVING'; +HOUR: 'HOUR'; +IF: 'IF'; +IGNORE: 'IGNORE'; +IN: 'IN'; +INCLUDING: 'INCLUDING'; +INNER: 'INNER'; +INPUT: 'INPUT'; +INSERT: 'INSERT'; +INTERSECT: 'INTERSECT'; +INTERVAL: 'INTERVAL'; +INTO: 'INTO'; +INVOKER: 'INVOKER'; +IO: 'IO'; +IS: 'IS'; +ISOLATION: 'ISOLATION'; +JSON: 'JSON'; +JOIN: 'JOIN'; +LANGUAGE: 'LANGUAGE'; +LAST: 'LAST'; +LATERAL: 'LATERAL'; +LEFT: 'LEFT'; +LEVEL: 'LEVEL'; +LIKE: 'LIKE'; +LIMIT: 'LIMIT'; +LOCALTIME: 'LOCALTIME'; +LOCALTIMESTAMP: 'LOCALTIMESTAMP'; +LOGICAL: 'LOGICAL'; +MAP: 'MAP'; +MATERIALIZED: 'MATERIALIZED'; +MINUTE: 'MINUTE'; +MONTH: 'MONTH'; +NAME: 'NAME'; +NATURAL: 'NATURAL'; +NFC : 'NFC'; +NFD : 'NFD'; +NFKC : 'NFKC'; +NFKD : 'NFKD'; +NO: 'NO'; +NONE: 'NONE'; +NORMALIZE: 'NORMALIZE'; +NOT: 'NOT'; +NULL: 'NULL'; +NULLIF: 'NULLIF'; +NULLS: 'NULLS'; +OFFSET: 'OFFSET'; +ON: 'ON'; +ONLY: 'ONLY'; +OPTION: 'OPTION'; +OR: 'OR'; +ORDER: 'ORDER'; +ORDINALITY: 'ORDINALITY'; +OUTER: 'OUTER'; +OUTPUT: 'OUTPUT'; +OVER: 'OVER'; +PARTITION: 'PARTITION'; +PARTITIONS: 'PARTITIONS'; +POSITION: 'POSITION'; +PRECEDING: 'PRECEDING'; +PREPARE: 'PREPARE'; +PRIVILEGES: 'PRIVILEGES'; +PROPERTIES: 'PROPERTIES'; +RANGE: 'RANGE'; +READ: 'READ'; +RECURSIVE: 'RECURSIVE'; +REFRESH: 'REFRESH'; +RENAME: 'RENAME'; +REPEATABLE: 'REPEATABLE'; +REPLACE: 'REPLACE'; +RESET: 'RESET'; +RESPECT: 'RESPECT'; +RESTRICT: 'RESTRICT'; +RETURN: 'RETURN'; +RETURNS: 'RETURNS'; +REVOKE: 'REVOKE'; +RIGHT: 'RIGHT'; +ROLE: 'ROLE'; +ROLES: 'ROLES'; +ROLLBACK: 'ROLLBACK'; +ROLLUP: 'ROLLUP'; +ROW: 'ROW'; +ROWS: 'ROWS'; +SCHEMA: 'SCHEMA'; +SCHEMAS: 'SCHEMAS'; +SECOND: 'SECOND'; +SECURITY: 'SECURITY'; +SELECT: 'SELECT'; +SERIALIZABLE: 'SERIALIZABLE'; +SESSION: 'SESSION'; +SET: 'SET'; +SETS: 'SETS'; +SHOW: 'SHOW'; +SOME: 'SOME'; +SQL: 'SQL'; +START: 'START'; +STATS: 'STATS'; +SUBSTRING: 'SUBSTRING'; +SYSTEM: 'SYSTEM'; +TABLE: 'TABLE'; +TABLES: 'TABLES'; +TABLESAMPLE: 'TABLESAMPLE'; +TEMPORARY: 'TEMPORARY'; +TEXT: 'TEXT'; +THEN: 'THEN'; +TIME: 'TIME'; +TIMESTAMP: 'TIMESTAMP'; +TO: 'TO'; +TRANSACTION: 'TRANSACTION'; +TRUE: 'TRUE'; +TRY_CAST: 'TRY_CAST'; +TYPE: 'TYPE'; +UESCAPE: 'UESCAPE'; +UNBOUNDED: 'UNBOUNDED'; +UNCOMMITTED: 'UNCOMMITTED'; +UNION: 'UNION'; +UNNEST: 'UNNEST'; +USE: 'USE'; +USER: 'USER'; +USING: 'USING'; +VALIDATE: 'VALIDATE'; +VALUES: 'VALUES'; +VERBOSE: 'VERBOSE'; +VIEW: 'VIEW'; +WHEN: 'WHEN'; +WHERE: 'WHERE'; +WITH: 'WITH'; +WORK: 'WORK'; +WRITE: 'WRITE'; +YEAR: 'YEAR'; +ZONE: 'ZONE'; + +EQ : '='; +NEQ : '<>' | '!='; +LT : '<'; +LTE : '<='; +GT : '>'; +GTE : '>='; + +PLUS: '+'; +MINUS: '-'; +ASTERISK: '*'; +SLASH: '/'; +PERCENT: '%'; +CONCAT: '||'; + +STRING + : '\'' ( ~'\'' | '\'\'' )* '\'' + ; + +UNICODE_STRING + : 'U&\'' ( ~'\'' | '\'\'' )* '\'' + ; + +// Note: we allow any character inside the binary literal and validate +// its a correct literal when the AST is being constructed. This +// allows us to provide more meaningful error messages to the user +BINARY_LITERAL + : 'X\'' (~'\'')* '\'' + ; + +INTEGER_VALUE + : DIGIT+ + ; + +DECIMAL_VALUE + : DIGIT+ '.' DIGIT* + | '.' DIGIT+ + ; + +DOUBLE_VALUE + : DIGIT+ ('.' DIGIT*)? EXPONENT + | '.' DIGIT+ EXPONENT + ; + +IDENTIFIER + : (LETTER | '_') (LETTER | DIGIT | '_' | '@' | ':')* + ; + +DIGIT_IDENTIFIER + : DIGIT (LETTER | DIGIT | '_' | '@' | ':')+ + ; + +QUOTED_IDENTIFIER + : '"' ( ~'"' | '""' )* '"' + ; + +BACKQUOTED_IDENTIFIER + : '`' ( ~'`' | '``' )* '`' + ; + +TIME_WITH_TIME_ZONE + : 'TIME' WS 'WITH' WS 'TIME' WS 'ZONE' + ; + +TIMESTAMP_WITH_TIME_ZONE + : 'TIMESTAMP' WS 'WITH' WS 'TIME' WS 'ZONE' + ; + +DOUBLE_PRECISION + : 'DOUBLE' WS 'PRECISION' + ; + +fragment EXPONENT + : 'E' [+-]? DIGIT+ + ; + +fragment DIGIT + : [0-9] + ; + +fragment LETTER + : [A-Z] + ; + +SIMPLE_COMMENT + : '--' ~[\r\n]* '\r'? '\n'? -> channel(HIDDEN) + ; + +BRACKETED_COMMENT + : '/*' .*? '*/' -> channel(HIDDEN) + ; + +WS + : [ \r\n\t]+ -> channel(HIDDEN) + ; + +// Catch-all for anything we can't recognize. +// We use this to be able to ignore and recover all the text +// when splitting statements with DelimiterLexer +UNRECOGNIZED + : . + ; diff --git a/src/main/java/PrestoSql.tokens b/src/main/java/PrestoSql.tokens new file mode 100644 index 0000000..d83d3e4 --- /dev/null +++ b/src/main/java/PrestoSql.tokens @@ -0,0 +1,465 @@ +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 +ADD=10 +ADMIN=11 +ALL=12 +ALTER=13 +ANALYZE=14 +AND=15 +ANY=16 +ARRAY=17 +AS=18 +ASC=19 +AT=20 +BERNOULLI=21 +BETWEEN=22 +BY=23 +CALL=24 +CALLED=25 +CASCADE=26 +CASE=27 +CAST=28 +CATALOGS=29 +COLUMN=30 +COLUMNS=31 +COMMENT=32 +COMMIT=33 +COMMITTED=34 +CONSTRAINT=35 +CREATE=36 +CROSS=37 +CUBE=38 +CURRENT=39 +CURRENT_DATE=40 +CURRENT_ROLE=41 +CURRENT_TIME=42 +CURRENT_TIMESTAMP=43 +CURRENT_USER=44 +DATA=45 +DATE=46 +DAY=47 +DEALLOCATE=48 +DEFINER=49 +DELETE=50 +DESC=51 +DESCRIBE=52 +DETERMINISTIC=53 +DISTINCT=54 +DISTRIBUTED=55 +DROP=56 +ELSE=57 +END=58 +ESCAPE=59 +EXCEPT=60 +EXCLUDING=61 +EXECUTE=62 +EXISTS=63 +EXPLAIN=64 +EXTRACT=65 +EXTERNAL=66 +FALSE=67 +FILTER=68 +FIRST=69 +FOLLOWING=70 +FOR=71 +FORMAT=72 +FROM=73 +FULL=74 +FUNCTION=75 +FUNCTIONS=76 +GRANT=77 +GRANTED=78 +GRANTS=79 +GRAPHVIZ=80 +GROUP=81 +GROUPING=82 +HAVING=83 +HOUR=84 +IF=85 +IGNORE=86 +IN=87 +INCLUDING=88 +INNER=89 +INPUT=90 +INSERT=91 +INTERSECT=92 +INTERVAL=93 +INTO=94 +INVOKER=95 +IO=96 +IS=97 +ISOLATION=98 +JSON=99 +JOIN=100 +LANGUAGE=101 +LAST=102 +LATERAL=103 +LEFT=104 +LEVEL=105 +LIKE=106 +LIMIT=107 +LOCALTIME=108 +LOCALTIMESTAMP=109 +LOGICAL=110 +MAP=111 +MATERIALIZED=112 +MINUTE=113 +MONTH=114 +NAME=115 +NATURAL=116 +NFC=117 +NFD=118 +NFKC=119 +NFKD=120 +NO=121 +NONE=122 +NORMALIZE=123 +NOT=124 +NULL=125 +NULLIF=126 +NULLS=127 +OFFSET=128 +ON=129 +ONLY=130 +OPTION=131 +OR=132 +ORDER=133 +ORDINALITY=134 +OUTER=135 +OUTPUT=136 +OVER=137 +PARTITION=138 +PARTITIONS=139 +POSITION=140 +PRECEDING=141 +PREPARE=142 +PRIVILEGES=143 +PROPERTIES=144 +RANGE=145 +READ=146 +RECURSIVE=147 +REFRESH=148 +RENAME=149 +REPEATABLE=150 +REPLACE=151 +RESET=152 +RESPECT=153 +RESTRICT=154 +RETURN=155 +RETURNS=156 +REVOKE=157 +RIGHT=158 +ROLE=159 +ROLES=160 +ROLLBACK=161 +ROLLUP=162 +ROW=163 +ROWS=164 +SCHEMA=165 +SCHEMAS=166 +SECOND=167 +SECURITY=168 +SELECT=169 +SERIALIZABLE=170 +SESSION=171 +SET=172 +SETS=173 +SHOW=174 +SOME=175 +SQL=176 +START=177 +STATS=178 +SUBSTRING=179 +SYSTEM=180 +TABLE=181 +TABLES=182 +TABLESAMPLE=183 +TEMPORARY=184 +TEXT=185 +THEN=186 +TIME=187 +TIMESTAMP=188 +TO=189 +TRANSACTION=190 +TRUE=191 +TRY_CAST=192 +TYPE=193 +UESCAPE=194 +UNBOUNDED=195 +UNCOMMITTED=196 +UNION=197 +UNNEST=198 +USE=199 +USER=200 +USING=201 +VALIDATE=202 +VALUES=203 +VERBOSE=204 +VIEW=205 +WHEN=206 +WHERE=207 +WITH=208 +WORK=209 +WRITE=210 +YEAR=211 +ZONE=212 +EQ=213 +NEQ=214 +LT=215 +LTE=216 +GT=217 +GTE=218 +PLUS=219 +MINUS=220 +ASTERISK=221 +SLASH=222 +PERCENT=223 +CONCAT=224 +STRING=225 +UNICODE_STRING=226 +BINARY_LITERAL=227 +INTEGER_VALUE=228 +DECIMAL_VALUE=229 +DOUBLE_VALUE=230 +IDENTIFIER=231 +DIGIT_IDENTIFIER=232 +QUOTED_IDENTIFIER=233 +BACKQUOTED_IDENTIFIER=234 +TIME_WITH_TIME_ZONE=235 +TIMESTAMP_WITH_TIME_ZONE=236 +DOUBLE_PRECISION=237 +SIMPLE_COMMENT=238 +BRACKETED_COMMENT=239 +WS=240 +UNRECOGNIZED=241 +DELIMITER=242 +'.'=1 +'('=2 +')'=3 +','=4 +'?'=5 +'->'=6 +'['=7 +']'=8 +'=>'=9 +'ADD'=10 +'ADMIN'=11 +'ALL'=12 +'ALTER'=13 +'ANALYZE'=14 +'AND'=15 +'ANY'=16 +'ARRAY'=17 +'AS'=18 +'ASC'=19 +'AT'=20 +'BERNOULLI'=21 +'BETWEEN'=22 +'BY'=23 +'CALL'=24 +'CALLED'=25 +'CASCADE'=26 +'CASE'=27 +'CAST'=28 +'CATALOGS'=29 +'COLUMN'=30 +'COLUMNS'=31 +'COMMENT'=32 +'COMMIT'=33 +'COMMITTED'=34 +'CONSTRAINT'=35 +'CREATE'=36 +'CROSS'=37 +'CUBE'=38 +'CURRENT'=39 +'CURRENT_DATE'=40 +'CURRENT_ROLE'=41 +'CURRENT_TIME'=42 +'CURRENT_TIMESTAMP'=43 +'CURRENT_USER'=44 +'DATA'=45 +'DATE'=46 +'DAY'=47 +'DEALLOCATE'=48 +'DEFINER'=49 +'DELETE'=50 +'DESC'=51 +'DESCRIBE'=52 +'DETERMINISTIC'=53 +'DISTINCT'=54 +'DISTRIBUTED'=55 +'DROP'=56 +'ELSE'=57 +'END'=58 +'ESCAPE'=59 +'EXCEPT'=60 +'EXCLUDING'=61 +'EXECUTE'=62 +'EXISTS'=63 +'EXPLAIN'=64 +'EXTRACT'=65 +'EXTERNAL'=66 +'FALSE'=67 +'FILTER'=68 +'FIRST'=69 +'FOLLOWING'=70 +'FOR'=71 +'FORMAT'=72 +'FROM'=73 +'FULL'=74 +'FUNCTION'=75 +'FUNCTIONS'=76 +'GRANT'=77 +'GRANTED'=78 +'GRANTS'=79 +'GRAPHVIZ'=80 +'GROUP'=81 +'GROUPING'=82 +'HAVING'=83 +'HOUR'=84 +'IF'=85 +'IGNORE'=86 +'IN'=87 +'INCLUDING'=88 +'INNER'=89 +'INPUT'=90 +'INSERT'=91 +'INTERSECT'=92 +'INTERVAL'=93 +'INTO'=94 +'INVOKER'=95 +'IO'=96 +'IS'=97 +'ISOLATION'=98 +'JSON'=99 +'JOIN'=100 +'LANGUAGE'=101 +'LAST'=102 +'LATERAL'=103 +'LEFT'=104 +'LEVEL'=105 +'LIKE'=106 +'LIMIT'=107 +'LOCALTIME'=108 +'LOCALTIMESTAMP'=109 +'LOGICAL'=110 +'MAP'=111 +'MATERIALIZED'=112 +'MINUTE'=113 +'MONTH'=114 +'NAME'=115 +'NATURAL'=116 +'NFC'=117 +'NFD'=118 +'NFKC'=119 +'NFKD'=120 +'NO'=121 +'NONE'=122 +'NORMALIZE'=123 +'NOT'=124 +'NULL'=125 +'NULLIF'=126 +'NULLS'=127 +'OFFSET'=128 +'ON'=129 +'ONLY'=130 +'OPTION'=131 +'OR'=132 +'ORDER'=133 +'ORDINALITY'=134 +'OUTER'=135 +'OUTPUT'=136 +'OVER'=137 +'PARTITION'=138 +'PARTITIONS'=139 +'POSITION'=140 +'PRECEDING'=141 +'PREPARE'=142 +'PRIVILEGES'=143 +'PROPERTIES'=144 +'RANGE'=145 +'READ'=146 +'RECURSIVE'=147 +'REFRESH'=148 +'RENAME'=149 +'REPEATABLE'=150 +'REPLACE'=151 +'RESET'=152 +'RESPECT'=153 +'RESTRICT'=154 +'RETURN'=155 +'RETURNS'=156 +'REVOKE'=157 +'RIGHT'=158 +'ROLE'=159 +'ROLES'=160 +'ROLLBACK'=161 +'ROLLUP'=162 +'ROW'=163 +'ROWS'=164 +'SCHEMA'=165 +'SCHEMAS'=166 +'SECOND'=167 +'SECURITY'=168 +'SELECT'=169 +'SERIALIZABLE'=170 +'SESSION'=171 +'SET'=172 +'SETS'=173 +'SHOW'=174 +'SOME'=175 +'SQL'=176 +'START'=177 +'STATS'=178 +'SUBSTRING'=179 +'SYSTEM'=180 +'TABLE'=181 +'TABLES'=182 +'TABLESAMPLE'=183 +'TEMPORARY'=184 +'TEXT'=185 +'THEN'=186 +'TIME'=187 +'TIMESTAMP'=188 +'TO'=189 +'TRANSACTION'=190 +'TRUE'=191 +'TRY_CAST'=192 +'TYPE'=193 +'UESCAPE'=194 +'UNBOUNDED'=195 +'UNCOMMITTED'=196 +'UNION'=197 +'UNNEST'=198 +'USE'=199 +'USER'=200 +'USING'=201 +'VALIDATE'=202 +'VALUES'=203 +'VERBOSE'=204 +'VIEW'=205 +'WHEN'=206 +'WHERE'=207 +'WITH'=208 +'WORK'=209 +'WRITE'=210 +'YEAR'=211 +'ZONE'=212 +'='=213 +'<'=215 +'<='=216 +'>'=217 +'>='=218 +'+'=219 +'-'=220 +'*'=221 +'/'=222 +'%'=223 +'||'=224 diff --git a/src/main/java/PrestoSqlLexer.tokens b/src/main/java/PrestoSqlLexer.tokens new file mode 100644 index 0000000..afe2d9c --- /dev/null +++ b/src/main/java/PrestoSqlLexer.tokens @@ -0,0 +1,464 @@ +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 +ADD=10 +ADMIN=11 +ALL=12 +ALTER=13 +ANALYZE=14 +AND=15 +ANY=16 +ARRAY=17 +AS=18 +ASC=19 +AT=20 +BERNOULLI=21 +BETWEEN=22 +BY=23 +CALL=24 +CALLED=25 +CASCADE=26 +CASE=27 +CAST=28 +CATALOGS=29 +COLUMN=30 +COLUMNS=31 +COMMENT=32 +COMMIT=33 +COMMITTED=34 +CONSTRAINT=35 +CREATE=36 +CROSS=37 +CUBE=38 +CURRENT=39 +CURRENT_DATE=40 +CURRENT_ROLE=41 +CURRENT_TIME=42 +CURRENT_TIMESTAMP=43 +CURRENT_USER=44 +DATA=45 +DATE=46 +DAY=47 +DEALLOCATE=48 +DEFINER=49 +DELETE=50 +DESC=51 +DESCRIBE=52 +DETERMINISTIC=53 +DISTINCT=54 +DISTRIBUTED=55 +DROP=56 +ELSE=57 +END=58 +ESCAPE=59 +EXCEPT=60 +EXCLUDING=61 +EXECUTE=62 +EXISTS=63 +EXPLAIN=64 +EXTRACT=65 +EXTERNAL=66 +FALSE=67 +FILTER=68 +FIRST=69 +FOLLOWING=70 +FOR=71 +FORMAT=72 +FROM=73 +FULL=74 +FUNCTION=75 +FUNCTIONS=76 +GRANT=77 +GRANTED=78 +GRANTS=79 +GRAPHVIZ=80 +GROUP=81 +GROUPING=82 +HAVING=83 +HOUR=84 +IF=85 +IGNORE=86 +IN=87 +INCLUDING=88 +INNER=89 +INPUT=90 +INSERT=91 +INTERSECT=92 +INTERVAL=93 +INTO=94 +INVOKER=95 +IO=96 +IS=97 +ISOLATION=98 +JSON=99 +JOIN=100 +LANGUAGE=101 +LAST=102 +LATERAL=103 +LEFT=104 +LEVEL=105 +LIKE=106 +LIMIT=107 +LOCALTIME=108 +LOCALTIMESTAMP=109 +LOGICAL=110 +MAP=111 +MATERIALIZED=112 +MINUTE=113 +MONTH=114 +NAME=115 +NATURAL=116 +NFC=117 +NFD=118 +NFKC=119 +NFKD=120 +NO=121 +NONE=122 +NORMALIZE=123 +NOT=124 +NULL=125 +NULLIF=126 +NULLS=127 +OFFSET=128 +ON=129 +ONLY=130 +OPTION=131 +OR=132 +ORDER=133 +ORDINALITY=134 +OUTER=135 +OUTPUT=136 +OVER=137 +PARTITION=138 +PARTITIONS=139 +POSITION=140 +PRECEDING=141 +PREPARE=142 +PRIVILEGES=143 +PROPERTIES=144 +RANGE=145 +READ=146 +RECURSIVE=147 +REFRESH=148 +RENAME=149 +REPEATABLE=150 +REPLACE=151 +RESET=152 +RESPECT=153 +RESTRICT=154 +RETURN=155 +RETURNS=156 +REVOKE=157 +RIGHT=158 +ROLE=159 +ROLES=160 +ROLLBACK=161 +ROLLUP=162 +ROW=163 +ROWS=164 +SCHEMA=165 +SCHEMAS=166 +SECOND=167 +SECURITY=168 +SELECT=169 +SERIALIZABLE=170 +SESSION=171 +SET=172 +SETS=173 +SHOW=174 +SOME=175 +SQL=176 +START=177 +STATS=178 +SUBSTRING=179 +SYSTEM=180 +TABLE=181 +TABLES=182 +TABLESAMPLE=183 +TEMPORARY=184 +TEXT=185 +THEN=186 +TIME=187 +TIMESTAMP=188 +TO=189 +TRANSACTION=190 +TRUE=191 +TRY_CAST=192 +TYPE=193 +UESCAPE=194 +UNBOUNDED=195 +UNCOMMITTED=196 +UNION=197 +UNNEST=198 +USE=199 +USER=200 +USING=201 +VALIDATE=202 +VALUES=203 +VERBOSE=204 +VIEW=205 +WHEN=206 +WHERE=207 +WITH=208 +WORK=209 +WRITE=210 +YEAR=211 +ZONE=212 +EQ=213 +NEQ=214 +LT=215 +LTE=216 +GT=217 +GTE=218 +PLUS=219 +MINUS=220 +ASTERISK=221 +SLASH=222 +PERCENT=223 +CONCAT=224 +STRING=225 +UNICODE_STRING=226 +BINARY_LITERAL=227 +INTEGER_VALUE=228 +DECIMAL_VALUE=229 +DOUBLE_VALUE=230 +IDENTIFIER=231 +DIGIT_IDENTIFIER=232 +QUOTED_IDENTIFIER=233 +BACKQUOTED_IDENTIFIER=234 +TIME_WITH_TIME_ZONE=235 +TIMESTAMP_WITH_TIME_ZONE=236 +DOUBLE_PRECISION=237 +SIMPLE_COMMENT=238 +BRACKETED_COMMENT=239 +WS=240 +UNRECOGNIZED=241 +'.'=1 +'('=2 +')'=3 +','=4 +'?'=5 +'->'=6 +'['=7 +']'=8 +'=>'=9 +'ADD'=10 +'ADMIN'=11 +'ALL'=12 +'ALTER'=13 +'ANALYZE'=14 +'AND'=15 +'ANY'=16 +'ARRAY'=17 +'AS'=18 +'ASC'=19 +'AT'=20 +'BERNOULLI'=21 +'BETWEEN'=22 +'BY'=23 +'CALL'=24 +'CALLED'=25 +'CASCADE'=26 +'CASE'=27 +'CAST'=28 +'CATALOGS'=29 +'COLUMN'=30 +'COLUMNS'=31 +'COMMENT'=32 +'COMMIT'=33 +'COMMITTED'=34 +'CONSTRAINT'=35 +'CREATE'=36 +'CROSS'=37 +'CUBE'=38 +'CURRENT'=39 +'CURRENT_DATE'=40 +'CURRENT_ROLE'=41 +'CURRENT_TIME'=42 +'CURRENT_TIMESTAMP'=43 +'CURRENT_USER'=44 +'DATA'=45 +'DATE'=46 +'DAY'=47 +'DEALLOCATE'=48 +'DEFINER'=49 +'DELETE'=50 +'DESC'=51 +'DESCRIBE'=52 +'DETERMINISTIC'=53 +'DISTINCT'=54 +'DISTRIBUTED'=55 +'DROP'=56 +'ELSE'=57 +'END'=58 +'ESCAPE'=59 +'EXCEPT'=60 +'EXCLUDING'=61 +'EXECUTE'=62 +'EXISTS'=63 +'EXPLAIN'=64 +'EXTRACT'=65 +'EXTERNAL'=66 +'FALSE'=67 +'FILTER'=68 +'FIRST'=69 +'FOLLOWING'=70 +'FOR'=71 +'FORMAT'=72 +'FROM'=73 +'FULL'=74 +'FUNCTION'=75 +'FUNCTIONS'=76 +'GRANT'=77 +'GRANTED'=78 +'GRANTS'=79 +'GRAPHVIZ'=80 +'GROUP'=81 +'GROUPING'=82 +'HAVING'=83 +'HOUR'=84 +'IF'=85 +'IGNORE'=86 +'IN'=87 +'INCLUDING'=88 +'INNER'=89 +'INPUT'=90 +'INSERT'=91 +'INTERSECT'=92 +'INTERVAL'=93 +'INTO'=94 +'INVOKER'=95 +'IO'=96 +'IS'=97 +'ISOLATION'=98 +'JSON'=99 +'JOIN'=100 +'LANGUAGE'=101 +'LAST'=102 +'LATERAL'=103 +'LEFT'=104 +'LEVEL'=105 +'LIKE'=106 +'LIMIT'=107 +'LOCALTIME'=108 +'LOCALTIMESTAMP'=109 +'LOGICAL'=110 +'MAP'=111 +'MATERIALIZED'=112 +'MINUTE'=113 +'MONTH'=114 +'NAME'=115 +'NATURAL'=116 +'NFC'=117 +'NFD'=118 +'NFKC'=119 +'NFKD'=120 +'NO'=121 +'NONE'=122 +'NORMALIZE'=123 +'NOT'=124 +'NULL'=125 +'NULLIF'=126 +'NULLS'=127 +'OFFSET'=128 +'ON'=129 +'ONLY'=130 +'OPTION'=131 +'OR'=132 +'ORDER'=133 +'ORDINALITY'=134 +'OUTER'=135 +'OUTPUT'=136 +'OVER'=137 +'PARTITION'=138 +'PARTITIONS'=139 +'POSITION'=140 +'PRECEDING'=141 +'PREPARE'=142 +'PRIVILEGES'=143 +'PROPERTIES'=144 +'RANGE'=145 +'READ'=146 +'RECURSIVE'=147 +'REFRESH'=148 +'RENAME'=149 +'REPEATABLE'=150 +'REPLACE'=151 +'RESET'=152 +'RESPECT'=153 +'RESTRICT'=154 +'RETURN'=155 +'RETURNS'=156 +'REVOKE'=157 +'RIGHT'=158 +'ROLE'=159 +'ROLES'=160 +'ROLLBACK'=161 +'ROLLUP'=162 +'ROW'=163 +'ROWS'=164 +'SCHEMA'=165 +'SCHEMAS'=166 +'SECOND'=167 +'SECURITY'=168 +'SELECT'=169 +'SERIALIZABLE'=170 +'SESSION'=171 +'SET'=172 +'SETS'=173 +'SHOW'=174 +'SOME'=175 +'SQL'=176 +'START'=177 +'STATS'=178 +'SUBSTRING'=179 +'SYSTEM'=180 +'TABLE'=181 +'TABLES'=182 +'TABLESAMPLE'=183 +'TEMPORARY'=184 +'TEXT'=185 +'THEN'=186 +'TIME'=187 +'TIMESTAMP'=188 +'TO'=189 +'TRANSACTION'=190 +'TRUE'=191 +'TRY_CAST'=192 +'TYPE'=193 +'UESCAPE'=194 +'UNBOUNDED'=195 +'UNCOMMITTED'=196 +'UNION'=197 +'UNNEST'=198 +'USE'=199 +'USER'=200 +'USING'=201 +'VALIDATE'=202 +'VALUES'=203 +'VERBOSE'=204 +'VIEW'=205 +'WHEN'=206 +'WHERE'=207 +'WITH'=208 +'WORK'=209 +'WRITE'=210 +'YEAR'=211 +'ZONE'=212 +'='=213 +'<'=215 +'<='=216 +'>'=217 +'>='=218 +'+'=219 +'-'=220 +'*'=221 +'/'=222 +'%'=223 +'||'=224 diff --git a/src/main/java/com/github/bigdata/sql/antlr4/presto/PrestoSqlBaseListener.java b/src/main/java/com/github/bigdata/sql/antlr4/presto/PrestoSqlBaseListener.java new file mode 100644 index 0000000..c20e106 --- /dev/null +++ b/src/main/java/com/github/bigdata/sql/antlr4/presto/PrestoSqlBaseListener.java @@ -0,0 +1,2511 @@ +// Generated from com/github/bigdata/sql/antlr4/presto/PrestoSql.g4 by ANTLR 4.7 +package com.github.bigdata.sql.antlr4.presto; + +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 PrestoSqlListener}, + * which can be extended to create a listener which only needs to handle a subset + * of the available methods. + */ +public class PrestoSqlBaseListener implements PrestoSqlListener { + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSingleStatement(PrestoSqlParser.SingleStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSingleStatement(PrestoSqlParser.SingleStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterStandaloneExpression(PrestoSqlParser.StandaloneExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitStandaloneExpression(PrestoSqlParser.StandaloneExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterStandaloneRoutineBody(PrestoSqlParser.StandaloneRoutineBodyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitStandaloneRoutineBody(PrestoSqlParser.StandaloneRoutineBodyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterStatementDefault(PrestoSqlParser.StatementDefaultContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitStatementDefault(PrestoSqlParser.StatementDefaultContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterUse(PrestoSqlParser.UseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitUse(PrestoSqlParser.UseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCreateSchema(PrestoSqlParser.CreateSchemaContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCreateSchema(PrestoSqlParser.CreateSchemaContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDropSchema(PrestoSqlParser.DropSchemaContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDropSchema(PrestoSqlParser.DropSchemaContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRenameSchema(PrestoSqlParser.RenameSchemaContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRenameSchema(PrestoSqlParser.RenameSchemaContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCreateTableAsSelect(PrestoSqlParser.CreateTableAsSelectContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCreateTableAsSelect(PrestoSqlParser.CreateTableAsSelectContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCreateTable(PrestoSqlParser.CreateTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCreateTable(PrestoSqlParser.CreateTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDropTable(PrestoSqlParser.DropTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDropTable(PrestoSqlParser.DropTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterInsertInto(PrestoSqlParser.InsertIntoContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitInsertInto(PrestoSqlParser.InsertIntoContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDelete(PrestoSqlParser.DeleteContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDelete(PrestoSqlParser.DeleteContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRenameTable(PrestoSqlParser.RenameTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRenameTable(PrestoSqlParser.RenameTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRenameColumn(PrestoSqlParser.RenameColumnContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRenameColumn(PrestoSqlParser.RenameColumnContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDropColumn(PrestoSqlParser.DropColumnContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDropColumn(PrestoSqlParser.DropColumnContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAddColumn(PrestoSqlParser.AddColumnContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAddColumn(PrestoSqlParser.AddColumnContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAnalyze(PrestoSqlParser.AnalyzeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAnalyze(PrestoSqlParser.AnalyzeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCreateType(PrestoSqlParser.CreateTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCreateType(PrestoSqlParser.CreateTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCreateView(PrestoSqlParser.CreateViewContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCreateView(PrestoSqlParser.CreateViewContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDropView(PrestoSqlParser.DropViewContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDropView(PrestoSqlParser.DropViewContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCreateMaterializedView(PrestoSqlParser.CreateMaterializedViewContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCreateMaterializedView(PrestoSqlParser.CreateMaterializedViewContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDropMaterializedView(PrestoSqlParser.DropMaterializedViewContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDropMaterializedView(PrestoSqlParser.DropMaterializedViewContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRefreshMaterializedView(PrestoSqlParser.RefreshMaterializedViewContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRefreshMaterializedView(PrestoSqlParser.RefreshMaterializedViewContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCreateFunction(PrestoSqlParser.CreateFunctionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCreateFunction(PrestoSqlParser.CreateFunctionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAlterFunction(PrestoSqlParser.AlterFunctionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAlterFunction(PrestoSqlParser.AlterFunctionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDropFunction(PrestoSqlParser.DropFunctionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDropFunction(PrestoSqlParser.DropFunctionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCall(PrestoSqlParser.CallContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCall(PrestoSqlParser.CallContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCreateRole(PrestoSqlParser.CreateRoleContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCreateRole(PrestoSqlParser.CreateRoleContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDropRole(PrestoSqlParser.DropRoleContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDropRole(PrestoSqlParser.DropRoleContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterGrantRoles(PrestoSqlParser.GrantRolesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitGrantRoles(PrestoSqlParser.GrantRolesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRevokeRoles(PrestoSqlParser.RevokeRolesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRevokeRoles(PrestoSqlParser.RevokeRolesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSetRole(PrestoSqlParser.SetRoleContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSetRole(PrestoSqlParser.SetRoleContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterGrant(PrestoSqlParser.GrantContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitGrant(PrestoSqlParser.GrantContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRevoke(PrestoSqlParser.RevokeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRevoke(PrestoSqlParser.RevokeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowGrants(PrestoSqlParser.ShowGrantsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowGrants(PrestoSqlParser.ShowGrantsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterExplain(PrestoSqlParser.ExplainContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitExplain(PrestoSqlParser.ExplainContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowCreateTable(PrestoSqlParser.ShowCreateTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowCreateTable(PrestoSqlParser.ShowCreateTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowCreateView(PrestoSqlParser.ShowCreateViewContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowCreateView(PrestoSqlParser.ShowCreateViewContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowCreateMaterializedView(PrestoSqlParser.ShowCreateMaterializedViewContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowCreateMaterializedView(PrestoSqlParser.ShowCreateMaterializedViewContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowCreateFunction(PrestoSqlParser.ShowCreateFunctionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowCreateFunction(PrestoSqlParser.ShowCreateFunctionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowTables(PrestoSqlParser.ShowTablesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowTables(PrestoSqlParser.ShowTablesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowSchemas(PrestoSqlParser.ShowSchemasContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowSchemas(PrestoSqlParser.ShowSchemasContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowCatalogs(PrestoSqlParser.ShowCatalogsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowCatalogs(PrestoSqlParser.ShowCatalogsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowColumns(PrestoSqlParser.ShowColumnsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowColumns(PrestoSqlParser.ShowColumnsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowStats(PrestoSqlParser.ShowStatsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowStats(PrestoSqlParser.ShowStatsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowStatsForQuery(PrestoSqlParser.ShowStatsForQueryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowStatsForQuery(PrestoSqlParser.ShowStatsForQueryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowRoles(PrestoSqlParser.ShowRolesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowRoles(PrestoSqlParser.ShowRolesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowRoleGrants(PrestoSqlParser.ShowRoleGrantsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowRoleGrants(PrestoSqlParser.ShowRoleGrantsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowFunctions(PrestoSqlParser.ShowFunctionsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowFunctions(PrestoSqlParser.ShowFunctionsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowSession(PrestoSqlParser.ShowSessionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowSession(PrestoSqlParser.ShowSessionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSetSession(PrestoSqlParser.SetSessionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSetSession(PrestoSqlParser.SetSessionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterResetSession(PrestoSqlParser.ResetSessionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitResetSession(PrestoSqlParser.ResetSessionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterStartTransaction(PrestoSqlParser.StartTransactionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitStartTransaction(PrestoSqlParser.StartTransactionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCommit(PrestoSqlParser.CommitContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCommit(PrestoSqlParser.CommitContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRollback(PrestoSqlParser.RollbackContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRollback(PrestoSqlParser.RollbackContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPrepare(PrestoSqlParser.PrepareContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPrepare(PrestoSqlParser.PrepareContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDeallocate(PrestoSqlParser.DeallocateContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDeallocate(PrestoSqlParser.DeallocateContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterExecute(PrestoSqlParser.ExecuteContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitExecute(PrestoSqlParser.ExecuteContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDescribeInput(PrestoSqlParser.DescribeInputContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDescribeInput(PrestoSqlParser.DescribeInputContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDescribeOutput(PrestoSqlParser.DescribeOutputContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDescribeOutput(PrestoSqlParser.DescribeOutputContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterQuery(PrestoSqlParser.QueryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitQuery(PrestoSqlParser.QueryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterWith(PrestoSqlParser.WithContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitWith(PrestoSqlParser.WithContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTableElement(PrestoSqlParser.TableElementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTableElement(PrestoSqlParser.TableElementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterColumnDefinition(PrestoSqlParser.ColumnDefinitionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitColumnDefinition(PrestoSqlParser.ColumnDefinitionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterLikeClause(PrestoSqlParser.LikeClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitLikeClause(PrestoSqlParser.LikeClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterProperties(PrestoSqlParser.PropertiesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitProperties(PrestoSqlParser.PropertiesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterProperty(PrestoSqlParser.PropertyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitProperty(PrestoSqlParser.PropertyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSqlParameterDeclaration(PrestoSqlParser.SqlParameterDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSqlParameterDeclaration(PrestoSqlParser.SqlParameterDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRoutineCharacteristics(PrestoSqlParser.RoutineCharacteristicsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRoutineCharacteristics(PrestoSqlParser.RoutineCharacteristicsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRoutineCharacteristic(PrestoSqlParser.RoutineCharacteristicContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRoutineCharacteristic(PrestoSqlParser.RoutineCharacteristicContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAlterRoutineCharacteristics(PrestoSqlParser.AlterRoutineCharacteristicsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAlterRoutineCharacteristics(PrestoSqlParser.AlterRoutineCharacteristicsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAlterRoutineCharacteristic(PrestoSqlParser.AlterRoutineCharacteristicContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAlterRoutineCharacteristic(PrestoSqlParser.AlterRoutineCharacteristicContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRoutineBody(PrestoSqlParser.RoutineBodyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRoutineBody(PrestoSqlParser.RoutineBodyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

+ */ + @Override public void enterExternalBodyReference(PrestoSqlParser.ExternalBodyReferenceContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitExternalBodyReference(PrestoSqlParser.ExternalBodyReferenceContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterLanguage(PrestoSqlParser.LanguageContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitLanguage(PrestoSqlParser.LanguageContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDeterminism(PrestoSqlParser.DeterminismContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDeterminism(PrestoSqlParser.DeterminismContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterNullCallClause(PrestoSqlParser.NullCallClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitNullCallClause(PrestoSqlParser.NullCallClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterExternalRoutineName(PrestoSqlParser.ExternalRoutineNameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitExternalRoutineName(PrestoSqlParser.ExternalRoutineNameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterQueryNoWith(PrestoSqlParser.QueryNoWithContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitQueryNoWith(PrestoSqlParser.QueryNoWithContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterQueryTermDefault(PrestoSqlParser.QueryTermDefaultContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitQueryTermDefault(PrestoSqlParser.QueryTermDefaultContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSetOperation(PrestoSqlParser.SetOperationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSetOperation(PrestoSqlParser.SetOperationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterQueryPrimaryDefault(PrestoSqlParser.QueryPrimaryDefaultContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitQueryPrimaryDefault(PrestoSqlParser.QueryPrimaryDefaultContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTable(PrestoSqlParser.TableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTable(PrestoSqlParser.TableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterInlineTable(PrestoSqlParser.InlineTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitInlineTable(PrestoSqlParser.InlineTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSubquery(PrestoSqlParser.SubqueryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSubquery(PrestoSqlParser.SubqueryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSortItem(PrestoSqlParser.SortItemContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSortItem(PrestoSqlParser.SortItemContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterQuerySpecification(PrestoSqlParser.QuerySpecificationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitQuerySpecification(PrestoSqlParser.QuerySpecificationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterGroupBy(PrestoSqlParser.GroupByContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitGroupBy(PrestoSqlParser.GroupByContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSingleGroupingSet(PrestoSqlParser.SingleGroupingSetContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSingleGroupingSet(PrestoSqlParser.SingleGroupingSetContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRollup(PrestoSqlParser.RollupContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRollup(PrestoSqlParser.RollupContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCube(PrestoSqlParser.CubeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCube(PrestoSqlParser.CubeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterMultipleGroupingSets(PrestoSqlParser.MultipleGroupingSetsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitMultipleGroupingSets(PrestoSqlParser.MultipleGroupingSetsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterGroupingSet(PrestoSqlParser.GroupingSetContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitGroupingSet(PrestoSqlParser.GroupingSetContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterNamedQuery(PrestoSqlParser.NamedQueryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitNamedQuery(PrestoSqlParser.NamedQueryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSetQuantifier(PrestoSqlParser.SetQuantifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSetQuantifier(PrestoSqlParser.SetQuantifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSelectSingle(PrestoSqlParser.SelectSingleContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSelectSingle(PrestoSqlParser.SelectSingleContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSelectAll(PrestoSqlParser.SelectAllContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSelectAll(PrestoSqlParser.SelectAllContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRelationDefault(PrestoSqlParser.RelationDefaultContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRelationDefault(PrestoSqlParser.RelationDefaultContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterJoinRelation(PrestoSqlParser.JoinRelationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitJoinRelation(PrestoSqlParser.JoinRelationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterJoinType(PrestoSqlParser.JoinTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitJoinType(PrestoSqlParser.JoinTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterJoinCriteria(PrestoSqlParser.JoinCriteriaContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitJoinCriteria(PrestoSqlParser.JoinCriteriaContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSampledRelation(PrestoSqlParser.SampledRelationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSampledRelation(PrestoSqlParser.SampledRelationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSampleType(PrestoSqlParser.SampleTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSampleType(PrestoSqlParser.SampleTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAliasedRelation(PrestoSqlParser.AliasedRelationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAliasedRelation(PrestoSqlParser.AliasedRelationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterColumnAliases(PrestoSqlParser.ColumnAliasesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitColumnAliases(PrestoSqlParser.ColumnAliasesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTableName(PrestoSqlParser.TableNameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTableName(PrestoSqlParser.TableNameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSubqueryRelation(PrestoSqlParser.SubqueryRelationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSubqueryRelation(PrestoSqlParser.SubqueryRelationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterUnnest(PrestoSqlParser.UnnestContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitUnnest(PrestoSqlParser.UnnestContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterLateral(PrestoSqlParser.LateralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitLateral(PrestoSqlParser.LateralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterParenthesizedRelation(PrestoSqlParser.ParenthesizedRelationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitParenthesizedRelation(PrestoSqlParser.ParenthesizedRelationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

+ */ + @Override public void enterLogicalNot(PrestoSqlParser.LogicalNotContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitLogicalNot(PrestoSqlParser.LogicalNotContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPredicated(PrestoSqlParser.PredicatedContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPredicated(PrestoSqlParser.PredicatedContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterLogicalBinary(PrestoSqlParser.LogicalBinaryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitLogicalBinary(PrestoSqlParser.LogicalBinaryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterComparison(PrestoSqlParser.ComparisonContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitComparison(PrestoSqlParser.ComparisonContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterQuantifiedComparison(PrestoSqlParser.QuantifiedComparisonContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitQuantifiedComparison(PrestoSqlParser.QuantifiedComparisonContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterBetween(PrestoSqlParser.BetweenContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitBetween(PrestoSqlParser.BetweenContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterInList(PrestoSqlParser.InListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitInList(PrestoSqlParser.InListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterInSubquery(PrestoSqlParser.InSubqueryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitInSubquery(PrestoSqlParser.InSubqueryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterLike(PrestoSqlParser.LikeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitLike(PrestoSqlParser.LikeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterNullPredicate(PrestoSqlParser.NullPredicateContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitNullPredicate(PrestoSqlParser.NullPredicateContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDistinctFrom(PrestoSqlParser.DistinctFromContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDistinctFrom(PrestoSqlParser.DistinctFromContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterValueExpressionDefault(PrestoSqlParser.ValueExpressionDefaultContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitValueExpressionDefault(PrestoSqlParser.ValueExpressionDefaultContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterConcatenation(PrestoSqlParser.ConcatenationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitConcatenation(PrestoSqlParser.ConcatenationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterArithmeticBinary(PrestoSqlParser.ArithmeticBinaryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitArithmeticBinary(PrestoSqlParser.ArithmeticBinaryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterArithmeticUnary(PrestoSqlParser.ArithmeticUnaryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitArithmeticUnary(PrestoSqlParser.ArithmeticUnaryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAtTimeZone(PrestoSqlParser.AtTimeZoneContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAtTimeZone(PrestoSqlParser.AtTimeZoneContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDereference(PrestoSqlParser.DereferenceContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDereference(PrestoSqlParser.DereferenceContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTypeConstructor(PrestoSqlParser.TypeConstructorContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTypeConstructor(PrestoSqlParser.TypeConstructorContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSpecialDateTimeFunction(PrestoSqlParser.SpecialDateTimeFunctionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSpecialDateTimeFunction(PrestoSqlParser.SpecialDateTimeFunctionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSubstring(PrestoSqlParser.SubstringContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSubstring(PrestoSqlParser.SubstringContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCast(PrestoSqlParser.CastContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCast(PrestoSqlParser.CastContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterLambda(PrestoSqlParser.LambdaContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitLambda(PrestoSqlParser.LambdaContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterParenthesizedExpression(PrestoSqlParser.ParenthesizedExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitParenthesizedExpression(PrestoSqlParser.ParenthesizedExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterParameter(PrestoSqlParser.ParameterContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitParameter(PrestoSqlParser.ParameterContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterNormalize(PrestoSqlParser.NormalizeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitNormalize(PrestoSqlParser.NormalizeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterIntervalLiteral(PrestoSqlParser.IntervalLiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitIntervalLiteral(PrestoSqlParser.IntervalLiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterNumericLiteral(PrestoSqlParser.NumericLiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitNumericLiteral(PrestoSqlParser.NumericLiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterBooleanLiteral(PrestoSqlParser.BooleanLiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitBooleanLiteral(PrestoSqlParser.BooleanLiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSimpleCase(PrestoSqlParser.SimpleCaseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSimpleCase(PrestoSqlParser.SimpleCaseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterColumnReference(PrestoSqlParser.ColumnReferenceContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitColumnReference(PrestoSqlParser.ColumnReferenceContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterNullLiteral(PrestoSqlParser.NullLiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitNullLiteral(PrestoSqlParser.NullLiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRowConstructor(PrestoSqlParser.RowConstructorContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRowConstructor(PrestoSqlParser.RowConstructorContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSubscript(PrestoSqlParser.SubscriptContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSubscript(PrestoSqlParser.SubscriptContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSubqueryExpression(PrestoSqlParser.SubqueryExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSubqueryExpression(PrestoSqlParser.SubqueryExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterBinaryLiteral(PrestoSqlParser.BinaryLiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitBinaryLiteral(PrestoSqlParser.BinaryLiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCurrentUser(PrestoSqlParser.CurrentUserContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCurrentUser(PrestoSqlParser.CurrentUserContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterExtract(PrestoSqlParser.ExtractContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitExtract(PrestoSqlParser.ExtractContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterStringLiteral(PrestoSqlParser.StringLiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitStringLiteral(PrestoSqlParser.StringLiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterArrayConstructor(PrestoSqlParser.ArrayConstructorContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitArrayConstructor(PrestoSqlParser.ArrayConstructorContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterFunctionCall(PrestoSqlParser.FunctionCallContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitFunctionCall(PrestoSqlParser.FunctionCallContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterExists(PrestoSqlParser.ExistsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitExists(PrestoSqlParser.ExistsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPosition(PrestoSqlParser.PositionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPosition(PrestoSqlParser.PositionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSearchedCase(PrestoSqlParser.SearchedCaseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSearchedCase(PrestoSqlParser.SearchedCaseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterGroupingOperation(PrestoSqlParser.GroupingOperationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitGroupingOperation(PrestoSqlParser.GroupingOperationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterBasicStringLiteral(PrestoSqlParser.BasicStringLiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitBasicStringLiteral(PrestoSqlParser.BasicStringLiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterUnicodeStringLiteral(PrestoSqlParser.UnicodeStringLiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitUnicodeStringLiteral(PrestoSqlParser.UnicodeStringLiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterNullTreatment(PrestoSqlParser.NullTreatmentContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitNullTreatment(PrestoSqlParser.NullTreatmentContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTimeZoneInterval(PrestoSqlParser.TimeZoneIntervalContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTimeZoneInterval(PrestoSqlParser.TimeZoneIntervalContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTimeZoneString(PrestoSqlParser.TimeZoneStringContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTimeZoneString(PrestoSqlParser.TimeZoneStringContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterComparisonOperator(PrestoSqlParser.ComparisonOperatorContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitComparisonOperator(PrestoSqlParser.ComparisonOperatorContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterComparisonQuantifier(PrestoSqlParser.ComparisonQuantifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitComparisonQuantifier(PrestoSqlParser.ComparisonQuantifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterBooleanValue(PrestoSqlParser.BooleanValueContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitBooleanValue(PrestoSqlParser.BooleanValueContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterInterval(PrestoSqlParser.IntervalContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitInterval(PrestoSqlParser.IntervalContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterIntervalField(PrestoSqlParser.IntervalFieldContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitIntervalField(PrestoSqlParser.IntervalFieldContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterNormalForm(PrestoSqlParser.NormalFormContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitNormalForm(PrestoSqlParser.NormalFormContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTypes(PrestoSqlParser.TypesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTypes(PrestoSqlParser.TypesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

+ */ + @Override public void enterBaseType(PrestoSqlParser.BaseTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitBaseType(PrestoSqlParser.BaseTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterWhenClause(PrestoSqlParser.WhenClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitWhenClause(PrestoSqlParser.WhenClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterFilter(PrestoSqlParser.FilterContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitFilter(PrestoSqlParser.FilterContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterOver(PrestoSqlParser.OverContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitOver(PrestoSqlParser.OverContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterWindowFrame(PrestoSqlParser.WindowFrameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitWindowFrame(PrestoSqlParser.WindowFrameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterUnboundedFrame(PrestoSqlParser.UnboundedFrameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitUnboundedFrame(PrestoSqlParser.UnboundedFrameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCurrentRowBound(PrestoSqlParser.CurrentRowBoundContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCurrentRowBound(PrestoSqlParser.CurrentRowBoundContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterBoundedFrame(PrestoSqlParser.BoundedFrameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitBoundedFrame(PrestoSqlParser.BoundedFrameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterExplainFormat(PrestoSqlParser.ExplainFormatContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitExplainFormat(PrestoSqlParser.ExplainFormatContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterExplainType(PrestoSqlParser.ExplainTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitExplainType(PrestoSqlParser.ExplainTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterIsolationLevel(PrestoSqlParser.IsolationLevelContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitIsolationLevel(PrestoSqlParser.IsolationLevelContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTransactionAccessMode(PrestoSqlParser.TransactionAccessModeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTransactionAccessMode(PrestoSqlParser.TransactionAccessModeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterReadUncommitted(PrestoSqlParser.ReadUncommittedContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitReadUncommitted(PrestoSqlParser.ReadUncommittedContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterReadCommitted(PrestoSqlParser.ReadCommittedContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitReadCommitted(PrestoSqlParser.ReadCommittedContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRepeatableRead(PrestoSqlParser.RepeatableReadContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRepeatableRead(PrestoSqlParser.RepeatableReadContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSerializable(PrestoSqlParser.SerializableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSerializable(PrestoSqlParser.SerializableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPositionalArgument(PrestoSqlParser.PositionalArgumentContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPositionalArgument(PrestoSqlParser.PositionalArgumentContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterNamedArgument(PrestoSqlParser.NamedArgumentContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitNamedArgument(PrestoSqlParser.NamedArgumentContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPrivilege(PrestoSqlParser.PrivilegeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPrivilege(PrestoSqlParser.PrivilegeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterQualifiedName(PrestoSqlParser.QualifiedNameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitQualifiedName(PrestoSqlParser.QualifiedNameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCurrentUserGrantor(PrestoSqlParser.CurrentUserGrantorContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCurrentUserGrantor(PrestoSqlParser.CurrentUserGrantorContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCurrentRoleGrantor(PrestoSqlParser.CurrentRoleGrantorContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCurrentRoleGrantor(PrestoSqlParser.CurrentRoleGrantorContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSpecifiedPrincipal(PrestoSqlParser.SpecifiedPrincipalContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSpecifiedPrincipal(PrestoSqlParser.SpecifiedPrincipalContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterUserPrincipal(PrestoSqlParser.UserPrincipalContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitUserPrincipal(PrestoSqlParser.UserPrincipalContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRolePrincipal(PrestoSqlParser.RolePrincipalContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRolePrincipal(PrestoSqlParser.RolePrincipalContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterUnspecifiedPrincipal(PrestoSqlParser.UnspecifiedPrincipalContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitUnspecifiedPrincipal(PrestoSqlParser.UnspecifiedPrincipalContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRoles(PrestoSqlParser.RolesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRoles(PrestoSqlParser.RolesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterUnquotedIdentifier(PrestoSqlParser.UnquotedIdentifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitUnquotedIdentifier(PrestoSqlParser.UnquotedIdentifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterQuotedIdentifier(PrestoSqlParser.QuotedIdentifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitQuotedIdentifier(PrestoSqlParser.QuotedIdentifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterBackQuotedIdentifier(PrestoSqlParser.BackQuotedIdentifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitBackQuotedIdentifier(PrestoSqlParser.BackQuotedIdentifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDigitIdentifier(PrestoSqlParser.DigitIdentifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDigitIdentifier(PrestoSqlParser.DigitIdentifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDecimalLiteral(PrestoSqlParser.DecimalLiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDecimalLiteral(PrestoSqlParser.DecimalLiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDoubleLiteral(PrestoSqlParser.DoubleLiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDoubleLiteral(PrestoSqlParser.DoubleLiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterIntegerLiteral(PrestoSqlParser.IntegerLiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitIntegerLiteral(PrestoSqlParser.IntegerLiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterNonReserved(PrestoSqlParser.NonReservedContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitNonReserved(PrestoSqlParser.NonReservedContext 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/src/main/java/com/github/bigdata/sql/antlr4/presto/PrestoSqlBaseVisitor.java b/src/main/java/com/github/bigdata/sql/antlr4/presto/PrestoSqlBaseVisitor.java new file mode 100644 index 0000000..121b11b --- /dev/null +++ b/src/main/java/com/github/bigdata/sql/antlr4/presto/PrestoSqlBaseVisitor.java @@ -0,0 +1,1456 @@ +// Generated from com/github/bigdata/sql/antlr4/presto/PrestoSql.g4 by ANTLR 4.7 +package com.github.bigdata.sql.antlr4.presto; +import org.antlr.v4.runtime.tree.AbstractParseTreeVisitor; + +/** + * This class provides an empty implementation of {@link PrestoSqlVisitor}, + * which can be extended to create a visitor which only needs to handle a subset + * of the available methods. + * + * @param The return type of the visit operation. Use {@link Void} for + * operations with no return type. + */ +public class PrestoSqlBaseVisitor extends AbstractParseTreeVisitor implements PrestoSqlVisitor { + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitSingleStatement(PrestoSqlParser.SingleStatementContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitStandaloneExpression(PrestoSqlParser.StandaloneExpressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitStandaloneRoutineBody(PrestoSqlParser.StandaloneRoutineBodyContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitStatementDefault(PrestoSqlParser.StatementDefaultContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitUse(PrestoSqlParser.UseContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitCreateSchema(PrestoSqlParser.CreateSchemaContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitDropSchema(PrestoSqlParser.DropSchemaContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitRenameSchema(PrestoSqlParser.RenameSchemaContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitCreateTableAsSelect(PrestoSqlParser.CreateTableAsSelectContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitCreateTable(PrestoSqlParser.CreateTableContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitDropTable(PrestoSqlParser.DropTableContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitInsertInto(PrestoSqlParser.InsertIntoContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitDelete(PrestoSqlParser.DeleteContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitRenameTable(PrestoSqlParser.RenameTableContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitRenameColumn(PrestoSqlParser.RenameColumnContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitDropColumn(PrestoSqlParser.DropColumnContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitAddColumn(PrestoSqlParser.AddColumnContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitAnalyze(PrestoSqlParser.AnalyzeContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitCreateType(PrestoSqlParser.CreateTypeContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitCreateView(PrestoSqlParser.CreateViewContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitDropView(PrestoSqlParser.DropViewContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitCreateMaterializedView(PrestoSqlParser.CreateMaterializedViewContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitDropMaterializedView(PrestoSqlParser.DropMaterializedViewContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitRefreshMaterializedView(PrestoSqlParser.RefreshMaterializedViewContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitCreateFunction(PrestoSqlParser.CreateFunctionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitAlterFunction(PrestoSqlParser.AlterFunctionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitDropFunction(PrestoSqlParser.DropFunctionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitCall(PrestoSqlParser.CallContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitCreateRole(PrestoSqlParser.CreateRoleContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitDropRole(PrestoSqlParser.DropRoleContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitGrantRoles(PrestoSqlParser.GrantRolesContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitRevokeRoles(PrestoSqlParser.RevokeRolesContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitSetRole(PrestoSqlParser.SetRoleContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitGrant(PrestoSqlParser.GrantContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitRevoke(PrestoSqlParser.RevokeContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitShowGrants(PrestoSqlParser.ShowGrantsContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitExplain(PrestoSqlParser.ExplainContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitShowCreateTable(PrestoSqlParser.ShowCreateTableContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitShowCreateView(PrestoSqlParser.ShowCreateViewContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitShowCreateMaterializedView(PrestoSqlParser.ShowCreateMaterializedViewContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitShowCreateFunction(PrestoSqlParser.ShowCreateFunctionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitShowTables(PrestoSqlParser.ShowTablesContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitShowSchemas(PrestoSqlParser.ShowSchemasContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitShowCatalogs(PrestoSqlParser.ShowCatalogsContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitShowColumns(PrestoSqlParser.ShowColumnsContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitShowStats(PrestoSqlParser.ShowStatsContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitShowStatsForQuery(PrestoSqlParser.ShowStatsForQueryContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitShowRoles(PrestoSqlParser.ShowRolesContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitShowRoleGrants(PrestoSqlParser.ShowRoleGrantsContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitShowFunctions(PrestoSqlParser.ShowFunctionsContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitShowSession(PrestoSqlParser.ShowSessionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitSetSession(PrestoSqlParser.SetSessionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitResetSession(PrestoSqlParser.ResetSessionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitStartTransaction(PrestoSqlParser.StartTransactionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitCommit(PrestoSqlParser.CommitContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitRollback(PrestoSqlParser.RollbackContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitPrepare(PrestoSqlParser.PrepareContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitDeallocate(PrestoSqlParser.DeallocateContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitExecute(PrestoSqlParser.ExecuteContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitDescribeInput(PrestoSqlParser.DescribeInputContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitDescribeOutput(PrestoSqlParser.DescribeOutputContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitQuery(PrestoSqlParser.QueryContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitWith(PrestoSqlParser.WithContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitTableElement(PrestoSqlParser.TableElementContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitColumnDefinition(PrestoSqlParser.ColumnDefinitionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitLikeClause(PrestoSqlParser.LikeClauseContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitProperties(PrestoSqlParser.PropertiesContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitProperty(PrestoSqlParser.PropertyContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitSqlParameterDeclaration(PrestoSqlParser.SqlParameterDeclarationContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitRoutineCharacteristics(PrestoSqlParser.RoutineCharacteristicsContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitRoutineCharacteristic(PrestoSqlParser.RoutineCharacteristicContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitAlterRoutineCharacteristics(PrestoSqlParser.AlterRoutineCharacteristicsContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitAlterRoutineCharacteristic(PrestoSqlParser.AlterRoutineCharacteristicContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitRoutineBody(PrestoSqlParser.RoutineBodyContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitReturnStatement(PrestoSqlParser.ReturnStatementContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitExternalBodyReference(PrestoSqlParser.ExternalBodyReferenceContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitLanguage(PrestoSqlParser.LanguageContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitDeterminism(PrestoSqlParser.DeterminismContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitNullCallClause(PrestoSqlParser.NullCallClauseContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitExternalRoutineName(PrestoSqlParser.ExternalRoutineNameContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitQueryNoWith(PrestoSqlParser.QueryNoWithContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitQueryTermDefault(PrestoSqlParser.QueryTermDefaultContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitSetOperation(PrestoSqlParser.SetOperationContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitQueryPrimaryDefault(PrestoSqlParser.QueryPrimaryDefaultContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitTable(PrestoSqlParser.TableContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitInlineTable(PrestoSqlParser.InlineTableContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitSubquery(PrestoSqlParser.SubqueryContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitSortItem(PrestoSqlParser.SortItemContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitQuerySpecification(PrestoSqlParser.QuerySpecificationContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitGroupBy(PrestoSqlParser.GroupByContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitSingleGroupingSet(PrestoSqlParser.SingleGroupingSetContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitRollup(PrestoSqlParser.RollupContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitCube(PrestoSqlParser.CubeContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitMultipleGroupingSets(PrestoSqlParser.MultipleGroupingSetsContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitGroupingSet(PrestoSqlParser.GroupingSetContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitNamedQuery(PrestoSqlParser.NamedQueryContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitSetQuantifier(PrestoSqlParser.SetQuantifierContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitSelectSingle(PrestoSqlParser.SelectSingleContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitSelectAll(PrestoSqlParser.SelectAllContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitRelationDefault(PrestoSqlParser.RelationDefaultContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitJoinRelation(PrestoSqlParser.JoinRelationContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitJoinType(PrestoSqlParser.JoinTypeContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitJoinCriteria(PrestoSqlParser.JoinCriteriaContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitSampledRelation(PrestoSqlParser.SampledRelationContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitSampleType(PrestoSqlParser.SampleTypeContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitAliasedRelation(PrestoSqlParser.AliasedRelationContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitColumnAliases(PrestoSqlParser.ColumnAliasesContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitTableName(PrestoSqlParser.TableNameContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitSubqueryRelation(PrestoSqlParser.SubqueryRelationContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitUnnest(PrestoSqlParser.UnnestContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitLateral(PrestoSqlParser.LateralContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitParenthesizedRelation(PrestoSqlParser.ParenthesizedRelationContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitExpression(PrestoSqlParser.ExpressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitLogicalNot(PrestoSqlParser.LogicalNotContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitPredicated(PrestoSqlParser.PredicatedContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitLogicalBinary(PrestoSqlParser.LogicalBinaryContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitComparison(PrestoSqlParser.ComparisonContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitQuantifiedComparison(PrestoSqlParser.QuantifiedComparisonContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitBetween(PrestoSqlParser.BetweenContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitInList(PrestoSqlParser.InListContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitInSubquery(PrestoSqlParser.InSubqueryContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitLike(PrestoSqlParser.LikeContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitNullPredicate(PrestoSqlParser.NullPredicateContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitDistinctFrom(PrestoSqlParser.DistinctFromContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitValueExpressionDefault(PrestoSqlParser.ValueExpressionDefaultContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitConcatenation(PrestoSqlParser.ConcatenationContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitArithmeticBinary(PrestoSqlParser.ArithmeticBinaryContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitArithmeticUnary(PrestoSqlParser.ArithmeticUnaryContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitAtTimeZone(PrestoSqlParser.AtTimeZoneContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitDereference(PrestoSqlParser.DereferenceContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitTypeConstructor(PrestoSqlParser.TypeConstructorContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitSpecialDateTimeFunction(PrestoSqlParser.SpecialDateTimeFunctionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitSubstring(PrestoSqlParser.SubstringContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitCast(PrestoSqlParser.CastContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitLambda(PrestoSqlParser.LambdaContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitParenthesizedExpression(PrestoSqlParser.ParenthesizedExpressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitParameter(PrestoSqlParser.ParameterContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitNormalize(PrestoSqlParser.NormalizeContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitIntervalLiteral(PrestoSqlParser.IntervalLiteralContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitNumericLiteral(PrestoSqlParser.NumericLiteralContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitBooleanLiteral(PrestoSqlParser.BooleanLiteralContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitSimpleCase(PrestoSqlParser.SimpleCaseContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitColumnReference(PrestoSqlParser.ColumnReferenceContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitNullLiteral(PrestoSqlParser.NullLiteralContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitRowConstructor(PrestoSqlParser.RowConstructorContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitSubscript(PrestoSqlParser.SubscriptContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitSubqueryExpression(PrestoSqlParser.SubqueryExpressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitBinaryLiteral(PrestoSqlParser.BinaryLiteralContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitCurrentUser(PrestoSqlParser.CurrentUserContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitExtract(PrestoSqlParser.ExtractContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitStringLiteral(PrestoSqlParser.StringLiteralContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitArrayConstructor(PrestoSqlParser.ArrayConstructorContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitFunctionCall(PrestoSqlParser.FunctionCallContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitExists(PrestoSqlParser.ExistsContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitPosition(PrestoSqlParser.PositionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitSearchedCase(PrestoSqlParser.SearchedCaseContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitGroupingOperation(PrestoSqlParser.GroupingOperationContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitBasicStringLiteral(PrestoSqlParser.BasicStringLiteralContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitUnicodeStringLiteral(PrestoSqlParser.UnicodeStringLiteralContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitNullTreatment(PrestoSqlParser.NullTreatmentContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitTimeZoneInterval(PrestoSqlParser.TimeZoneIntervalContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitTimeZoneString(PrestoSqlParser.TimeZoneStringContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitComparisonOperator(PrestoSqlParser.ComparisonOperatorContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitComparisonQuantifier(PrestoSqlParser.ComparisonQuantifierContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitBooleanValue(PrestoSqlParser.BooleanValueContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitInterval(PrestoSqlParser.IntervalContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitIntervalField(PrestoSqlParser.IntervalFieldContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitNormalForm(PrestoSqlParser.NormalFormContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitTypes(PrestoSqlParser.TypesContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitType(PrestoSqlParser.TypeContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitTypeParameter(PrestoSqlParser.TypeParameterContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitBaseType(PrestoSqlParser.BaseTypeContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitWhenClause(PrestoSqlParser.WhenClauseContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitFilter(PrestoSqlParser.FilterContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitOver(PrestoSqlParser.OverContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitWindowFrame(PrestoSqlParser.WindowFrameContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitUnboundedFrame(PrestoSqlParser.UnboundedFrameContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitCurrentRowBound(PrestoSqlParser.CurrentRowBoundContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitBoundedFrame(PrestoSqlParser.BoundedFrameContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitExplainFormat(PrestoSqlParser.ExplainFormatContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitExplainType(PrestoSqlParser.ExplainTypeContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitIsolationLevel(PrestoSqlParser.IsolationLevelContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitTransactionAccessMode(PrestoSqlParser.TransactionAccessModeContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitReadUncommitted(PrestoSqlParser.ReadUncommittedContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitReadCommitted(PrestoSqlParser.ReadCommittedContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitRepeatableRead(PrestoSqlParser.RepeatableReadContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitSerializable(PrestoSqlParser.SerializableContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitPositionalArgument(PrestoSqlParser.PositionalArgumentContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitNamedArgument(PrestoSqlParser.NamedArgumentContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitPrivilege(PrestoSqlParser.PrivilegeContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitQualifiedName(PrestoSqlParser.QualifiedNameContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitCurrentUserGrantor(PrestoSqlParser.CurrentUserGrantorContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitCurrentRoleGrantor(PrestoSqlParser.CurrentRoleGrantorContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitSpecifiedPrincipal(PrestoSqlParser.SpecifiedPrincipalContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitUserPrincipal(PrestoSqlParser.UserPrincipalContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitRolePrincipal(PrestoSqlParser.RolePrincipalContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitUnspecifiedPrincipal(PrestoSqlParser.UnspecifiedPrincipalContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitRoles(PrestoSqlParser.RolesContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitUnquotedIdentifier(PrestoSqlParser.UnquotedIdentifierContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitQuotedIdentifier(PrestoSqlParser.QuotedIdentifierContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitBackQuotedIdentifier(PrestoSqlParser.BackQuotedIdentifierContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitDigitIdentifier(PrestoSqlParser.DigitIdentifierContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitDecimalLiteral(PrestoSqlParser.DecimalLiteralContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitDoubleLiteral(PrestoSqlParser.DoubleLiteralContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitIntegerLiteral(PrestoSqlParser.IntegerLiteralContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitNonReserved(PrestoSqlParser.NonReservedContext ctx) { return visitChildren(ctx); } +} \ No newline at end of file diff --git a/src/main/java/com/github/bigdata/sql/antlr4/presto/PrestoSqlLexer.java b/src/main/java/com/github/bigdata/sql/antlr4/presto/PrestoSqlLexer.java new file mode 100644 index 0000000..de3c65d --- /dev/null +++ b/src/main/java/com/github/bigdata/sql/antlr4/presto/PrestoSqlLexer.java @@ -0,0 +1,1059 @@ +// Generated from com/github/bigdata/sql/antlr4/presto/PrestoSql.g4 by ANTLR 4.7 +package com.github.bigdata.sql.antlr4.presto; +import org.antlr.v4.runtime.Lexer; +import org.antlr.v4.runtime.CharStream; +import org.antlr.v4.runtime.Token; +import org.antlr.v4.runtime.TokenStream; +import org.antlr.v4.runtime.*; +import org.antlr.v4.runtime.atn.*; +import org.antlr.v4.runtime.dfa.DFA; +import org.antlr.v4.runtime.misc.*; + +@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"}) +public class PrestoSqlLexer extends Lexer { + static { RuntimeMetaData.checkVersion("4.7", 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, + ADD=10, ADMIN=11, ALL=12, ALTER=13, ANALYZE=14, AND=15, ANY=16, ARRAY=17, + AS=18, ASC=19, AT=20, BERNOULLI=21, BETWEEN=22, BY=23, CALL=24, CALLED=25, + CASCADE=26, CASE=27, CAST=28, CATALOGS=29, COLUMN=30, COLUMNS=31, COMMENT=32, + COMMIT=33, COMMITTED=34, CONSTRAINT=35, CREATE=36, CROSS=37, CUBE=38, + CURRENT=39, CURRENT_DATE=40, CURRENT_ROLE=41, CURRENT_TIME=42, CURRENT_TIMESTAMP=43, + CURRENT_USER=44, DATA=45, DATE=46, DAY=47, DEALLOCATE=48, DEFINER=49, + DELETE=50, DESC=51, DESCRIBE=52, DETERMINISTIC=53, DISTINCT=54, DISTRIBUTED=55, + DROP=56, ELSE=57, END=58, ESCAPE=59, EXCEPT=60, EXCLUDING=61, EXECUTE=62, + EXISTS=63, EXPLAIN=64, EXTRACT=65, EXTERNAL=66, FALSE=67, FILTER=68, FIRST=69, + FOLLOWING=70, FOR=71, FORMAT=72, FROM=73, FULL=74, FUNCTION=75, FUNCTIONS=76, + GRANT=77, GRANTED=78, GRANTS=79, GRAPHVIZ=80, GROUP=81, GROUPING=82, HAVING=83, + HOUR=84, IF=85, IGNORE=86, IN=87, INCLUDING=88, INNER=89, INPUT=90, INSERT=91, + INTERSECT=92, INTERVAL=93, INTO=94, INVOKER=95, IO=96, IS=97, ISOLATION=98, + JSON=99, JOIN=100, LANGUAGE=101, LAST=102, LATERAL=103, LEFT=104, LEVEL=105, + LIKE=106, LIMIT=107, LOCALTIME=108, LOCALTIMESTAMP=109, LOGICAL=110, MAP=111, + MATERIALIZED=112, MINUTE=113, MONTH=114, NAME=115, NATURAL=116, NFC=117, + NFD=118, NFKC=119, NFKD=120, NO=121, NONE=122, NORMALIZE=123, NOT=124, + NULL=125, NULLIF=126, NULLS=127, OFFSET=128, ON=129, ONLY=130, OPTION=131, + OR=132, ORDER=133, ORDINALITY=134, OUTER=135, OUTPUT=136, OVER=137, PARTITION=138, + PARTITIONS=139, POSITION=140, PRECEDING=141, PREPARE=142, PRIVILEGES=143, + PROPERTIES=144, RANGE=145, READ=146, RECURSIVE=147, REFRESH=148, RENAME=149, + REPEATABLE=150, REPLACE=151, RESET=152, RESPECT=153, RESTRICT=154, RETURN=155, + RETURNS=156, REVOKE=157, RIGHT=158, ROLE=159, ROLES=160, ROLLBACK=161, + ROLLUP=162, ROW=163, ROWS=164, SCHEMA=165, SCHEMAS=166, SECOND=167, SECURITY=168, + SELECT=169, SERIALIZABLE=170, SESSION=171, SET=172, SETS=173, SHOW=174, + SOME=175, SQL=176, START=177, STATS=178, SUBSTRING=179, SYSTEM=180, TABLE=181, + TABLES=182, TABLESAMPLE=183, TEMPORARY=184, TEXT=185, THEN=186, TIME=187, + TIMESTAMP=188, TO=189, TRANSACTION=190, TRUE=191, TRY_CAST=192, TYPE=193, + UESCAPE=194, UNBOUNDED=195, UNCOMMITTED=196, UNION=197, UNNEST=198, USE=199, + USER=200, USING=201, VALIDATE=202, VALUES=203, VERBOSE=204, VIEW=205, + WHEN=206, WHERE=207, WITH=208, WORK=209, WRITE=210, YEAR=211, ZONE=212, + EQ=213, NEQ=214, LT=215, LTE=216, GT=217, GTE=218, PLUS=219, MINUS=220, + ASTERISK=221, SLASH=222, PERCENT=223, CONCAT=224, STRING=225, UNICODE_STRING=226, + BINARY_LITERAL=227, INTEGER_VALUE=228, DECIMAL_VALUE=229, DOUBLE_VALUE=230, + IDENTIFIER=231, DIGIT_IDENTIFIER=232, QUOTED_IDENTIFIER=233, BACKQUOTED_IDENTIFIER=234, + TIME_WITH_TIME_ZONE=235, TIMESTAMP_WITH_TIME_ZONE=236, DOUBLE_PRECISION=237, + SIMPLE_COMMENT=238, BRACKETED_COMMENT=239, WS=240, UNRECOGNIZED=241; + public static String[] channelNames = { + "DEFAULT_TOKEN_CHANNEL", "HIDDEN" + }; + + public static String[] modeNames = { + "DEFAULT_MODE" + }; + + public static final String[] ruleNames = { + "T__0", "T__1", "T__2", "T__3", "T__4", "T__5", "T__6", "T__7", "T__8", + "ADD", "ADMIN", "ALL", "ALTER", "ANALYZE", "AND", "ANY", "ARRAY", "AS", + "ASC", "AT", "BERNOULLI", "BETWEEN", "BY", "CALL", "CALLED", "CASCADE", + "CASE", "CAST", "CATALOGS", "COLUMN", "COLUMNS", "COMMENT", "COMMIT", + "COMMITTED", "CONSTRAINT", "CREATE", "CROSS", "CUBE", "CURRENT", "CURRENT_DATE", + "CURRENT_ROLE", "CURRENT_TIME", "CURRENT_TIMESTAMP", "CURRENT_USER", "DATA", + "DATE", "DAY", "DEALLOCATE", "DEFINER", "DELETE", "DESC", "DESCRIBE", + "DETERMINISTIC", "DISTINCT", "DISTRIBUTED", "DROP", "ELSE", "END", "ESCAPE", + "EXCEPT", "EXCLUDING", "EXECUTE", "EXISTS", "EXPLAIN", "EXTRACT", "EXTERNAL", + "FALSE", "FILTER", "FIRST", "FOLLOWING", "FOR", "FORMAT", "FROM", "FULL", + "FUNCTION", "FUNCTIONS", "GRANT", "GRANTED", "GRANTS", "GRAPHVIZ", "GROUP", + "GROUPING", "HAVING", "HOUR", "IF", "IGNORE", "IN", "INCLUDING", "INNER", + "INPUT", "INSERT", "INTERSECT", "INTERVAL", "INTO", "INVOKER", "IO", "IS", + "ISOLATION", "JSON", "JOIN", "LANGUAGE", "LAST", "LATERAL", "LEFT", "LEVEL", + "LIKE", "LIMIT", "LOCALTIME", "LOCALTIMESTAMP", "LOGICAL", "MAP", "MATERIALIZED", + "MINUTE", "MONTH", "NAME", "NATURAL", "NFC", "NFD", "NFKC", "NFKD", "NO", + "NONE", "NORMALIZE", "NOT", "NULL", "NULLIF", "NULLS", "OFFSET", "ON", + "ONLY", "OPTION", "OR", "ORDER", "ORDINALITY", "OUTER", "OUTPUT", "OVER", + "PARTITION", "PARTITIONS", "POSITION", "PRECEDING", "PREPARE", "PRIVILEGES", + "PROPERTIES", "RANGE", "READ", "RECURSIVE", "REFRESH", "RENAME", "REPEATABLE", + "REPLACE", "RESET", "RESPECT", "RESTRICT", "RETURN", "RETURNS", "REVOKE", + "RIGHT", "ROLE", "ROLES", "ROLLBACK", "ROLLUP", "ROW", "ROWS", "SCHEMA", + "SCHEMAS", "SECOND", "SECURITY", "SELECT", "SERIALIZABLE", "SESSION", + "SET", "SETS", "SHOW", "SOME", "SQL", "START", "STATS", "SUBSTRING", "SYSTEM", + "TABLE", "TABLES", "TABLESAMPLE", "TEMPORARY", "TEXT", "THEN", "TIME", + "TIMESTAMP", "TO", "TRANSACTION", "TRUE", "TRY_CAST", "TYPE", "UESCAPE", + "UNBOUNDED", "UNCOMMITTED", "UNION", "UNNEST", "USE", "USER", "USING", + "VALIDATE", "VALUES", "VERBOSE", "VIEW", "WHEN", "WHERE", "WITH", "WORK", + "WRITE", "YEAR", "ZONE", "EQ", "NEQ", "LT", "LTE", "GT", "GTE", "PLUS", + "MINUS", "ASTERISK", "SLASH", "PERCENT", "CONCAT", "STRING", "UNICODE_STRING", + "BINARY_LITERAL", "INTEGER_VALUE", "DECIMAL_VALUE", "DOUBLE_VALUE", "IDENTIFIER", + "DIGIT_IDENTIFIER", "QUOTED_IDENTIFIER", "BACKQUOTED_IDENTIFIER", "TIME_WITH_TIME_ZONE", + "TIMESTAMP_WITH_TIME_ZONE", "DOUBLE_PRECISION", "EXPONENT", "DIGIT", "LETTER", + "SIMPLE_COMMENT", "BRACKETED_COMMENT", "WS", "UNRECOGNIZED" + }; + + private static final String[] _LITERAL_NAMES = { + null, "'.'", "'('", "')'", "','", "'?'", "'->'", "'['", "']'", "'=>'", + "'ADD'", "'ADMIN'", "'ALL'", "'ALTER'", "'ANALYZE'", "'AND'", "'ANY'", + "'ARRAY'", "'AS'", "'ASC'", "'AT'", "'BERNOULLI'", "'BETWEEN'", "'BY'", + "'CALL'", "'CALLED'", "'CASCADE'", "'CASE'", "'CAST'", "'CATALOGS'", "'COLUMN'", + "'COLUMNS'", "'COMMENT'", "'COMMIT'", "'COMMITTED'", "'CONSTRAINT'", "'CREATE'", + "'CROSS'", "'CUBE'", "'CURRENT'", "'CURRENT_DATE'", "'CURRENT_ROLE'", + "'CURRENT_TIME'", "'CURRENT_TIMESTAMP'", "'CURRENT_USER'", "'DATA'", "'DATE'", + "'DAY'", "'DEALLOCATE'", "'DEFINER'", "'DELETE'", "'DESC'", "'DESCRIBE'", + "'DETERMINISTIC'", "'DISTINCT'", "'DISTRIBUTED'", "'DROP'", "'ELSE'", + "'END'", "'ESCAPE'", "'EXCEPT'", "'EXCLUDING'", "'EXECUTE'", "'EXISTS'", + "'EXPLAIN'", "'EXTRACT'", "'EXTERNAL'", "'FALSE'", "'FILTER'", "'FIRST'", + "'FOLLOWING'", "'FOR'", "'FORMAT'", "'FROM'", "'FULL'", "'FUNCTION'", + "'FUNCTIONS'", "'GRANT'", "'GRANTED'", "'GRANTS'", "'GRAPHVIZ'", "'GROUP'", + "'GROUPING'", "'HAVING'", "'HOUR'", "'IF'", "'IGNORE'", "'IN'", "'INCLUDING'", + "'INNER'", "'INPUT'", "'INSERT'", "'INTERSECT'", "'INTERVAL'", "'INTO'", + "'INVOKER'", "'IO'", "'IS'", "'ISOLATION'", "'JSON'", "'JOIN'", "'LANGUAGE'", + "'LAST'", "'LATERAL'", "'LEFT'", "'LEVEL'", "'LIKE'", "'LIMIT'", "'LOCALTIME'", + "'LOCALTIMESTAMP'", "'LOGICAL'", "'MAP'", "'MATERIALIZED'", "'MINUTE'", + "'MONTH'", "'NAME'", "'NATURAL'", "'NFC'", "'NFD'", "'NFKC'", "'NFKD'", + "'NO'", "'NONE'", "'NORMALIZE'", "'NOT'", "'NULL'", "'NULLIF'", "'NULLS'", + "'OFFSET'", "'ON'", "'ONLY'", "'OPTION'", "'OR'", "'ORDER'", "'ORDINALITY'", + "'OUTER'", "'OUTPUT'", "'OVER'", "'PARTITION'", "'PARTITIONS'", "'POSITION'", + "'PRECEDING'", "'PREPARE'", "'PRIVILEGES'", "'PROPERTIES'", "'RANGE'", + "'READ'", "'RECURSIVE'", "'REFRESH'", "'RENAME'", "'REPEATABLE'", "'REPLACE'", + "'RESET'", "'RESPECT'", "'RESTRICT'", "'RETURN'", "'RETURNS'", "'REVOKE'", + "'RIGHT'", "'ROLE'", "'ROLES'", "'ROLLBACK'", "'ROLLUP'", "'ROW'", "'ROWS'", + "'SCHEMA'", "'SCHEMAS'", "'SECOND'", "'SECURITY'", "'SELECT'", "'SERIALIZABLE'", + "'SESSION'", "'SET'", "'SETS'", "'SHOW'", "'SOME'", "'SQL'", "'START'", + "'STATS'", "'SUBSTRING'", "'SYSTEM'", "'TABLE'", "'TABLES'", "'TABLESAMPLE'", + "'TEMPORARY'", "'TEXT'", "'THEN'", "'TIME'", "'TIMESTAMP'", "'TO'", "'TRANSACTION'", + "'TRUE'", "'TRY_CAST'", "'TYPE'", "'UESCAPE'", "'UNBOUNDED'", "'UNCOMMITTED'", + "'UNION'", "'UNNEST'", "'USE'", "'USER'", "'USING'", "'VALIDATE'", "'VALUES'", + "'VERBOSE'", "'VIEW'", "'WHEN'", "'WHERE'", "'WITH'", "'WORK'", "'WRITE'", + "'YEAR'", "'ZONE'", "'='", null, "'<'", "'<='", "'>'", "'>='", "'+'", + "'-'", "'*'", "'/'", "'%'", "'||'" + }; + private static final String[] _SYMBOLIC_NAMES = { + null, null, null, null, null, null, null, null, null, null, "ADD", "ADMIN", + "ALL", "ALTER", "ANALYZE", "AND", "ANY", "ARRAY", "AS", "ASC", "AT", "BERNOULLI", + "BETWEEN", "BY", "CALL", "CALLED", "CASCADE", "CASE", "CAST", "CATALOGS", + "COLUMN", "COLUMNS", "COMMENT", "COMMIT", "COMMITTED", "CONSTRAINT", "CREATE", + "CROSS", "CUBE", "CURRENT", "CURRENT_DATE", "CURRENT_ROLE", "CURRENT_TIME", + "CURRENT_TIMESTAMP", "CURRENT_USER", "DATA", "DATE", "DAY", "DEALLOCATE", + "DEFINER", "DELETE", "DESC", "DESCRIBE", "DETERMINISTIC", "DISTINCT", + "DISTRIBUTED", "DROP", "ELSE", "END", "ESCAPE", "EXCEPT", "EXCLUDING", + "EXECUTE", "EXISTS", "EXPLAIN", "EXTRACT", "EXTERNAL", "FALSE", "FILTER", + "FIRST", "FOLLOWING", "FOR", "FORMAT", "FROM", "FULL", "FUNCTION", "FUNCTIONS", + "GRANT", "GRANTED", "GRANTS", "GRAPHVIZ", "GROUP", "GROUPING", "HAVING", + "HOUR", "IF", "IGNORE", "IN", "INCLUDING", "INNER", "INPUT", "INSERT", + "INTERSECT", "INTERVAL", "INTO", "INVOKER", "IO", "IS", "ISOLATION", "JSON", + "JOIN", "LANGUAGE", "LAST", "LATERAL", "LEFT", "LEVEL", "LIKE", "LIMIT", + "LOCALTIME", "LOCALTIMESTAMP", "LOGICAL", "MAP", "MATERIALIZED", "MINUTE", + "MONTH", "NAME", "NATURAL", "NFC", "NFD", "NFKC", "NFKD", "NO", "NONE", + "NORMALIZE", "NOT", "NULL", "NULLIF", "NULLS", "OFFSET", "ON", "ONLY", + "OPTION", "OR", "ORDER", "ORDINALITY", "OUTER", "OUTPUT", "OVER", "PARTITION", + "PARTITIONS", "POSITION", "PRECEDING", "PREPARE", "PRIVILEGES", "PROPERTIES", + "RANGE", "READ", "RECURSIVE", "REFRESH", "RENAME", "REPEATABLE", "REPLACE", + "RESET", "RESPECT", "RESTRICT", "RETURN", "RETURNS", "REVOKE", "RIGHT", + "ROLE", "ROLES", "ROLLBACK", "ROLLUP", "ROW", "ROWS", "SCHEMA", "SCHEMAS", + "SECOND", "SECURITY", "SELECT", "SERIALIZABLE", "SESSION", "SET", "SETS", + "SHOW", "SOME", "SQL", "START", "STATS", "SUBSTRING", "SYSTEM", "TABLE", + "TABLES", "TABLESAMPLE", "TEMPORARY", "TEXT", "THEN", "TIME", "TIMESTAMP", + "TO", "TRANSACTION", "TRUE", "TRY_CAST", "TYPE", "UESCAPE", "UNBOUNDED", + "UNCOMMITTED", "UNION", "UNNEST", "USE", "USER", "USING", "VALIDATE", + "VALUES", "VERBOSE", "VIEW", "WHEN", "WHERE", "WITH", "WORK", "WRITE", + "YEAR", "ZONE", "EQ", "NEQ", "LT", "LTE", "GT", "GTE", "PLUS", "MINUS", + "ASTERISK", "SLASH", "PERCENT", "CONCAT", "STRING", "UNICODE_STRING", + "BINARY_LITERAL", "INTEGER_VALUE", "DECIMAL_VALUE", "DOUBLE_VALUE", "IDENTIFIER", + "DIGIT_IDENTIFIER", "QUOTED_IDENTIFIER", "BACKQUOTED_IDENTIFIER", "TIME_WITH_TIME_ZONE", + "TIMESTAMP_WITH_TIME_ZONE", "DOUBLE_PRECISION", "SIMPLE_COMMENT", "BRACKETED_COMMENT", + "WS", "UNRECOGNIZED" + }; + 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 PrestoSqlLexer(CharStream input) { + super(input); + _interp = new LexerATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache); + } + + @Override + public String getGrammarFileName() { return "PrestoSql.g4"; } + + @Override + public String[] getRuleNames() { return ruleNames; } + + @Override + public String getSerializedATN() { return _serializedATN; } + + @Override + public String[] getChannelNames() { return channelNames; } + + @Override + public String[] getModeNames() { return modeNames; } + + @Override + public ATN getATN() { return _ATN; } + + public static final String _serializedATN = + "\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2\u00f3\u08b0\b\1\4"+ + "\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n"+ + "\4\13\t\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22"+ + "\t\22\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31"+ + "\t\31\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36\t\36\4\37\t\37\4 \t"+ + " \4!\t!\4\"\t\"\4#\t#\4$\t$\4%\t%\4&\t&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t"+ + "+\4,\t,\4-\t-\4.\t.\4/\t/\4\60\t\60\4\61\t\61\4\62\t\62\4\63\t\63\4\64"+ + "\t\64\4\65\t\65\4\66\t\66\4\67\t\67\48\t8\49\t9\4:\t:\4;\t;\4<\t<\4=\t"+ + "=\4>\t>\4?\t?\4@\t@\4A\tA\4B\tB\4C\tC\4D\tD\4E\tE\4F\tF\4G\tG\4H\tH\4"+ + "I\tI\4J\tJ\4K\tK\4L\tL\4M\tM\4N\tN\4O\tO\4P\tP\4Q\tQ\4R\tR\4S\tS\4T\t"+ + "T\4U\tU\4V\tV\4W\tW\4X\tX\4Y\tY\4Z\tZ\4[\t[\4\\\t\\\4]\t]\4^\t^\4_\t_"+ + "\4`\t`\4a\ta\4b\tb\4c\tc\4d\td\4e\te\4f\tf\4g\tg\4h\th\4i\ti\4j\tj\4k"+ + "\tk\4l\tl\4m\tm\4n\tn\4o\to\4p\tp\4q\tq\4r\tr\4s\ts\4t\tt\4u\tu\4v\tv"+ + "\4w\tw\4x\tx\4y\ty\4z\tz\4{\t{\4|\t|\4}\t}\4~\t~\4\177\t\177\4\u0080\t"+ + "\u0080\4\u0081\t\u0081\4\u0082\t\u0082\4\u0083\t\u0083\4\u0084\t\u0084"+ + "\4\u0085\t\u0085\4\u0086\t\u0086\4\u0087\t\u0087\4\u0088\t\u0088\4\u0089"+ + "\t\u0089\4\u008a\t\u008a\4\u008b\t\u008b\4\u008c\t\u008c\4\u008d\t\u008d"+ + "\4\u008e\t\u008e\4\u008f\t\u008f\4\u0090\t\u0090\4\u0091\t\u0091\4\u0092"+ + "\t\u0092\4\u0093\t\u0093\4\u0094\t\u0094\4\u0095\t\u0095\4\u0096\t\u0096"+ + "\4\u0097\t\u0097\4\u0098\t\u0098\4\u0099\t\u0099\4\u009a\t\u009a\4\u009b"+ + "\t\u009b\4\u009c\t\u009c\4\u009d\t\u009d\4\u009e\t\u009e\4\u009f\t\u009f"+ + "\4\u00a0\t\u00a0\4\u00a1\t\u00a1\4\u00a2\t\u00a2\4\u00a3\t\u00a3\4\u00a4"+ + "\t\u00a4\4\u00a5\t\u00a5\4\u00a6\t\u00a6\4\u00a7\t\u00a7\4\u00a8\t\u00a8"+ + "\4\u00a9\t\u00a9\4\u00aa\t\u00aa\4\u00ab\t\u00ab\4\u00ac\t\u00ac\4\u00ad"+ + "\t\u00ad\4\u00ae\t\u00ae\4\u00af\t\u00af\4\u00b0\t\u00b0\4\u00b1\t\u00b1"+ + "\4\u00b2\t\u00b2\4\u00b3\t\u00b3\4\u00b4\t\u00b4\4\u00b5\t\u00b5\4\u00b6"+ + "\t\u00b6\4\u00b7\t\u00b7\4\u00b8\t\u00b8\4\u00b9\t\u00b9\4\u00ba\t\u00ba"+ + "\4\u00bb\t\u00bb\4\u00bc\t\u00bc\4\u00bd\t\u00bd\4\u00be\t\u00be\4\u00bf"+ + "\t\u00bf\4\u00c0\t\u00c0\4\u00c1\t\u00c1\4\u00c2\t\u00c2\4\u00c3\t\u00c3"+ + "\4\u00c4\t\u00c4\4\u00c5\t\u00c5\4\u00c6\t\u00c6\4\u00c7\t\u00c7\4\u00c8"+ + "\t\u00c8\4\u00c9\t\u00c9\4\u00ca\t\u00ca\4\u00cb\t\u00cb\4\u00cc\t\u00cc"+ + "\4\u00cd\t\u00cd\4\u00ce\t\u00ce\4\u00cf\t\u00cf\4\u00d0\t\u00d0\4\u00d1"+ + "\t\u00d1\4\u00d2\t\u00d2\4\u00d3\t\u00d3\4\u00d4\t\u00d4\4\u00d5\t\u00d5"+ + "\4\u00d6\t\u00d6\4\u00d7\t\u00d7\4\u00d8\t\u00d8\4\u00d9\t\u00d9\4\u00da"+ + "\t\u00da\4\u00db\t\u00db\4\u00dc\t\u00dc\4\u00dd\t\u00dd\4\u00de\t\u00de"+ + "\4\u00df\t\u00df\4\u00e0\t\u00e0\4\u00e1\t\u00e1\4\u00e2\t\u00e2\4\u00e3"+ + "\t\u00e3\4\u00e4\t\u00e4\4\u00e5\t\u00e5\4\u00e6\t\u00e6\4\u00e7\t\u00e7"+ + "\4\u00e8\t\u00e8\4\u00e9\t\u00e9\4\u00ea\t\u00ea\4\u00eb\t\u00eb\4\u00ec"+ + "\t\u00ec\4\u00ed\t\u00ed\4\u00ee\t\u00ee\4\u00ef\t\u00ef\4\u00f0\t\u00f0"+ + "\4\u00f1\t\u00f1\4\u00f2\t\u00f2\4\u00f3\t\u00f3\4\u00f4\t\u00f4\4\u00f5"+ + "\t\u00f5\3\2\3\2\3\3\3\3\3\4\3\4\3\5\3\5\3\6\3\6\3\7\3\7\3\7\3\b\3\b\3"+ + "\t\3\t\3\n\3\n\3\n\3\13\3\13\3\13\3\13\3\f\3\f\3\f\3\f\3\f\3\f\3\r\3\r"+ + "\3\r\3\r\3\16\3\16\3\16\3\16\3\16\3\16\3\17\3\17\3\17\3\17\3\17\3\17\3"+ + "\17\3\17\3\20\3\20\3\20\3\20\3\21\3\21\3\21\3\21\3\22\3\22\3\22\3\22\3"+ + "\22\3\22\3\23\3\23\3\23\3\24\3\24\3\24\3\24\3\25\3\25\3\25\3\26\3\26\3"+ + "\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\27\3\27\3\27\3\27\3\27\3\27\3"+ + "\27\3\27\3\30\3\30\3\30\3\31\3\31\3\31\3\31\3\31\3\32\3\32\3\32\3\32\3"+ + "\32\3\32\3\32\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\34\3\34\3\34\3"+ + "\34\3\34\3\35\3\35\3\35\3\35\3\35\3\36\3\36\3\36\3\36\3\36\3\36\3\36\3"+ + "\36\3\36\3\37\3\37\3\37\3\37\3\37\3\37\3\37\3 \3 \3 \3 \3 \3 \3 \3 \3"+ + "!\3!\3!\3!\3!\3!\3!\3!\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3#\3#\3#\3#\3#\3#\3"+ + "#\3#\3#\3#\3$\3$\3$\3$\3$\3$\3$\3$\3$\3$\3$\3%\3%\3%\3%\3%\3%\3%\3&\3"+ + "&\3&\3&\3&\3&\3\'\3\'\3\'\3\'\3\'\3(\3(\3(\3(\3(\3(\3(\3(\3)\3)\3)\3)"+ + "\3)\3)\3)\3)\3)\3)\3)\3)\3)\3*\3*\3*\3*\3*\3*\3*\3*\3*\3*\3*\3*\3*\3+"+ + "\3+\3+\3+\3+\3+\3+\3+\3+\3+\3+\3+\3+\3,\3,\3,\3,\3,\3,\3,\3,\3,\3,\3,"+ + "\3,\3,\3,\3,\3,\3,\3,\3-\3-\3-\3-\3-\3-\3-\3-\3-\3-\3-\3-\3-\3.\3.\3."+ + "\3.\3.\3/\3/\3/\3/\3/\3\60\3\60\3\60\3\60\3\61\3\61\3\61\3\61\3\61\3\61"+ + "\3\61\3\61\3\61\3\61\3\61\3\62\3\62\3\62\3\62\3\62\3\62\3\62\3\62\3\63"+ + "\3\63\3\63\3\63\3\63\3\63\3\63\3\64\3\64\3\64\3\64\3\64\3\65\3\65\3\65"+ + "\3\65\3\65\3\65\3\65\3\65\3\65\3\66\3\66\3\66\3\66\3\66\3\66\3\66\3\66"+ + "\3\66\3\66\3\66\3\66\3\66\3\66\3\67\3\67\3\67\3\67\3\67\3\67\3\67\3\67"+ + "\3\67\38\38\38\38\38\38\38\38\38\38\38\38\39\39\39\39\39\3:\3:\3:\3:\3"+ + ":\3;\3;\3;\3;\3<\3<\3<\3<\3<\3<\3<\3=\3=\3=\3=\3=\3=\3=\3>\3>\3>\3>\3"+ + ">\3>\3>\3>\3>\3>\3?\3?\3?\3?\3?\3?\3?\3?\3@\3@\3@\3@\3@\3@\3@\3A\3A\3"+ + "A\3A\3A\3A\3A\3A\3B\3B\3B\3B\3B\3B\3B\3B\3C\3C\3C\3C\3C\3C\3C\3C\3C\3"+ + "D\3D\3D\3D\3D\3D\3E\3E\3E\3E\3E\3E\3E\3F\3F\3F\3F\3F\3F\3G\3G\3G\3G\3"+ + "G\3G\3G\3G\3G\3G\3H\3H\3H\3H\3I\3I\3I\3I\3I\3I\3I\3J\3J\3J\3J\3J\3K\3"+ + "K\3K\3K\3K\3L\3L\3L\3L\3L\3L\3L\3L\3L\3M\3M\3M\3M\3M\3M\3M\3M\3M\3M\3"+ + "N\3N\3N\3N\3N\3N\3O\3O\3O\3O\3O\3O\3O\3O\3P\3P\3P\3P\3P\3P\3P\3Q\3Q\3"+ + "Q\3Q\3Q\3Q\3Q\3Q\3Q\3R\3R\3R\3R\3R\3R\3S\3S\3S\3S\3S\3S\3S\3S\3S\3T\3"+ + "T\3T\3T\3T\3T\3T\3U\3U\3U\3U\3U\3V\3V\3V\3W\3W\3W\3W\3W\3W\3W\3X\3X\3"+ + "X\3Y\3Y\3Y\3Y\3Y\3Y\3Y\3Y\3Y\3Y\3Z\3Z\3Z\3Z\3Z\3Z\3[\3[\3[\3[\3[\3[\3"+ + "\\\3\\\3\\\3\\\3\\\3\\\3\\\3]\3]\3]\3]\3]\3]\3]\3]\3]\3]\3^\3^\3^\3^\3"+ + "^\3^\3^\3^\3^\3_\3_\3_\3_\3_\3`\3`\3`\3`\3`\3`\3`\3`\3a\3a\3a\3b\3b\3"+ + "b\3c\3c\3c\3c\3c\3c\3c\3c\3c\3c\3d\3d\3d\3d\3d\3e\3e\3e\3e\3e\3f\3f\3"+ + "f\3f\3f\3f\3f\3f\3f\3g\3g\3g\3g\3g\3h\3h\3h\3h\3h\3h\3h\3h\3i\3i\3i\3"+ + "i\3i\3j\3j\3j\3j\3j\3j\3k\3k\3k\3k\3k\3l\3l\3l\3l\3l\3l\3m\3m\3m\3m\3"+ + "m\3m\3m\3m\3m\3m\3n\3n\3n\3n\3n\3n\3n\3n\3n\3n\3n\3n\3n\3n\3n\3o\3o\3"+ + "o\3o\3o\3o\3o\3o\3p\3p\3p\3p\3q\3q\3q\3q\3q\3q\3q\3q\3q\3q\3q\3q\3q\3"+ + "r\3r\3r\3r\3r\3r\3r\3s\3s\3s\3s\3s\3s\3t\3t\3t\3t\3t\3u\3u\3u\3u\3u\3"+ + "u\3u\3u\3v\3v\3v\3v\3w\3w\3w\3w\3x\3x\3x\3x\3x\3y\3y\3y\3y\3y\3z\3z\3"+ + "z\3{\3{\3{\3{\3{\3|\3|\3|\3|\3|\3|\3|\3|\3|\3|\3}\3}\3}\3}\3~\3~\3~\3"+ + "~\3~\3\177\3\177\3\177\3\177\3\177\3\177\3\177\3\u0080\3\u0080\3\u0080"+ + "\3\u0080\3\u0080\3\u0080\3\u0081\3\u0081\3\u0081\3\u0081\3\u0081\3\u0081"+ + "\3\u0081\3\u0082\3\u0082\3\u0082\3\u0083\3\u0083\3\u0083\3\u0083\3\u0083"+ + "\3\u0084\3\u0084\3\u0084\3\u0084\3\u0084\3\u0084\3\u0084\3\u0085\3\u0085"+ + "\3\u0085\3\u0086\3\u0086\3\u0086\3\u0086\3\u0086\3\u0086\3\u0087\3\u0087"+ + "\3\u0087\3\u0087\3\u0087\3\u0087\3\u0087\3\u0087\3\u0087\3\u0087\3\u0087"+ + "\3\u0088\3\u0088\3\u0088\3\u0088\3\u0088\3\u0088\3\u0089\3\u0089\3\u0089"+ + "\3\u0089\3\u0089\3\u0089\3\u0089\3\u008a\3\u008a\3\u008a\3\u008a\3\u008a"+ + "\3\u008b\3\u008b\3\u008b\3\u008b\3\u008b\3\u008b\3\u008b\3\u008b\3\u008b"+ + "\3\u008b\3\u008c\3\u008c\3\u008c\3\u008c\3\u008c\3\u008c\3\u008c\3\u008c"+ + "\3\u008c\3\u008c\3\u008c\3\u008d\3\u008d\3\u008d\3\u008d\3\u008d\3\u008d"+ + "\3\u008d\3\u008d\3\u008d\3\u008e\3\u008e\3\u008e\3\u008e\3\u008e\3\u008e"+ + "\3\u008e\3\u008e\3\u008e\3\u008e\3\u008f\3\u008f\3\u008f\3\u008f\3\u008f"+ + "\3\u008f\3\u008f\3\u008f\3\u0090\3\u0090\3\u0090\3\u0090\3\u0090\3\u0090"+ + "\3\u0090\3\u0090\3\u0090\3\u0090\3\u0090\3\u0091\3\u0091\3\u0091\3\u0091"+ + "\3\u0091\3\u0091\3\u0091\3\u0091\3\u0091\3\u0091\3\u0091\3\u0092\3\u0092"+ + "\3\u0092\3\u0092\3\u0092\3\u0092\3\u0093\3\u0093\3\u0093\3\u0093\3\u0093"+ + "\3\u0094\3\u0094\3\u0094\3\u0094\3\u0094\3\u0094\3\u0094\3\u0094\3\u0094"+ + "\3\u0094\3\u0095\3\u0095\3\u0095\3\u0095\3\u0095\3\u0095\3\u0095\3\u0095"+ + "\3\u0096\3\u0096\3\u0096\3\u0096\3\u0096\3\u0096\3\u0096\3\u0097\3\u0097"+ + "\3\u0097\3\u0097\3\u0097\3\u0097\3\u0097\3\u0097\3\u0097\3\u0097\3\u0097"+ + "\3\u0098\3\u0098\3\u0098\3\u0098\3\u0098\3\u0098\3\u0098\3\u0098\3\u0099"+ + "\3\u0099\3\u0099\3\u0099\3\u0099\3\u0099\3\u009a\3\u009a\3\u009a\3\u009a"+ + "\3\u009a\3\u009a\3\u009a\3\u009a\3\u009b\3\u009b\3\u009b\3\u009b\3\u009b"+ + "\3\u009b\3\u009b\3\u009b\3\u009b\3\u009c\3\u009c\3\u009c\3\u009c\3\u009c"+ + "\3\u009c\3\u009c\3\u009d\3\u009d\3\u009d\3\u009d\3\u009d\3\u009d\3\u009d"+ + "\3\u009d\3\u009e\3\u009e\3\u009e\3\u009e\3\u009e\3\u009e\3\u009e\3\u009f"+ + "\3\u009f\3\u009f\3\u009f\3\u009f\3\u009f\3\u00a0\3\u00a0\3\u00a0\3\u00a0"+ + "\3\u00a0\3\u00a1\3\u00a1\3\u00a1\3\u00a1\3\u00a1\3\u00a1\3\u00a2\3\u00a2"+ + "\3\u00a2\3\u00a2\3\u00a2\3\u00a2\3\u00a2\3\u00a2\3\u00a2\3\u00a3\3\u00a3"+ + "\3\u00a3\3\u00a3\3\u00a3\3\u00a3\3\u00a3\3\u00a4\3\u00a4\3\u00a4\3\u00a4"+ + "\3\u00a5\3\u00a5\3\u00a5\3\u00a5\3\u00a5\3\u00a6\3\u00a6\3\u00a6\3\u00a6"+ + "\3\u00a6\3\u00a6\3\u00a6\3\u00a7\3\u00a7\3\u00a7\3\u00a7\3\u00a7\3\u00a7"+ + "\3\u00a7\3\u00a7\3\u00a8\3\u00a8\3\u00a8\3\u00a8\3\u00a8\3\u00a8\3\u00a8"+ + "\3\u00a9\3\u00a9\3\u00a9\3\u00a9\3\u00a9\3\u00a9\3\u00a9\3\u00a9\3\u00a9"+ + "\3\u00aa\3\u00aa\3\u00aa\3\u00aa\3\u00aa\3\u00aa\3\u00aa\3\u00ab\3\u00ab"+ + "\3\u00ab\3\u00ab\3\u00ab\3\u00ab\3\u00ab\3\u00ab\3\u00ab\3\u00ab\3\u00ab"+ + "\3\u00ab\3\u00ab\3\u00ac\3\u00ac\3\u00ac\3\u00ac\3\u00ac\3\u00ac\3\u00ac"+ + "\3\u00ac\3\u00ad\3\u00ad\3\u00ad\3\u00ad\3\u00ae\3\u00ae\3\u00ae\3\u00ae"+ + "\3\u00ae\3\u00af\3\u00af\3\u00af\3\u00af\3\u00af\3\u00b0\3\u00b0\3\u00b0"+ + "\3\u00b0\3\u00b0\3\u00b1\3\u00b1\3\u00b1\3\u00b1\3\u00b2\3\u00b2\3\u00b2"+ + "\3\u00b2\3\u00b2\3\u00b2\3\u00b3\3\u00b3\3\u00b3\3\u00b3\3\u00b3\3\u00b3"+ + "\3\u00b4\3\u00b4\3\u00b4\3\u00b4\3\u00b4\3\u00b4\3\u00b4\3\u00b4\3\u00b4"+ + "\3\u00b4\3\u00b5\3\u00b5\3\u00b5\3\u00b5\3\u00b5\3\u00b5\3\u00b5\3\u00b6"+ + "\3\u00b6\3\u00b6\3\u00b6\3\u00b6\3\u00b6\3\u00b7\3\u00b7\3\u00b7\3\u00b7"+ + "\3\u00b7\3\u00b7\3\u00b7\3\u00b8\3\u00b8\3\u00b8\3\u00b8\3\u00b8\3\u00b8"+ + "\3\u00b8\3\u00b8\3\u00b8\3\u00b8\3\u00b8\3\u00b8\3\u00b9\3\u00b9\3\u00b9"+ + "\3\u00b9\3\u00b9\3\u00b9\3\u00b9\3\u00b9\3\u00b9\3\u00b9\3\u00ba\3\u00ba"+ + "\3\u00ba\3\u00ba\3\u00ba\3\u00bb\3\u00bb\3\u00bb\3\u00bb\3\u00bb\3\u00bc"+ + "\3\u00bc\3\u00bc\3\u00bc\3\u00bc\3\u00bd\3\u00bd\3\u00bd\3\u00bd\3\u00bd"+ + "\3\u00bd\3\u00bd\3\u00bd\3\u00bd\3\u00bd\3\u00be\3\u00be\3\u00be\3\u00bf"+ + "\3\u00bf\3\u00bf\3\u00bf\3\u00bf\3\u00bf\3\u00bf\3\u00bf\3\u00bf\3\u00bf"+ + "\3\u00bf\3\u00bf\3\u00c0\3\u00c0\3\u00c0\3\u00c0\3\u00c0\3\u00c1\3\u00c1"+ + "\3\u00c1\3\u00c1\3\u00c1\3\u00c1\3\u00c1\3\u00c1\3\u00c1\3\u00c2\3\u00c2"+ + "\3\u00c2\3\u00c2\3\u00c2\3\u00c3\3\u00c3\3\u00c3\3\u00c3\3\u00c3\3\u00c3"+ + "\3\u00c3\3\u00c3\3\u00c4\3\u00c4\3\u00c4\3\u00c4\3\u00c4\3\u00c4\3\u00c4"+ + "\3\u00c4\3\u00c4\3\u00c4\3\u00c5\3\u00c5\3\u00c5\3\u00c5\3\u00c5\3\u00c5"+ + "\3\u00c5\3\u00c5\3\u00c5\3\u00c5\3\u00c5\3\u00c5\3\u00c6\3\u00c6\3\u00c6"+ + "\3\u00c6\3\u00c6\3\u00c6\3\u00c7\3\u00c7\3\u00c7\3\u00c7\3\u00c7\3\u00c7"+ + "\3\u00c7\3\u00c8\3\u00c8\3\u00c8\3\u00c8\3\u00c9\3\u00c9\3\u00c9\3\u00c9"+ + "\3\u00c9\3\u00ca\3\u00ca\3\u00ca\3\u00ca\3\u00ca\3\u00ca\3\u00cb\3\u00cb"+ + "\3\u00cb\3\u00cb\3\u00cb\3\u00cb\3\u00cb\3\u00cb\3\u00cb\3\u00cc\3\u00cc"+ + "\3\u00cc\3\u00cc\3\u00cc\3\u00cc\3\u00cc\3\u00cd\3\u00cd\3\u00cd\3\u00cd"+ + "\3\u00cd\3\u00cd\3\u00cd\3\u00cd\3\u00ce\3\u00ce\3\u00ce\3\u00ce\3\u00ce"+ + "\3\u00cf\3\u00cf\3\u00cf\3\u00cf\3\u00cf\3\u00d0\3\u00d0\3\u00d0\3\u00d0"+ + "\3\u00d0\3\u00d0\3\u00d1\3\u00d1\3\u00d1\3\u00d1\3\u00d1\3\u00d2\3\u00d2"+ + "\3\u00d2\3\u00d2\3\u00d2\3\u00d3\3\u00d3\3\u00d3\3\u00d3\3\u00d3\3\u00d3"+ + "\3\u00d4\3\u00d4\3\u00d4\3\u00d4\3\u00d4\3\u00d5\3\u00d5\3\u00d5\3\u00d5"+ + "\3\u00d5\3\u00d6\3\u00d6\3\u00d7\3\u00d7\3\u00d7\3\u00d7\5\u00d7\u079d"+ + "\n\u00d7\3\u00d8\3\u00d8\3\u00d9\3\u00d9\3\u00d9\3\u00da\3\u00da\3\u00db"+ + "\3\u00db\3\u00db\3\u00dc\3\u00dc\3\u00dd\3\u00dd\3\u00de\3\u00de\3\u00df"+ + "\3\u00df\3\u00e0\3\u00e0\3\u00e1\3\u00e1\3\u00e1\3\u00e2\3\u00e2\3\u00e2"+ + "\3\u00e2\7\u00e2\u07ba\n\u00e2\f\u00e2\16\u00e2\u07bd\13\u00e2\3\u00e2"+ + "\3\u00e2\3\u00e3\3\u00e3\3\u00e3\3\u00e3\3\u00e3\3\u00e3\3\u00e3\7\u00e3"+ + "\u07c8\n\u00e3\f\u00e3\16\u00e3\u07cb\13\u00e3\3\u00e3\3\u00e3\3\u00e4"+ + "\3\u00e4\3\u00e4\3\u00e4\7\u00e4\u07d3\n\u00e4\f\u00e4\16\u00e4\u07d6"+ + "\13\u00e4\3\u00e4\3\u00e4\3\u00e5\6\u00e5\u07db\n\u00e5\r\u00e5\16\u00e5"+ + "\u07dc\3\u00e6\6\u00e6\u07e0\n\u00e6\r\u00e6\16\u00e6\u07e1\3\u00e6\3"+ + "\u00e6\7\u00e6\u07e6\n\u00e6\f\u00e6\16\u00e6\u07e9\13\u00e6\3\u00e6\3"+ + "\u00e6\6\u00e6\u07ed\n\u00e6\r\u00e6\16\u00e6\u07ee\5\u00e6\u07f1\n\u00e6"+ + "\3\u00e7\6\u00e7\u07f4\n\u00e7\r\u00e7\16\u00e7\u07f5\3\u00e7\3\u00e7"+ + "\7\u00e7\u07fa\n\u00e7\f\u00e7\16\u00e7\u07fd\13\u00e7\5\u00e7\u07ff\n"+ + "\u00e7\3\u00e7\3\u00e7\3\u00e7\3\u00e7\6\u00e7\u0805\n\u00e7\r\u00e7\16"+ + "\u00e7\u0806\3\u00e7\3\u00e7\5\u00e7\u080b\n\u00e7\3\u00e8\3\u00e8\5\u00e8"+ + "\u080f\n\u00e8\3\u00e8\3\u00e8\3\u00e8\7\u00e8\u0814\n\u00e8\f\u00e8\16"+ + "\u00e8\u0817\13\u00e8\3\u00e9\3\u00e9\3\u00e9\3\u00e9\6\u00e9\u081d\n"+ + "\u00e9\r\u00e9\16\u00e9\u081e\3\u00ea\3\u00ea\3\u00ea\3\u00ea\7\u00ea"+ + "\u0825\n\u00ea\f\u00ea\16\u00ea\u0828\13\u00ea\3\u00ea\3\u00ea\3\u00eb"+ + "\3\u00eb\3\u00eb\3\u00eb\7\u00eb\u0830\n\u00eb\f\u00eb\16\u00eb\u0833"+ + "\13\u00eb\3\u00eb\3\u00eb\3\u00ec\3\u00ec\3\u00ec\3\u00ec\3\u00ec\3\u00ec"+ + "\3\u00ec\3\u00ec\3\u00ec\3\u00ec\3\u00ec\3\u00ec\3\u00ec\3\u00ec\3\u00ec"+ + "\3\u00ec\3\u00ec\3\u00ec\3\u00ec\3\u00ec\3\u00ec\3\u00ec\3\u00ec\3\u00ed"+ + "\3\u00ed\3\u00ed\3\u00ed\3\u00ed\3\u00ed\3\u00ed\3\u00ed\3\u00ed\3\u00ed"+ + "\3\u00ed\3\u00ed\3\u00ed\3\u00ed\3\u00ed\3\u00ed\3\u00ed\3\u00ed\3\u00ed"+ + "\3\u00ed\3\u00ed\3\u00ed\3\u00ed\3\u00ed\3\u00ed\3\u00ed\3\u00ed\3\u00ed"+ + "\3\u00ee\3\u00ee\3\u00ee\3\u00ee\3\u00ee\3\u00ee\3\u00ee\3\u00ee\3\u00ee"+ + "\3\u00ee\3\u00ee\3\u00ee\3\u00ee\3\u00ee\3\u00ee\3\u00ee\3\u00ee\3\u00ee"+ + "\3\u00ef\3\u00ef\5\u00ef\u087e\n\u00ef\3\u00ef\6\u00ef\u0881\n\u00ef\r"+ + "\u00ef\16\u00ef\u0882\3\u00f0\3\u00f0\3\u00f1\3\u00f1\3\u00f2\3\u00f2"+ + "\3\u00f2\3\u00f2\7\u00f2\u088d\n\u00f2\f\u00f2\16\u00f2\u0890\13\u00f2"+ + "\3\u00f2\5\u00f2\u0893\n\u00f2\3\u00f2\5\u00f2\u0896\n\u00f2\3\u00f2\3"+ + "\u00f2\3\u00f3\3\u00f3\3\u00f3\3\u00f3\7\u00f3\u089e\n\u00f3\f\u00f3\16"+ + "\u00f3\u08a1\13\u00f3\3\u00f3\3\u00f3\3\u00f3\3\u00f3\3\u00f3\3\u00f4"+ + "\6\u00f4\u08a9\n\u00f4\r\u00f4\16\u00f4\u08aa\3\u00f4\3\u00f4\3\u00f5"+ + "\3\u00f5\3\u089f\2\u00f6\3\3\5\4\7\5\t\6\13\7\r\b\17\t\21\n\23\13\25\f"+ + "\27\r\31\16\33\17\35\20\37\21!\22#\23%\24\'\25)\26+\27-\30/\31\61\32\63"+ + "\33\65\34\67\359\36;\37= ?!A\"C#E$G%I&K\'M(O)Q*S+U,W-Y.[/]\60_\61a\62"+ + "c\63e\64g\65i\66k\67m8o9q:s;u{?}@\177A\u0081B\u0083C\u0085D\u0087"+ + "E\u0089F\u008bG\u008dH\u008fI\u0091J\u0093K\u0095L\u0097M\u0099N\u009b"+ + "O\u009dP\u009fQ\u00a1R\u00a3S\u00a5T\u00a7U\u00a9V\u00abW\u00adX\u00af"+ + "Y\u00b1Z\u00b3[\u00b5\\\u00b7]\u00b9^\u00bb_\u00bd`\u00bfa\u00c1b\u00c3"+ + "c\u00c5d\u00c7e\u00c9f\u00cbg\u00cdh\u00cfi\u00d1j\u00d3k\u00d5l\u00d7"+ + "m\u00d9n\u00dbo\u00ddp\u00dfq\u00e1r\u00e3s\u00e5t\u00e7u\u00e9v\u00eb"+ + "w\u00edx\u00efy\u00f1z\u00f3{\u00f5|\u00f7}\u00f9~\u00fb\177\u00fd\u0080"+ + "\u00ff\u0081\u0101\u0082\u0103\u0083\u0105\u0084\u0107\u0085\u0109\u0086"+ + "\u010b\u0087\u010d\u0088\u010f\u0089\u0111\u008a\u0113\u008b\u0115\u008c"+ + "\u0117\u008d\u0119\u008e\u011b\u008f\u011d\u0090\u011f\u0091\u0121\u0092"+ + "\u0123\u0093\u0125\u0094\u0127\u0095\u0129\u0096\u012b\u0097\u012d\u0098"+ + "\u012f\u0099\u0131\u009a\u0133\u009b\u0135\u009c\u0137\u009d\u0139\u009e"+ + "\u013b\u009f\u013d\u00a0\u013f\u00a1\u0141\u00a2\u0143\u00a3\u0145\u00a4"+ + "\u0147\u00a5\u0149\u00a6\u014b\u00a7\u014d\u00a8\u014f\u00a9\u0151\u00aa"+ + "\u0153\u00ab\u0155\u00ac\u0157\u00ad\u0159\u00ae\u015b\u00af\u015d\u00b0"+ + "\u015f\u00b1\u0161\u00b2\u0163\u00b3\u0165\u00b4\u0167\u00b5\u0169\u00b6"+ + "\u016b\u00b7\u016d\u00b8\u016f\u00b9\u0171\u00ba\u0173\u00bb\u0175\u00bc"+ + "\u0177\u00bd\u0179\u00be\u017b\u00bf\u017d\u00c0\u017f\u00c1\u0181\u00c2"+ + "\u0183\u00c3\u0185\u00c4\u0187\u00c5\u0189\u00c6\u018b\u00c7\u018d\u00c8"+ + "\u018f\u00c9\u0191\u00ca\u0193\u00cb\u0195\u00cc\u0197\u00cd\u0199\u00ce"+ + "\u019b\u00cf\u019d\u00d0\u019f\u00d1\u01a1\u00d2\u01a3\u00d3\u01a5\u00d4"+ + "\u01a7\u00d5\u01a9\u00d6\u01ab\u00d7\u01ad\u00d8\u01af\u00d9\u01b1\u00da"+ + "\u01b3\u00db\u01b5\u00dc\u01b7\u00dd\u01b9\u00de\u01bb\u00df\u01bd\u00e0"+ + "\u01bf\u00e1\u01c1\u00e2\u01c3\u00e3\u01c5\u00e4\u01c7\u00e5\u01c9\u00e6"+ + "\u01cb\u00e7\u01cd\u00e8\u01cf\u00e9\u01d1\u00ea\u01d3\u00eb\u01d5\u00ec"+ + "\u01d7\u00ed\u01d9\u00ee\u01db\u00ef\u01dd\2\u01df\2\u01e1\2\u01e3\u00f0"+ + "\u01e5\u00f1\u01e7\u00f2\u01e9\u00f3\3\2\13\3\2))\5\2<\3\2\2\2\u0276\u0277\7E\2\2\u0277\u0278"+ + "\7Q\2\2\u0278\u0279\7N\2\2\u0279\u027a\7W\2\2\u027a\u027b\7O\2\2\u027b"+ + "\u027c\7P\2\2\u027c\u027d\7U\2\2\u027d@\3\2\2\2\u027e\u027f\7E\2\2\u027f"+ + "\u0280\7Q\2\2\u0280\u0281\7O\2\2\u0281\u0282\7O\2\2\u0282\u0283\7G\2\2"+ + "\u0283\u0284\7P\2\2\u0284\u0285\7V\2\2\u0285B\3\2\2\2\u0286\u0287\7E\2"+ + "\2\u0287\u0288\7Q\2\2\u0288\u0289\7O\2\2\u0289\u028a\7O\2\2\u028a\u028b"+ + "\7K\2\2\u028b\u028c\7V\2\2\u028cD\3\2\2\2\u028d\u028e\7E\2\2\u028e\u028f"+ + "\7Q\2\2\u028f\u0290\7O\2\2\u0290\u0291\7O\2\2\u0291\u0292\7K\2\2\u0292"+ + "\u0293\7V\2\2\u0293\u0294\7V\2\2\u0294\u0295\7G\2\2\u0295\u0296\7F\2\2"+ + "\u0296F\3\2\2\2\u0297\u0298\7E\2\2\u0298\u0299\7Q\2\2\u0299\u029a\7P\2"+ + "\2\u029a\u029b\7U\2\2\u029b\u029c\7V\2\2\u029c\u029d\7T\2\2\u029d\u029e"+ + "\7C\2\2\u029e\u029f\7K\2\2\u029f\u02a0\7P\2\2\u02a0\u02a1\7V\2\2\u02a1"+ + "H\3\2\2\2\u02a2\u02a3\7E\2\2\u02a3\u02a4\7T\2\2\u02a4\u02a5\7G\2\2\u02a5"+ + "\u02a6\7C\2\2\u02a6\u02a7\7V\2\2\u02a7\u02a8\7G\2\2\u02a8J\3\2\2\2\u02a9"+ + "\u02aa\7E\2\2\u02aa\u02ab\7T\2\2\u02ab\u02ac\7Q\2\2\u02ac\u02ad\7U\2\2"+ + "\u02ad\u02ae\7U\2\2\u02aeL\3\2\2\2\u02af\u02b0\7E\2\2\u02b0\u02b1\7W\2"+ + "\2\u02b1\u02b2\7D\2\2\u02b2\u02b3\7G\2\2\u02b3N\3\2\2\2\u02b4\u02b5\7"+ + "E\2\2\u02b5\u02b6\7W\2\2\u02b6\u02b7\7T\2\2\u02b7\u02b8\7T\2\2\u02b8\u02b9"+ + "\7G\2\2\u02b9\u02ba\7P\2\2\u02ba\u02bb\7V\2\2\u02bbP\3\2\2\2\u02bc\u02bd"+ + "\7E\2\2\u02bd\u02be\7W\2\2\u02be\u02bf\7T\2\2\u02bf\u02c0\7T\2\2\u02c0"+ + "\u02c1\7G\2\2\u02c1\u02c2\7P\2\2\u02c2\u02c3\7V\2\2\u02c3\u02c4\7a\2\2"+ + "\u02c4\u02c5\7F\2\2\u02c5\u02c6\7C\2\2\u02c6\u02c7\7V\2\2\u02c7\u02c8"+ + "\7G\2\2\u02c8R\3\2\2\2\u02c9\u02ca\7E\2\2\u02ca\u02cb\7W\2\2\u02cb\u02cc"+ + "\7T\2\2\u02cc\u02cd\7T\2\2\u02cd\u02ce\7G\2\2\u02ce\u02cf\7P\2\2\u02cf"+ + "\u02d0\7V\2\2\u02d0\u02d1\7a\2\2\u02d1\u02d2\7T\2\2\u02d2\u02d3\7Q\2\2"+ + "\u02d3\u02d4\7N\2\2\u02d4\u02d5\7G\2\2\u02d5T\3\2\2\2\u02d6\u02d7\7E\2"+ + "\2\u02d7\u02d8\7W\2\2\u02d8\u02d9\7T\2\2\u02d9\u02da\7T\2\2\u02da\u02db"+ + "\7G\2\2\u02db\u02dc\7P\2\2\u02dc\u02dd\7V\2\2\u02dd\u02de\7a\2\2\u02de"+ + "\u02df\7V\2\2\u02df\u02e0\7K\2\2\u02e0\u02e1\7O\2\2\u02e1\u02e2\7G\2\2"+ + "\u02e2V\3\2\2\2\u02e3\u02e4\7E\2\2\u02e4\u02e5\7W\2\2\u02e5\u02e6\7T\2"+ + "\2\u02e6\u02e7\7T\2\2\u02e7\u02e8\7G\2\2\u02e8\u02e9\7P\2\2\u02e9\u02ea"+ + "\7V\2\2\u02ea\u02eb\7a\2\2\u02eb\u02ec\7V\2\2\u02ec\u02ed\7K\2\2\u02ed"+ + "\u02ee\7O\2\2\u02ee\u02ef\7G\2\2\u02ef\u02f0\7U\2\2\u02f0\u02f1\7V\2\2"+ + "\u02f1\u02f2\7C\2\2\u02f2\u02f3\7O\2\2\u02f3\u02f4\7R\2\2\u02f4X\3\2\2"+ + "\2\u02f5\u02f6\7E\2\2\u02f6\u02f7\7W\2\2\u02f7\u02f8\7T\2\2\u02f8\u02f9"+ + "\7T\2\2\u02f9\u02fa\7G\2\2\u02fa\u02fb\7P\2\2\u02fb\u02fc\7V\2\2\u02fc"+ + "\u02fd\7a\2\2\u02fd\u02fe\7W\2\2\u02fe\u02ff\7U\2\2\u02ff\u0300\7G\2\2"+ + "\u0300\u0301\7T\2\2\u0301Z\3\2\2\2\u0302\u0303\7F\2\2\u0303\u0304\7C\2"+ + "\2\u0304\u0305\7V\2\2\u0305\u0306\7C\2\2\u0306\\\3\2\2\2\u0307\u0308\7"+ + "F\2\2\u0308\u0309\7C\2\2\u0309\u030a\7V\2\2\u030a\u030b\7G\2\2\u030b^"+ + "\3\2\2\2\u030c\u030d\7F\2\2\u030d\u030e\7C\2\2\u030e\u030f\7[\2\2\u030f"+ + "`\3\2\2\2\u0310\u0311\7F\2\2\u0311\u0312\7G\2\2\u0312\u0313\7C\2\2\u0313"+ + "\u0314\7N\2\2\u0314\u0315\7N\2\2\u0315\u0316\7Q\2\2\u0316\u0317\7E\2\2"+ + "\u0317\u0318\7C\2\2\u0318\u0319\7V\2\2\u0319\u031a\7G\2\2\u031ab\3\2\2"+ + "\2\u031b\u031c\7F\2\2\u031c\u031d\7G\2\2\u031d\u031e\7H\2\2\u031e\u031f"+ + "\7K\2\2\u031f\u0320\7P\2\2\u0320\u0321\7G\2\2\u0321\u0322\7T\2\2\u0322"+ + "d\3\2\2\2\u0323\u0324\7F\2\2\u0324\u0325\7G\2\2\u0325\u0326\7N\2\2\u0326"+ + "\u0327\7G\2\2\u0327\u0328\7V\2\2\u0328\u0329\7G\2\2\u0329f\3\2\2\2\u032a"+ + "\u032b\7F\2\2\u032b\u032c\7G\2\2\u032c\u032d\7U\2\2\u032d\u032e\7E\2\2"+ + "\u032eh\3\2\2\2\u032f\u0330\7F\2\2\u0330\u0331\7G\2\2\u0331\u0332\7U\2"+ + "\2\u0332\u0333\7E\2\2\u0333\u0334\7T\2\2\u0334\u0335\7K\2\2\u0335\u0336"+ + "\7D\2\2\u0336\u0337\7G\2\2\u0337j\3\2\2\2\u0338\u0339\7F\2\2\u0339\u033a"+ + "\7G\2\2\u033a\u033b\7V\2\2\u033b\u033c\7G\2\2\u033c\u033d\7T\2\2\u033d"+ + "\u033e\7O\2\2\u033e\u033f\7K\2\2\u033f\u0340\7P\2\2\u0340\u0341\7K\2\2"+ + "\u0341\u0342\7U\2\2\u0342\u0343\7V\2\2\u0343\u0344\7K\2\2\u0344\u0345"+ + "\7E\2\2\u0345l\3\2\2\2\u0346\u0347\7F\2\2\u0347\u0348\7K\2\2\u0348\u0349"+ + "\7U\2\2\u0349\u034a\7V\2\2\u034a\u034b\7K\2\2\u034b\u034c\7P\2\2\u034c"+ + "\u034d\7E\2\2\u034d\u034e\7V\2\2\u034en\3\2\2\2\u034f\u0350\7F\2\2\u0350"+ + "\u0351\7K\2\2\u0351\u0352\7U\2\2\u0352\u0353\7V\2\2\u0353\u0354\7T\2\2"+ + "\u0354\u0355\7K\2\2\u0355\u0356\7D\2\2\u0356\u0357\7W\2\2\u0357\u0358"+ + "\7V\2\2\u0358\u0359\7G\2\2\u0359\u035a\7F\2\2\u035ap\3\2\2\2\u035b\u035c"+ + "\7F\2\2\u035c\u035d\7T\2\2\u035d\u035e\7Q\2\2\u035e\u035f\7R\2\2\u035f"+ + "r\3\2\2\2\u0360\u0361\7G\2\2\u0361\u0362\7N\2\2\u0362\u0363\7U\2\2\u0363"+ + "\u0364\7G\2\2\u0364t\3\2\2\2\u0365\u0366\7G\2\2\u0366\u0367\7P\2\2\u0367"+ + "\u0368\7F\2\2\u0368v\3\2\2\2\u0369\u036a\7G\2\2\u036a\u036b\7U\2\2\u036b"+ + "\u036c\7E\2\2\u036c\u036d\7C\2\2\u036d\u036e\7R\2\2\u036e\u036f\7G\2\2"+ + "\u036fx\3\2\2\2\u0370\u0371\7G\2\2\u0371\u0372\7Z\2\2\u0372\u0373\7E\2"+ + "\2\u0373\u0374\7G\2\2\u0374\u0375\7R\2\2\u0375\u0376\7V\2\2\u0376z\3\2"+ + "\2\2\u0377\u0378\7G\2\2\u0378\u0379\7Z\2\2\u0379\u037a\7E\2\2\u037a\u037b"+ + "\7N\2\2\u037b\u037c\7W\2\2\u037c\u037d\7F\2\2\u037d\u037e\7K\2\2\u037e"+ + "\u037f\7P\2\2\u037f\u0380\7I\2\2\u0380|\3\2\2\2\u0381\u0382\7G\2\2\u0382"+ + "\u0383\7Z\2\2\u0383\u0384\7G\2\2\u0384\u0385\7E\2\2\u0385\u0386\7W\2\2"+ + "\u0386\u0387\7V\2\2\u0387\u0388\7G\2\2\u0388~\3\2\2\2\u0389\u038a\7G\2"+ + "\2\u038a\u038b\7Z\2\2\u038b\u038c\7K\2\2\u038c\u038d\7U\2\2\u038d\u038e"+ + "\7V\2\2\u038e\u038f\7U\2\2\u038f\u0080\3\2\2\2\u0390\u0391\7G\2\2\u0391"+ + "\u0392\7Z\2\2\u0392\u0393\7R\2\2\u0393\u0394\7N\2\2\u0394\u0395\7C\2\2"+ + "\u0395\u0396\7K\2\2\u0396\u0397\7P\2\2\u0397\u0082\3\2\2\2\u0398\u0399"+ + "\7G\2\2\u0399\u039a\7Z\2\2\u039a\u039b\7V\2\2\u039b\u039c\7T\2\2\u039c"+ + "\u039d\7C\2\2\u039d\u039e\7E\2\2\u039e\u039f\7V\2\2\u039f\u0084\3\2\2"+ + "\2\u03a0\u03a1\7G\2\2\u03a1\u03a2\7Z\2\2\u03a2\u03a3\7V\2\2\u03a3\u03a4"+ + "\7G\2\2\u03a4\u03a5\7T\2\2\u03a5\u03a6\7P\2\2\u03a6\u03a7\7C\2\2\u03a7"+ + "\u03a8\7N\2\2\u03a8\u0086\3\2\2\2\u03a9\u03aa\7H\2\2\u03aa\u03ab\7C\2"+ + "\2\u03ab\u03ac\7N\2\2\u03ac\u03ad\7U\2\2\u03ad\u03ae\7G\2\2\u03ae\u0088"+ + "\3\2\2\2\u03af\u03b0\7H\2\2\u03b0\u03b1\7K\2\2\u03b1\u03b2\7N\2\2\u03b2"+ + "\u03b3\7V\2\2\u03b3\u03b4\7G\2\2\u03b4\u03b5\7T\2\2\u03b5\u008a\3\2\2"+ + "\2\u03b6\u03b7\7H\2\2\u03b7\u03b8\7K\2\2\u03b8\u03b9\7T\2\2\u03b9\u03ba"+ + "\7U\2\2\u03ba\u03bb\7V\2\2\u03bb\u008c\3\2\2\2\u03bc\u03bd\7H\2\2\u03bd"+ + "\u03be\7Q\2\2\u03be\u03bf\7N\2\2\u03bf\u03c0\7N\2\2\u03c0\u03c1\7Q\2\2"+ + "\u03c1\u03c2\7Y\2\2\u03c2\u03c3\7K\2\2\u03c3\u03c4\7P\2\2\u03c4\u03c5"+ + "\7I\2\2\u03c5\u008e\3\2\2\2\u03c6\u03c7\7H\2\2\u03c7\u03c8\7Q\2\2\u03c8"+ + "\u03c9\7T\2\2\u03c9\u0090\3\2\2\2\u03ca\u03cb\7H\2\2\u03cb\u03cc\7Q\2"+ + "\2\u03cc\u03cd\7T\2\2\u03cd\u03ce\7O\2\2\u03ce\u03cf\7C\2\2\u03cf\u03d0"+ + "\7V\2\2\u03d0\u0092\3\2\2\2\u03d1\u03d2\7H\2\2\u03d2\u03d3\7T\2\2\u03d3"+ + "\u03d4\7Q\2\2\u03d4\u03d5\7O\2\2\u03d5\u0094\3\2\2\2\u03d6\u03d7\7H\2"+ + "\2\u03d7\u03d8\7W\2\2\u03d8\u03d9\7N\2\2\u03d9\u03da\7N\2\2\u03da\u0096"+ + "\3\2\2\2\u03db\u03dc\7H\2\2\u03dc\u03dd\7W\2\2\u03dd\u03de\7P\2\2\u03de"+ + "\u03df\7E\2\2\u03df\u03e0\7V\2\2\u03e0\u03e1\7K\2\2\u03e1\u03e2\7Q\2\2"+ + "\u03e2\u03e3\7P\2\2\u03e3\u0098\3\2\2\2\u03e4\u03e5\7H\2\2\u03e5\u03e6"+ + "\7W\2\2\u03e6\u03e7\7P\2\2\u03e7\u03e8\7E\2\2\u03e8\u03e9\7V\2\2\u03e9"+ + "\u03ea\7K\2\2\u03ea\u03eb\7Q\2\2\u03eb\u03ec\7P\2\2\u03ec\u03ed\7U\2\2"+ + "\u03ed\u009a\3\2\2\2\u03ee\u03ef\7I\2\2\u03ef\u03f0\7T\2\2\u03f0\u03f1"+ + "\7C\2\2\u03f1\u03f2\7P\2\2\u03f2\u03f3\7V\2\2\u03f3\u009c\3\2\2\2\u03f4"+ + "\u03f5\7I\2\2\u03f5\u03f6\7T\2\2\u03f6\u03f7\7C\2\2\u03f7\u03f8\7P\2\2"+ + "\u03f8\u03f9\7V\2\2\u03f9\u03fa\7G\2\2\u03fa\u03fb\7F\2\2\u03fb\u009e"+ + "\3\2\2\2\u03fc\u03fd\7I\2\2\u03fd\u03fe\7T\2\2\u03fe\u03ff\7C\2\2\u03ff"+ + "\u0400\7P\2\2\u0400\u0401\7V\2\2\u0401\u0402\7U\2\2\u0402\u00a0\3\2\2"+ + "\2\u0403\u0404\7I\2\2\u0404\u0405\7T\2\2\u0405\u0406\7C\2\2\u0406\u0407"+ + "\7R\2\2\u0407\u0408\7J\2\2\u0408\u0409\7X\2\2\u0409\u040a\7K\2\2\u040a"+ + "\u040b\7\\\2\2\u040b\u00a2\3\2\2\2\u040c\u040d\7I\2\2\u040d\u040e\7T\2"+ + "\2\u040e\u040f\7Q\2\2\u040f\u0410\7W\2\2\u0410\u0411\7R\2\2\u0411\u00a4"+ + "\3\2\2\2\u0412\u0413\7I\2\2\u0413\u0414\7T\2\2\u0414\u0415\7Q\2\2\u0415"+ + "\u0416\7W\2\2\u0416\u0417\7R\2\2\u0417\u0418\7K\2\2\u0418\u0419\7P\2\2"+ + "\u0419\u041a\7I\2\2\u041a\u00a6\3\2\2\2\u041b\u041c\7J\2\2\u041c\u041d"+ + "\7C\2\2\u041d\u041e\7X\2\2\u041e\u041f\7K\2\2\u041f\u0420\7P\2\2\u0420"+ + "\u0421\7I\2\2\u0421\u00a8\3\2\2\2\u0422\u0423\7J\2\2\u0423\u0424\7Q\2"+ + "\2\u0424\u0425\7W\2\2\u0425\u0426\7T\2\2\u0426\u00aa\3\2\2\2\u0427\u0428"+ + "\7K\2\2\u0428\u0429\7H\2\2\u0429\u00ac\3\2\2\2\u042a\u042b\7K\2\2\u042b"+ + "\u042c\7I\2\2\u042c\u042d\7P\2\2\u042d\u042e\7Q\2\2\u042e\u042f\7T\2\2"+ + "\u042f\u0430\7G\2\2\u0430\u00ae\3\2\2\2\u0431\u0432\7K\2\2\u0432\u0433"+ + "\7P\2\2\u0433\u00b0\3\2\2\2\u0434\u0435\7K\2\2\u0435\u0436\7P\2\2\u0436"+ + "\u0437\7E\2\2\u0437\u0438\7N\2\2\u0438\u0439\7W\2\2\u0439\u043a\7F\2\2"+ + "\u043a\u043b\7K\2\2\u043b\u043c\7P\2\2\u043c\u043d\7I\2\2\u043d\u00b2"+ + "\3\2\2\2\u043e\u043f\7K\2\2\u043f\u0440\7P\2\2\u0440\u0441\7P\2\2\u0441"+ + "\u0442\7G\2\2\u0442\u0443\7T\2\2\u0443\u00b4\3\2\2\2\u0444\u0445\7K\2"+ + "\2\u0445\u0446\7P\2\2\u0446\u0447\7R\2\2\u0447\u0448\7W\2\2\u0448\u0449"+ + "\7V\2\2\u0449\u00b6\3\2\2\2\u044a\u044b\7K\2\2\u044b\u044c\7P\2\2\u044c"+ + "\u044d\7U\2\2\u044d\u044e\7G\2\2\u044e\u044f\7T\2\2\u044f\u0450\7V\2\2"+ + "\u0450\u00b8\3\2\2\2\u0451\u0452\7K\2\2\u0452\u0453\7P\2\2\u0453\u0454"+ + "\7V\2\2\u0454\u0455\7G\2\2\u0455\u0456\7T\2\2\u0456\u0457\7U\2\2\u0457"+ + "\u0458\7G\2\2\u0458\u0459\7E\2\2\u0459\u045a\7V\2\2\u045a\u00ba\3\2\2"+ + "\2\u045b\u045c\7K\2\2\u045c\u045d\7P\2\2\u045d\u045e\7V\2\2\u045e\u045f"+ + "\7G\2\2\u045f\u0460\7T\2\2\u0460\u0461\7X\2\2\u0461\u0462\7C\2\2\u0462"+ + "\u0463\7N\2\2\u0463\u00bc\3\2\2\2\u0464\u0465\7K\2\2\u0465\u0466\7P\2"+ + "\2\u0466\u0467\7V\2\2\u0467\u0468\7Q\2\2\u0468\u00be\3\2\2\2\u0469\u046a"+ + "\7K\2\2\u046a\u046b\7P\2\2\u046b\u046c\7X\2\2\u046c\u046d\7Q\2\2\u046d"+ + "\u046e\7M\2\2\u046e\u046f\7G\2\2\u046f\u0470\7T\2\2\u0470\u00c0\3\2\2"+ + "\2\u0471\u0472\7K\2\2\u0472\u0473\7Q\2\2\u0473\u00c2\3\2\2\2\u0474\u0475"+ + "\7K\2\2\u0475\u0476\7U\2\2\u0476\u00c4\3\2\2\2\u0477\u0478\7K\2\2\u0478"+ + "\u0479\7U\2\2\u0479\u047a\7Q\2\2\u047a\u047b\7N\2\2\u047b\u047c\7C\2\2"+ + "\u047c\u047d\7V\2\2\u047d\u047e\7K\2\2\u047e\u047f\7Q\2\2\u047f\u0480"+ + "\7P\2\2\u0480\u00c6\3\2\2\2\u0481\u0482\7L\2\2\u0482\u0483\7U\2\2\u0483"+ + "\u0484\7Q\2\2\u0484\u0485\7P\2\2\u0485\u00c8\3\2\2\2\u0486\u0487\7L\2"+ + "\2\u0487\u0488\7Q\2\2\u0488\u0489\7K\2\2\u0489\u048a\7P\2\2\u048a\u00ca"+ + "\3\2\2\2\u048b\u048c\7N\2\2\u048c\u048d\7C\2\2\u048d\u048e\7P\2\2\u048e"+ + "\u048f\7I\2\2\u048f\u0490\7W\2\2\u0490\u0491\7C\2\2\u0491\u0492\7I\2\2"+ + "\u0492\u0493\7G\2\2\u0493\u00cc\3\2\2\2\u0494\u0495\7N\2\2\u0495\u0496"+ + "\7C\2\2\u0496\u0497\7U\2\2\u0497\u0498\7V\2\2\u0498\u00ce\3\2\2\2\u0499"+ + "\u049a\7N\2\2\u049a\u049b\7C\2\2\u049b\u049c\7V\2\2\u049c\u049d\7G\2\2"+ + "\u049d\u049e\7T\2\2\u049e\u049f\7C\2\2\u049f\u04a0\7N\2\2\u04a0\u00d0"+ + "\3\2\2\2\u04a1\u04a2\7N\2\2\u04a2\u04a3\7G\2\2\u04a3\u04a4\7H\2\2\u04a4"+ + "\u04a5\7V\2\2\u04a5\u00d2\3\2\2\2\u04a6\u04a7\7N\2\2\u04a7\u04a8\7G\2"+ + "\2\u04a8\u04a9\7X\2\2\u04a9\u04aa\7G\2\2\u04aa\u04ab\7N\2\2\u04ab\u00d4"+ + "\3\2\2\2\u04ac\u04ad\7N\2\2\u04ad\u04ae\7K\2\2\u04ae\u04af\7M\2\2\u04af"+ + "\u04b0\7G\2\2\u04b0\u00d6\3\2\2\2\u04b1\u04b2\7N\2\2\u04b2\u04b3\7K\2"+ + "\2\u04b3\u04b4\7O\2\2\u04b4\u04b5\7K\2\2\u04b5\u04b6\7V\2\2\u04b6\u00d8"+ + "\3\2\2\2\u04b7\u04b8\7N\2\2\u04b8\u04b9\7Q\2\2\u04b9\u04ba\7E\2\2\u04ba"+ + "\u04bb\7C\2\2\u04bb\u04bc\7N\2\2\u04bc\u04bd\7V\2\2\u04bd\u04be\7K\2\2"+ + "\u04be\u04bf\7O\2\2\u04bf\u04c0\7G\2\2\u04c0\u00da\3\2\2\2\u04c1\u04c2"+ + "\7N\2\2\u04c2\u04c3\7Q\2\2\u04c3\u04c4\7E\2\2\u04c4\u04c5\7C\2\2\u04c5"+ + "\u04c6\7N\2\2\u04c6\u04c7\7V\2\2\u04c7\u04c8\7K\2\2\u04c8\u04c9\7O\2\2"+ + "\u04c9\u04ca\7G\2\2\u04ca\u04cb\7U\2\2\u04cb\u04cc\7V\2\2\u04cc\u04cd"+ + "\7C\2\2\u04cd\u04ce\7O\2\2\u04ce\u04cf\7R\2\2\u04cf\u00dc\3\2\2\2\u04d0"+ + "\u04d1\7N\2\2\u04d1\u04d2\7Q\2\2\u04d2\u04d3\7I\2\2\u04d3\u04d4\7K\2\2"+ + "\u04d4\u04d5\7E\2\2\u04d5\u04d6\7C\2\2\u04d6\u04d7\7N\2\2\u04d7\u00de"+ + "\3\2\2\2\u04d8\u04d9\7O\2\2\u04d9\u04da\7C\2\2\u04da\u04db\7R\2\2\u04db"+ + "\u00e0\3\2\2\2\u04dc\u04dd\7O\2\2\u04dd\u04de\7C\2\2\u04de\u04df\7V\2"+ + "\2\u04df\u04e0\7G\2\2\u04e0\u04e1\7T\2\2\u04e1\u04e2\7K\2\2\u04e2\u04e3"+ + "\7C\2\2\u04e3\u04e4\7N\2\2\u04e4\u04e5\7K\2\2\u04e5\u04e6\7\\\2\2\u04e6"+ + "\u04e7\7G\2\2\u04e7\u04e8\7F\2\2\u04e8\u00e2\3\2\2\2\u04e9\u04ea\7O\2"+ + "\2\u04ea\u04eb\7K\2\2\u04eb\u04ec\7P\2\2\u04ec\u04ed\7W\2\2\u04ed\u04ee"+ + "\7V\2\2\u04ee\u04ef\7G\2\2\u04ef\u00e4\3\2\2\2\u04f0\u04f1\7O\2\2\u04f1"+ + "\u04f2\7Q\2\2\u04f2\u04f3\7P\2\2\u04f3\u04f4\7V\2\2\u04f4\u04f5\7J\2\2"+ + "\u04f5\u00e6\3\2\2\2\u04f6\u04f7\7P\2\2\u04f7\u04f8\7C\2\2\u04f8\u04f9"+ + "\7O\2\2\u04f9\u04fa\7G\2\2\u04fa\u00e8\3\2\2\2\u04fb\u04fc\7P\2\2\u04fc"+ + "\u04fd\7C\2\2\u04fd\u04fe\7V\2\2\u04fe\u04ff\7W\2\2\u04ff\u0500\7T\2\2"+ + "\u0500\u0501\7C\2\2\u0501\u0502\7N\2\2\u0502\u00ea\3\2\2\2\u0503\u0504"+ + "\7P\2\2\u0504\u0505\7H\2\2\u0505\u0506\7E\2\2\u0506\u00ec\3\2\2\2\u0507"+ + "\u0508\7P\2\2\u0508\u0509\7H\2\2\u0509\u050a\7F\2\2\u050a\u00ee\3\2\2"+ + "\2\u050b\u050c\7P\2\2\u050c\u050d\7H\2\2\u050d\u050e\7M\2\2\u050e\u050f"+ + "\7E\2\2\u050f\u00f0\3\2\2\2\u0510\u0511\7P\2\2\u0511\u0512\7H\2\2\u0512"+ + "\u0513\7M\2\2\u0513\u0514\7F\2\2\u0514\u00f2\3\2\2\2\u0515\u0516\7P\2"+ + "\2\u0516\u0517\7Q\2\2\u0517\u00f4\3\2\2\2\u0518\u0519\7P\2\2\u0519\u051a"+ + "\7Q\2\2\u051a\u051b\7P\2\2\u051b\u051c\7G\2\2\u051c\u00f6\3\2\2\2\u051d"+ + "\u051e\7P\2\2\u051e\u051f\7Q\2\2\u051f\u0520\7T\2\2\u0520\u0521\7O\2\2"+ + "\u0521\u0522\7C\2\2\u0522\u0523\7N\2\2\u0523\u0524\7K\2\2\u0524\u0525"+ + "\7\\\2\2\u0525\u0526\7G\2\2\u0526\u00f8\3\2\2\2\u0527\u0528\7P\2\2\u0528"+ + "\u0529\7Q\2\2\u0529\u052a\7V\2\2\u052a\u00fa\3\2\2\2\u052b\u052c\7P\2"+ + "\2\u052c\u052d\7W\2\2\u052d\u052e\7N\2\2\u052e\u052f\7N\2\2\u052f\u00fc"+ + "\3\2\2\2\u0530\u0531\7P\2\2\u0531\u0532\7W\2\2\u0532\u0533\7N\2\2\u0533"+ + "\u0534\7N\2\2\u0534\u0535\7K\2\2\u0535\u0536\7H\2\2\u0536\u00fe\3\2\2"+ + "\2\u0537\u0538\7P\2\2\u0538\u0539\7W\2\2\u0539\u053a\7N\2\2\u053a\u053b"+ + "\7N\2\2\u053b\u053c\7U\2\2\u053c\u0100\3\2\2\2\u053d\u053e\7Q\2\2\u053e"+ + "\u053f\7H\2\2\u053f\u0540\7H\2\2\u0540\u0541\7U\2\2\u0541\u0542\7G\2\2"+ + "\u0542\u0543\7V\2\2\u0543\u0102\3\2\2\2\u0544\u0545\7Q\2\2\u0545\u0546"+ + "\7P\2\2\u0546\u0104\3\2\2\2\u0547\u0548\7Q\2\2\u0548\u0549\7P\2\2\u0549"+ + "\u054a\7N\2\2\u054a\u054b\7[\2\2\u054b\u0106\3\2\2\2\u054c\u054d\7Q\2"+ + "\2\u054d\u054e\7R\2\2\u054e\u054f\7V\2\2\u054f\u0550\7K\2\2\u0550\u0551"+ + "\7Q\2\2\u0551\u0552\7P\2\2\u0552\u0108\3\2\2\2\u0553\u0554\7Q\2\2\u0554"+ + "\u0555\7T\2\2\u0555\u010a\3\2\2\2\u0556\u0557\7Q\2\2\u0557\u0558\7T\2"+ + "\2\u0558\u0559\7F\2\2\u0559\u055a\7G\2\2\u055a\u055b\7T\2\2\u055b\u010c"+ + "\3\2\2\2\u055c\u055d\7Q\2\2\u055d\u055e\7T\2\2\u055e\u055f\7F\2\2\u055f"+ + "\u0560\7K\2\2\u0560\u0561\7P\2\2\u0561\u0562\7C\2\2\u0562\u0563\7N\2\2"+ + "\u0563\u0564\7K\2\2\u0564\u0565\7V\2\2\u0565\u0566\7[\2\2\u0566\u010e"+ + "\3\2\2\2\u0567\u0568\7Q\2\2\u0568\u0569\7W\2\2\u0569\u056a\7V\2\2\u056a"+ + "\u056b\7G\2\2\u056b\u056c\7T\2\2\u056c\u0110\3\2\2\2\u056d\u056e\7Q\2"+ + "\2\u056e\u056f\7W\2\2\u056f\u0570\7V\2\2\u0570\u0571\7R\2\2\u0571\u0572"+ + "\7W\2\2\u0572\u0573\7V\2\2\u0573\u0112\3\2\2\2\u0574\u0575\7Q\2\2\u0575"+ + "\u0576\7X\2\2\u0576\u0577\7G\2\2\u0577\u0578\7T\2\2\u0578\u0114\3\2\2"+ + "\2\u0579\u057a\7R\2\2\u057a\u057b\7C\2\2\u057b\u057c\7T\2\2\u057c\u057d"+ + "\7V\2\2\u057d\u057e\7K\2\2\u057e\u057f\7V\2\2\u057f\u0580\7K\2\2\u0580"+ + "\u0581\7Q\2\2\u0581\u0582\7P\2\2\u0582\u0116\3\2\2\2\u0583\u0584\7R\2"+ + "\2\u0584\u0585\7C\2\2\u0585\u0586\7T\2\2\u0586\u0587\7V\2\2\u0587\u0588"+ + "\7K\2\2\u0588\u0589\7V\2\2\u0589\u058a\7K\2\2\u058a\u058b\7Q\2\2\u058b"+ + "\u058c\7P\2\2\u058c\u058d\7U\2\2\u058d\u0118\3\2\2\2\u058e\u058f\7R\2"+ + "\2\u058f\u0590\7Q\2\2\u0590\u0591\7U\2\2\u0591\u0592\7K\2\2\u0592\u0593"+ + "\7V\2\2\u0593\u0594\7K\2\2\u0594\u0595\7Q\2\2\u0595\u0596\7P\2\2\u0596"+ + "\u011a\3\2\2\2\u0597\u0598\7R\2\2\u0598\u0599\7T\2\2\u0599\u059a\7G\2"+ + "\2\u059a\u059b\7E\2\2\u059b\u059c\7G\2\2\u059c\u059d\7F\2\2\u059d\u059e"+ + "\7K\2\2\u059e\u059f\7P\2\2\u059f\u05a0\7I\2\2\u05a0\u011c\3\2\2\2\u05a1"+ + "\u05a2\7R\2\2\u05a2\u05a3\7T\2\2\u05a3\u05a4\7G\2\2\u05a4\u05a5\7R\2\2"+ + "\u05a5\u05a6\7C\2\2\u05a6\u05a7\7T\2\2\u05a7\u05a8\7G\2\2\u05a8\u011e"+ + "\3\2\2\2\u05a9\u05aa\7R\2\2\u05aa\u05ab\7T\2\2\u05ab\u05ac\7K\2\2\u05ac"+ + "\u05ad\7X\2\2\u05ad\u05ae\7K\2\2\u05ae\u05af\7N\2\2\u05af\u05b0\7G\2\2"+ + "\u05b0\u05b1\7I\2\2\u05b1\u05b2\7G\2\2\u05b2\u05b3\7U\2\2\u05b3\u0120"+ + "\3\2\2\2\u05b4\u05b5\7R\2\2\u05b5\u05b6\7T\2\2\u05b6\u05b7\7Q\2\2\u05b7"+ + "\u05b8\7R\2\2\u05b8\u05b9\7G\2\2\u05b9\u05ba\7T\2\2\u05ba\u05bb\7V\2\2"+ + "\u05bb\u05bc\7K\2\2\u05bc\u05bd\7G\2\2\u05bd\u05be\7U\2\2\u05be\u0122"+ + "\3\2\2\2\u05bf\u05c0\7T\2\2\u05c0\u05c1\7C\2\2\u05c1\u05c2\7P\2\2\u05c2"+ + "\u05c3\7I\2\2\u05c3\u05c4\7G\2\2\u05c4\u0124\3\2\2\2\u05c5\u05c6\7T\2"+ + "\2\u05c6\u05c7\7G\2\2\u05c7\u05c8\7C\2\2\u05c8\u05c9\7F\2\2\u05c9\u0126"+ + "\3\2\2\2\u05ca\u05cb\7T\2\2\u05cb\u05cc\7G\2\2\u05cc\u05cd\7E\2\2\u05cd"+ + "\u05ce\7W\2\2\u05ce\u05cf\7T\2\2\u05cf\u05d0\7U\2\2\u05d0\u05d1\7K\2\2"+ + "\u05d1\u05d2\7X\2\2\u05d2\u05d3\7G\2\2\u05d3\u0128\3\2\2\2\u05d4\u05d5"+ + "\7T\2\2\u05d5\u05d6\7G\2\2\u05d6\u05d7\7H\2\2\u05d7\u05d8\7T\2\2\u05d8"+ + "\u05d9\7G\2\2\u05d9\u05da\7U\2\2\u05da\u05db\7J\2\2\u05db\u012a\3\2\2"+ + "\2\u05dc\u05dd\7T\2\2\u05dd\u05de\7G\2\2\u05de\u05df\7P\2\2\u05df\u05e0"+ + "\7C\2\2\u05e0\u05e1\7O\2\2\u05e1\u05e2\7G\2\2\u05e2\u012c\3\2\2\2\u05e3"+ + "\u05e4\7T\2\2\u05e4\u05e5\7G\2\2\u05e5\u05e6\7R\2\2\u05e6\u05e7\7G\2\2"+ + "\u05e7\u05e8\7C\2\2\u05e8\u05e9\7V\2\2\u05e9\u05ea\7C\2\2\u05ea\u05eb"+ + "\7D\2\2\u05eb\u05ec\7N\2\2\u05ec\u05ed\7G\2\2\u05ed\u012e\3\2\2\2\u05ee"+ + "\u05ef\7T\2\2\u05ef\u05f0\7G\2\2\u05f0\u05f1\7R\2\2\u05f1\u05f2\7N\2\2"+ + "\u05f2\u05f3\7C\2\2\u05f3\u05f4\7E\2\2\u05f4\u05f5\7G\2\2\u05f5\u0130"+ + "\3\2\2\2\u05f6\u05f7\7T\2\2\u05f7\u05f8\7G\2\2\u05f8\u05f9\7U\2\2\u05f9"+ + "\u05fa\7G\2\2\u05fa\u05fb\7V\2\2\u05fb\u0132\3\2\2\2\u05fc\u05fd\7T\2"+ + "\2\u05fd\u05fe\7G\2\2\u05fe\u05ff\7U\2\2\u05ff\u0600\7R\2\2\u0600\u0601"+ + "\7G\2\2\u0601\u0602\7E\2\2\u0602\u0603\7V\2\2\u0603\u0134\3\2\2\2\u0604"+ + "\u0605\7T\2\2\u0605\u0606\7G\2\2\u0606\u0607\7U\2\2\u0607\u0608\7V\2\2"+ + "\u0608\u0609\7T\2\2\u0609\u060a\7K\2\2\u060a\u060b\7E\2\2\u060b\u060c"+ + "\7V\2\2\u060c\u0136\3\2\2\2\u060d\u060e\7T\2\2\u060e\u060f\7G\2\2\u060f"+ + "\u0610\7V\2\2\u0610\u0611\7W\2\2\u0611\u0612\7T\2\2\u0612\u0613\7P\2\2"+ + "\u0613\u0138\3\2\2\2\u0614\u0615\7T\2\2\u0615\u0616\7G\2\2\u0616\u0617"+ + "\7V\2\2\u0617\u0618\7W\2\2\u0618\u0619\7T\2\2\u0619\u061a\7P\2\2\u061a"+ + "\u061b\7U\2\2\u061b\u013a\3\2\2\2\u061c\u061d\7T\2\2\u061d\u061e\7G\2"+ + "\2\u061e\u061f\7X\2\2\u061f\u0620\7Q\2\2\u0620\u0621\7M\2\2\u0621\u0622"+ + "\7G\2\2\u0622\u013c\3\2\2\2\u0623\u0624\7T\2\2\u0624\u0625\7K\2\2\u0625"+ + "\u0626\7I\2\2\u0626\u0627\7J\2\2\u0627\u0628\7V\2\2\u0628\u013e\3\2\2"+ + "\2\u0629\u062a\7T\2\2\u062a\u062b\7Q\2\2\u062b\u062c\7N\2\2\u062c\u062d"+ + "\7G\2\2\u062d\u0140\3\2\2\2\u062e\u062f\7T\2\2\u062f\u0630\7Q\2\2\u0630"+ + "\u0631\7N\2\2\u0631\u0632\7G\2\2\u0632\u0633\7U\2\2\u0633\u0142\3\2\2"+ + "\2\u0634\u0635\7T\2\2\u0635\u0636\7Q\2\2\u0636\u0637\7N\2\2\u0637\u0638"+ + "\7N\2\2\u0638\u0639\7D\2\2\u0639\u063a\7C\2\2\u063a\u063b\7E\2\2\u063b"+ + "\u063c\7M\2\2\u063c\u0144\3\2\2\2\u063d\u063e\7T\2\2\u063e\u063f\7Q\2"+ + "\2\u063f\u0640\7N\2\2\u0640\u0641\7N\2\2\u0641\u0642\7W\2\2\u0642\u0643"+ + "\7R\2\2\u0643\u0146\3\2\2\2\u0644\u0645\7T\2\2\u0645\u0646\7Q\2\2\u0646"+ + "\u0647\7Y\2\2\u0647\u0148\3\2\2\2\u0648\u0649\7T\2\2\u0649\u064a\7Q\2"+ + "\2\u064a\u064b\7Y\2\2\u064b\u064c\7U\2\2\u064c\u014a\3\2\2\2\u064d\u064e"+ + "\7U\2\2\u064e\u064f\7E\2\2\u064f\u0650\7J\2\2\u0650\u0651\7G\2\2\u0651"+ + "\u0652\7O\2\2\u0652\u0653\7C\2\2\u0653\u014c\3\2\2\2\u0654\u0655\7U\2"+ + "\2\u0655\u0656\7E\2\2\u0656\u0657\7J\2\2\u0657\u0658\7G\2\2\u0658\u0659"+ + "\7O\2\2\u0659\u065a\7C\2\2\u065a\u065b\7U\2\2\u065b\u014e\3\2\2\2\u065c"+ + "\u065d\7U\2\2\u065d\u065e\7G\2\2\u065e\u065f\7E\2\2\u065f\u0660\7Q\2\2"+ + "\u0660\u0661\7P\2\2\u0661\u0662\7F\2\2\u0662\u0150\3\2\2\2\u0663\u0664"+ + "\7U\2\2\u0664\u0665\7G\2\2\u0665\u0666\7E\2\2\u0666\u0667\7W\2\2\u0667"+ + "\u0668\7T\2\2\u0668\u0669\7K\2\2\u0669\u066a\7V\2\2\u066a\u066b\7[\2\2"+ + "\u066b\u0152\3\2\2\2\u066c\u066d\7U\2\2\u066d\u066e\7G\2\2\u066e\u066f"+ + "\7N\2\2\u066f\u0670\7G\2\2\u0670\u0671\7E\2\2\u0671\u0672\7V\2\2\u0672"+ + "\u0154\3\2\2\2\u0673\u0674\7U\2\2\u0674\u0675\7G\2\2\u0675\u0676\7T\2"+ + "\2\u0676\u0677\7K\2\2\u0677\u0678\7C\2\2\u0678\u0679\7N\2\2\u0679\u067a"+ + "\7K\2\2\u067a\u067b\7\\\2\2\u067b\u067c\7C\2\2\u067c\u067d\7D\2\2\u067d"+ + "\u067e\7N\2\2\u067e\u067f\7G\2\2\u067f\u0156\3\2\2\2\u0680\u0681\7U\2"+ + "\2\u0681\u0682\7G\2\2\u0682\u0683\7U\2\2\u0683\u0684\7U\2\2\u0684\u0685"+ + "\7K\2\2\u0685\u0686\7Q\2\2\u0686\u0687\7P\2\2\u0687\u0158\3\2\2\2\u0688"+ + "\u0689\7U\2\2\u0689\u068a\7G\2\2\u068a\u068b\7V\2\2\u068b\u015a\3\2\2"+ + "\2\u068c\u068d\7U\2\2\u068d\u068e\7G\2\2\u068e\u068f\7V\2\2\u068f\u0690"+ + "\7U\2\2\u0690\u015c\3\2\2\2\u0691\u0692\7U\2\2\u0692\u0693\7J\2\2\u0693"+ + "\u0694\7Q\2\2\u0694\u0695\7Y\2\2\u0695\u015e\3\2\2\2\u0696\u0697\7U\2"+ + "\2\u0697\u0698\7Q\2\2\u0698\u0699\7O\2\2\u0699\u069a\7G\2\2\u069a\u0160"+ + "\3\2\2\2\u069b\u069c\7U\2\2\u069c\u069d\7S\2\2\u069d\u069e\7N\2\2\u069e"+ + "\u0162\3\2\2\2\u069f\u06a0\7U\2\2\u06a0\u06a1\7V\2\2\u06a1\u06a2\7C\2"+ + "\2\u06a2\u06a3\7T\2\2\u06a3\u06a4\7V\2\2\u06a4\u0164\3\2\2\2\u06a5\u06a6"+ + "\7U\2\2\u06a6\u06a7\7V\2\2\u06a7\u06a8\7C\2\2\u06a8\u06a9\7V\2\2\u06a9"+ + "\u06aa\7U\2\2\u06aa\u0166\3\2\2\2\u06ab\u06ac\7U\2\2\u06ac\u06ad\7W\2"+ + "\2\u06ad\u06ae\7D\2\2\u06ae\u06af\7U\2\2\u06af\u06b0\7V\2\2\u06b0\u06b1"+ + "\7T\2\2\u06b1\u06b2\7K\2\2\u06b2\u06b3\7P\2\2\u06b3\u06b4\7I\2\2\u06b4"+ + "\u0168\3\2\2\2\u06b5\u06b6\7U\2\2\u06b6\u06b7\7[\2\2\u06b7\u06b8\7U\2"+ + "\2\u06b8\u06b9\7V\2\2\u06b9\u06ba\7G\2\2\u06ba\u06bb\7O\2\2\u06bb\u016a"+ + "\3\2\2\2\u06bc\u06bd\7V\2\2\u06bd\u06be\7C\2\2\u06be\u06bf\7D\2\2\u06bf"+ + "\u06c0\7N\2\2\u06c0\u06c1\7G\2\2\u06c1\u016c\3\2\2\2\u06c2\u06c3\7V\2"+ + "\2\u06c3\u06c4\7C\2\2\u06c4\u06c5\7D\2\2\u06c5\u06c6\7N\2\2\u06c6\u06c7"+ + "\7G\2\2\u06c7\u06c8\7U\2\2\u06c8\u016e\3\2\2\2\u06c9\u06ca\7V\2\2\u06ca"+ + "\u06cb\7C\2\2\u06cb\u06cc\7D\2\2\u06cc\u06cd\7N\2\2\u06cd\u06ce\7G\2\2"+ + "\u06ce\u06cf\7U\2\2\u06cf\u06d0\7C\2\2\u06d0\u06d1\7O\2\2\u06d1\u06d2"+ + "\7R\2\2\u06d2\u06d3\7N\2\2\u06d3\u06d4\7G\2\2\u06d4\u0170\3\2\2\2\u06d5"+ + "\u06d6\7V\2\2\u06d6\u06d7\7G\2\2\u06d7\u06d8\7O\2\2\u06d8\u06d9\7R\2\2"+ + "\u06d9\u06da\7Q\2\2\u06da\u06db\7T\2\2\u06db\u06dc\7C\2\2\u06dc\u06dd"+ + "\7T\2\2\u06dd\u06de\7[\2\2\u06de\u0172\3\2\2\2\u06df\u06e0\7V\2\2\u06e0"+ + "\u06e1\7G\2\2\u06e1\u06e2\7Z\2\2\u06e2\u06e3\7V\2\2\u06e3\u0174\3\2\2"+ + "\2\u06e4\u06e5\7V\2\2\u06e5\u06e6\7J\2\2\u06e6\u06e7\7G\2\2\u06e7\u06e8"+ + "\7P\2\2\u06e8\u0176\3\2\2\2\u06e9\u06ea\7V\2\2\u06ea\u06eb\7K\2\2\u06eb"+ + "\u06ec\7O\2\2\u06ec\u06ed\7G\2\2\u06ed\u0178\3\2\2\2\u06ee\u06ef\7V\2"+ + "\2\u06ef\u06f0\7K\2\2\u06f0\u06f1\7O\2\2\u06f1\u06f2\7G\2\2\u06f2\u06f3"+ + "\7U\2\2\u06f3\u06f4\7V\2\2\u06f4\u06f5\7C\2\2\u06f5\u06f6\7O\2\2\u06f6"+ + "\u06f7\7R\2\2\u06f7\u017a\3\2\2\2\u06f8\u06f9\7V\2\2\u06f9\u06fa\7Q\2"+ + "\2\u06fa\u017c\3\2\2\2\u06fb\u06fc\7V\2\2\u06fc\u06fd\7T\2\2\u06fd\u06fe"+ + "\7C\2\2\u06fe\u06ff\7P\2\2\u06ff\u0700\7U\2\2\u0700\u0701\7C\2\2\u0701"+ + "\u0702\7E\2\2\u0702\u0703\7V\2\2\u0703\u0704\7K\2\2\u0704\u0705\7Q\2\2"+ + "\u0705\u0706\7P\2\2\u0706\u017e\3\2\2\2\u0707\u0708\7V\2\2\u0708\u0709"+ + "\7T\2\2\u0709\u070a\7W\2\2\u070a\u070b\7G\2\2\u070b\u0180\3\2\2\2\u070c"+ + "\u070d\7V\2\2\u070d\u070e\7T\2\2\u070e\u070f\7[\2\2\u070f\u0710\7a\2\2"+ + "\u0710\u0711\7E\2\2\u0711\u0712\7C\2\2\u0712\u0713\7U\2\2\u0713\u0714"+ + "\7V\2\2\u0714\u0182\3\2\2\2\u0715\u0716\7V\2\2\u0716\u0717\7[\2\2\u0717"+ + "\u0718\7R\2\2\u0718\u0719\7G\2\2\u0719\u0184\3\2\2\2\u071a\u071b\7W\2"+ + "\2\u071b\u071c\7G\2\2\u071c\u071d\7U\2\2\u071d\u071e\7E\2\2\u071e\u071f"+ + "\7C\2\2\u071f\u0720\7R\2\2\u0720\u0721\7G\2\2\u0721\u0186\3\2\2\2\u0722"+ + "\u0723\7W\2\2\u0723\u0724\7P\2\2\u0724\u0725\7D\2\2\u0725\u0726\7Q\2\2"+ + "\u0726\u0727\7W\2\2\u0727\u0728\7P\2\2\u0728\u0729\7F\2\2\u0729\u072a"+ + "\7G\2\2\u072a\u072b\7F\2\2\u072b\u0188\3\2\2\2\u072c\u072d\7W\2\2\u072d"+ + "\u072e\7P\2\2\u072e\u072f\7E\2\2\u072f\u0730\7Q\2\2\u0730\u0731\7O\2\2"+ + "\u0731\u0732\7O\2\2\u0732\u0733\7K\2\2\u0733\u0734\7V\2\2\u0734\u0735"+ + "\7V\2\2\u0735\u0736\7G\2\2\u0736\u0737\7F\2\2\u0737\u018a\3\2\2\2\u0738"+ + "\u0739\7W\2\2\u0739\u073a\7P\2\2\u073a\u073b\7K\2\2\u073b\u073c\7Q\2\2"+ + "\u073c\u073d\7P\2\2\u073d\u018c\3\2\2\2\u073e\u073f\7W\2\2\u073f\u0740"+ + "\7P\2\2\u0740\u0741\7P\2\2\u0741\u0742\7G\2\2\u0742\u0743\7U\2\2\u0743"+ + "\u0744\7V\2\2\u0744\u018e\3\2\2\2\u0745\u0746\7W\2\2\u0746\u0747\7U\2"+ + "\2\u0747\u0748\7G\2\2\u0748\u0190\3\2\2\2\u0749\u074a\7W\2\2\u074a\u074b"+ + "\7U\2\2\u074b\u074c\7G\2\2\u074c\u074d\7T\2\2\u074d\u0192\3\2\2\2\u074e"+ + "\u074f\7W\2\2\u074f\u0750\7U\2\2\u0750\u0751\7K\2\2\u0751\u0752\7P\2\2"+ + "\u0752\u0753\7I\2\2\u0753\u0194\3\2\2\2\u0754\u0755\7X\2\2\u0755\u0756"+ + "\7C\2\2\u0756\u0757\7N\2\2\u0757\u0758\7K\2\2\u0758\u0759\7F\2\2\u0759"+ + "\u075a\7C\2\2\u075a\u075b\7V\2\2\u075b\u075c\7G\2\2\u075c\u0196\3\2\2"+ + "\2\u075d\u075e\7X\2\2\u075e\u075f\7C\2\2\u075f\u0760\7N\2\2\u0760\u0761"+ + "\7W\2\2\u0761\u0762\7G\2\2\u0762\u0763\7U\2\2\u0763\u0198\3\2\2\2\u0764"+ + "\u0765\7X\2\2\u0765\u0766\7G\2\2\u0766\u0767\7T\2\2\u0767\u0768\7D\2\2"+ + "\u0768\u0769\7Q\2\2\u0769\u076a\7U\2\2\u076a\u076b\7G\2\2\u076b\u019a"+ + "\3\2\2\2\u076c\u076d\7X\2\2\u076d\u076e\7K\2\2\u076e\u076f\7G\2\2\u076f"+ + "\u0770\7Y\2\2\u0770\u019c\3\2\2\2\u0771\u0772\7Y\2\2\u0772\u0773\7J\2"+ + "\2\u0773\u0774\7G\2\2\u0774\u0775\7P\2\2\u0775\u019e\3\2\2\2\u0776\u0777"+ + "\7Y\2\2\u0777\u0778\7J\2\2\u0778\u0779\7G\2\2\u0779\u077a\7T\2\2\u077a"+ + "\u077b\7G\2\2\u077b\u01a0\3\2\2\2\u077c\u077d\7Y\2\2\u077d\u077e\7K\2"+ + "\2\u077e\u077f\7V\2\2\u077f\u0780\7J\2\2\u0780\u01a2\3\2\2\2\u0781\u0782"+ + "\7Y\2\2\u0782\u0783\7Q\2\2\u0783\u0784\7T\2\2\u0784\u0785\7M\2\2\u0785"+ + "\u01a4\3\2\2\2\u0786\u0787\7Y\2\2\u0787\u0788\7T\2\2\u0788\u0789\7K\2"+ + "\2\u0789\u078a\7V\2\2\u078a\u078b\7G\2\2\u078b\u01a6\3\2\2\2\u078c\u078d"+ + "\7[\2\2\u078d\u078e\7G\2\2\u078e\u078f\7C\2\2\u078f\u0790\7T\2\2\u0790"+ + "\u01a8\3\2\2\2\u0791\u0792\7\\\2\2\u0792\u0793\7Q\2\2\u0793\u0794\7P\2"+ + "\2\u0794\u0795\7G\2\2\u0795\u01aa\3\2\2\2\u0796\u0797\7?\2\2\u0797\u01ac"+ + "\3\2\2\2\u0798\u0799\7>\2\2\u0799\u079d\7@\2\2\u079a\u079b\7#\2\2\u079b"+ + "\u079d\7?\2\2\u079c\u0798\3\2\2\2\u079c\u079a\3\2\2\2\u079d\u01ae\3\2"+ + "\2\2\u079e\u079f\7>\2\2\u079f\u01b0\3\2\2\2\u07a0\u07a1\7>\2\2\u07a1\u07a2"+ + "\7?\2\2\u07a2\u01b2\3\2\2\2\u07a3\u07a4\7@\2\2\u07a4\u01b4\3\2\2\2\u07a5"+ + "\u07a6\7@\2\2\u07a6\u07a7\7?\2\2\u07a7\u01b6\3\2\2\2\u07a8\u07a9\7-\2"+ + "\2\u07a9\u01b8\3\2\2\2\u07aa\u07ab\7/\2\2\u07ab\u01ba\3\2\2\2\u07ac\u07ad"+ + "\7,\2\2\u07ad\u01bc\3\2\2\2\u07ae\u07af\7\61\2\2\u07af\u01be\3\2\2\2\u07b0"+ + "\u07b1\7\'\2\2\u07b1\u01c0\3\2\2\2\u07b2\u07b3\7~\2\2\u07b3\u07b4\7~\2"+ + "\2\u07b4\u01c2\3\2\2\2\u07b5\u07bb\7)\2\2\u07b6\u07ba\n\2\2\2\u07b7\u07b8"+ + "\7)\2\2\u07b8\u07ba\7)\2\2\u07b9\u07b6\3\2\2\2\u07b9\u07b7\3\2\2\2\u07ba"+ + "\u07bd\3\2\2\2\u07bb\u07b9\3\2\2\2\u07bb\u07bc\3\2\2\2\u07bc\u07be\3\2"+ + "\2\2\u07bd\u07bb\3\2\2\2\u07be\u07bf\7)\2\2\u07bf\u01c4\3\2\2\2\u07c0"+ + "\u07c1\7W\2\2\u07c1\u07c2\7(\2\2\u07c2\u07c3\7)\2\2\u07c3\u07c9\3\2\2"+ + "\2\u07c4\u07c8\n\2\2\2\u07c5\u07c6\7)\2\2\u07c6\u07c8\7)\2\2\u07c7\u07c4"+ + "\3\2\2\2\u07c7\u07c5\3\2\2\2\u07c8\u07cb\3\2\2\2\u07c9\u07c7\3\2\2\2\u07c9"+ + "\u07ca\3\2\2\2\u07ca\u07cc\3\2\2\2\u07cb\u07c9\3\2\2\2\u07cc\u07cd\7)"+ + "\2\2\u07cd\u01c6\3\2\2\2\u07ce\u07cf\7Z\2\2\u07cf\u07d0\7)\2\2\u07d0\u07d4"+ + "\3\2\2\2\u07d1\u07d3\n\2\2\2\u07d2\u07d1\3\2\2\2\u07d3\u07d6\3\2\2\2\u07d4"+ + "\u07d2\3\2\2\2\u07d4\u07d5\3\2\2\2\u07d5\u07d7\3\2\2\2\u07d6\u07d4\3\2"+ + "\2\2\u07d7\u07d8\7)\2\2\u07d8\u01c8\3\2\2\2\u07d9\u07db\5\u01df\u00f0"+ + "\2\u07da\u07d9\3\2\2\2\u07db\u07dc\3\2\2\2\u07dc\u07da\3\2\2\2\u07dc\u07dd"+ + "\3\2\2\2\u07dd\u01ca\3\2\2\2\u07de\u07e0\5\u01df\u00f0\2\u07df\u07de\3"+ + "\2\2\2\u07e0\u07e1\3\2\2\2\u07e1\u07df\3\2\2\2\u07e1\u07e2\3\2\2\2\u07e2"+ + "\u07e3\3\2\2\2\u07e3\u07e7\7\60\2\2\u07e4\u07e6\5\u01df\u00f0\2\u07e5"+ + "\u07e4\3\2\2\2\u07e6\u07e9\3\2\2\2\u07e7\u07e5\3\2\2\2\u07e7\u07e8\3\2"+ + "\2\2\u07e8\u07f1\3\2\2\2\u07e9\u07e7\3\2\2\2\u07ea\u07ec\7\60\2\2\u07eb"+ + "\u07ed\5\u01df\u00f0\2\u07ec\u07eb\3\2\2\2\u07ed\u07ee\3\2\2\2\u07ee\u07ec"+ + "\3\2\2\2\u07ee\u07ef\3\2\2\2\u07ef\u07f1\3\2\2\2\u07f0\u07df\3\2\2\2\u07f0"+ + "\u07ea\3\2\2\2\u07f1\u01cc\3\2\2\2\u07f2\u07f4\5\u01df\u00f0\2\u07f3\u07f2"+ + "\3\2\2\2\u07f4\u07f5\3\2\2\2\u07f5\u07f3\3\2\2\2\u07f5\u07f6\3\2\2\2\u07f6"+ + "\u07fe\3\2\2\2\u07f7\u07fb\7\60\2\2\u07f8\u07fa\5\u01df\u00f0\2\u07f9"+ + "\u07f8\3\2\2\2\u07fa\u07fd\3\2\2\2\u07fb\u07f9\3\2\2\2\u07fb\u07fc\3\2"+ + "\2\2\u07fc\u07ff\3\2\2\2\u07fd\u07fb\3\2\2\2\u07fe\u07f7\3\2\2\2\u07fe"+ + "\u07ff\3\2\2\2\u07ff\u0800\3\2\2\2\u0800\u0801\5\u01dd\u00ef\2\u0801\u080b"+ + "\3\2\2\2\u0802\u0804\7\60\2\2\u0803\u0805\5\u01df\u00f0\2\u0804\u0803"+ + "\3\2\2\2\u0805\u0806\3\2\2\2\u0806\u0804\3\2\2\2\u0806\u0807\3\2\2\2\u0807"+ + "\u0808\3\2\2\2\u0808\u0809\5\u01dd\u00ef\2\u0809\u080b\3\2\2\2\u080a\u07f3"+ + "\3\2\2\2\u080a\u0802\3\2\2\2\u080b\u01ce\3\2\2\2\u080c\u080f\5\u01e1\u00f1"+ + "\2\u080d\u080f\7a\2\2\u080e\u080c\3\2\2\2\u080e\u080d\3\2\2\2\u080f\u0815"+ + "\3\2\2\2\u0810\u0814\5\u01e1\u00f1\2\u0811\u0814\5\u01df\u00f0\2\u0812"+ + "\u0814\t\3\2\2\u0813\u0810\3\2\2\2\u0813\u0811\3\2\2\2\u0813\u0812\3\2"+ + "\2\2\u0814\u0817\3\2\2\2\u0815\u0813\3\2\2\2\u0815\u0816\3\2\2\2\u0816"+ + "\u01d0\3\2\2\2\u0817\u0815\3\2\2\2\u0818\u081c\5\u01df\u00f0\2\u0819\u081d"+ + "\5\u01e1\u00f1\2\u081a\u081d\5\u01df\u00f0\2\u081b\u081d\t\3\2\2\u081c"+ + "\u0819\3\2\2\2\u081c\u081a\3\2\2\2\u081c\u081b\3\2\2\2\u081d\u081e\3\2"+ + "\2\2\u081e\u081c\3\2\2\2\u081e\u081f\3\2\2\2\u081f\u01d2\3\2\2\2\u0820"+ + "\u0826\7$\2\2\u0821\u0825\n\4\2\2\u0822\u0823\7$\2\2\u0823\u0825\7$\2"+ + "\2\u0824\u0821\3\2\2\2\u0824\u0822\3\2\2\2\u0825\u0828\3\2\2\2\u0826\u0824"+ + "\3\2\2\2\u0826\u0827\3\2\2\2\u0827\u0829\3\2\2\2\u0828\u0826\3\2\2\2\u0829"+ + "\u082a\7$\2\2\u082a\u01d4\3\2\2\2\u082b\u0831\7b\2\2\u082c\u0830\n\5\2"+ + "\2\u082d\u082e\7b\2\2\u082e\u0830\7b\2\2\u082f\u082c\3\2\2\2\u082f\u082d"+ + "\3\2\2\2\u0830\u0833\3\2\2\2\u0831\u082f\3\2\2\2\u0831\u0832\3\2\2\2\u0832"+ + "\u0834\3\2\2\2\u0833\u0831\3\2\2\2\u0834\u0835\7b\2\2\u0835\u01d6\3\2"+ + "\2\2\u0836\u0837\7V\2\2\u0837\u0838\7K\2\2\u0838\u0839\7O\2\2\u0839\u083a"+ + "\7G\2\2\u083a\u083b\3\2\2\2\u083b\u083c\5\u01e7\u00f4\2\u083c\u083d\7"+ + "Y\2\2\u083d\u083e\7K\2\2\u083e\u083f\7V\2\2\u083f\u0840\7J\2\2\u0840\u0841"+ + "\3\2\2\2\u0841\u0842\5\u01e7\u00f4\2\u0842\u0843\7V\2\2\u0843\u0844\7"+ + "K\2\2\u0844\u0845\7O\2\2\u0845\u0846\7G\2\2\u0846\u0847\3\2\2\2\u0847"+ + "\u0848\5\u01e7\u00f4\2\u0848\u0849\7\\\2\2\u0849\u084a\7Q\2\2\u084a\u084b"+ + "\7P\2\2\u084b\u084c\7G\2\2\u084c\u01d8\3\2\2\2\u084d\u084e\7V\2\2\u084e"+ + "\u084f\7K\2\2\u084f\u0850\7O\2\2\u0850\u0851\7G\2\2\u0851\u0852\7U\2\2"+ + "\u0852\u0853\7V\2\2\u0853\u0854\7C\2\2\u0854\u0855\7O\2\2\u0855\u0856"+ + "\7R\2\2\u0856\u0857\3\2\2\2\u0857\u0858\5\u01e7\u00f4\2\u0858\u0859\7"+ + "Y\2\2\u0859\u085a\7K\2\2\u085a\u085b\7V\2\2\u085b\u085c\7J\2\2\u085c\u085d"+ + "\3\2\2\2\u085d\u085e\5\u01e7\u00f4\2\u085e\u085f\7V\2\2\u085f\u0860\7"+ + "K\2\2\u0860\u0861\7O\2\2\u0861\u0862\7G\2\2\u0862\u0863\3\2\2\2\u0863"+ + "\u0864\5\u01e7\u00f4\2\u0864\u0865\7\\\2\2\u0865\u0866\7Q\2\2\u0866\u0867"+ + "\7P\2\2\u0867\u0868\7G\2\2\u0868\u01da\3\2\2\2\u0869\u086a\7F\2\2\u086a"+ + "\u086b\7Q\2\2\u086b\u086c\7W\2\2\u086c\u086d\7D\2\2\u086d\u086e\7N\2\2"+ + "\u086e\u086f\7G\2\2\u086f\u0870\3\2\2\2\u0870\u0871\5\u01e7\u00f4\2\u0871"+ + "\u0872\7R\2\2\u0872\u0873\7T\2\2\u0873\u0874\7G\2\2\u0874\u0875\7E\2\2"+ + "\u0875\u0876\7K\2\2\u0876\u0877\7U\2\2\u0877\u0878\7K\2\2\u0878\u0879"+ + "\7Q\2\2\u0879\u087a\7P\2\2\u087a\u01dc\3\2\2\2\u087b\u087d\7G\2\2\u087c"+ + "\u087e\t\6\2\2\u087d\u087c\3\2\2\2\u087d\u087e\3\2\2\2\u087e\u0880\3\2"+ + "\2\2\u087f\u0881\5\u01df\u00f0\2\u0880\u087f\3\2\2\2\u0881\u0882\3\2\2"+ + "\2\u0882\u0880\3\2\2\2\u0882\u0883\3\2\2\2\u0883\u01de\3\2\2\2\u0884\u0885"+ + "\t\7\2\2\u0885\u01e0\3\2\2\2\u0886\u0887\t\b\2\2\u0887\u01e2\3\2\2\2\u0888"+ + "\u0889\7/\2\2\u0889\u088a\7/\2\2\u088a\u088e\3\2\2\2\u088b\u088d\n\t\2"+ + "\2\u088c\u088b\3\2\2\2\u088d\u0890\3\2\2\2\u088e\u088c\3\2\2\2\u088e\u088f"+ + "\3\2\2\2\u088f\u0892\3\2\2\2\u0890\u088e\3\2\2\2\u0891\u0893\7\17\2\2"+ + "\u0892\u0891\3\2\2\2\u0892\u0893\3\2\2\2\u0893\u0895\3\2\2\2\u0894\u0896"+ + "\7\f\2\2\u0895\u0894\3\2\2\2\u0895\u0896\3\2\2\2\u0896\u0897\3\2\2\2\u0897"+ + "\u0898\b\u00f2\2\2\u0898\u01e4\3\2\2\2\u0899\u089a\7\61\2\2\u089a\u089b"+ + "\7,\2\2\u089b\u089f\3\2\2\2\u089c\u089e\13\2\2\2\u089d\u089c\3\2\2\2\u089e"+ + "\u08a1\3\2\2\2\u089f\u08a0\3\2\2\2\u089f\u089d\3\2\2\2\u08a0\u08a2\3\2"+ + "\2\2\u08a1\u089f\3\2\2\2\u08a2\u08a3\7,\2\2\u08a3\u08a4\7\61\2\2\u08a4"+ + "\u08a5\3\2\2\2\u08a5\u08a6\b\u00f3\2\2\u08a6\u01e6\3\2\2\2\u08a7\u08a9"+ + "\t\n\2\2\u08a8\u08a7\3\2\2\2\u08a9\u08aa\3\2\2\2\u08aa\u08a8\3\2\2\2\u08aa"+ + "\u08ab\3\2\2\2\u08ab\u08ac\3\2\2\2\u08ac\u08ad\b\u00f4\2\2\u08ad\u01e8"+ + "\3\2\2\2\u08ae\u08af\13\2\2\2\u08af\u01ea\3\2\2\2#\2\u079c\u07b9\u07bb"+ + "\u07c7\u07c9\u07d4\u07dc\u07e1\u07e7\u07ee\u07f0\u07f5\u07fb\u07fe\u0806"+ + "\u080a\u080e\u0813\u0815\u081c\u081e\u0824\u0826\u082f\u0831\u087d\u0882"+ + "\u088e\u0892\u0895\u089f\u08aa\3\2\3\2"; + public static final ATN _ATN = + new ATNDeserializer().deserialize(_serializedATN.toCharArray()); + static { + _decisionToDFA = new DFA[_ATN.getNumberOfDecisions()]; + for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) { + _decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/github/bigdata/sql/antlr4/presto/PrestoSqlListener.java b/src/main/java/com/github/bigdata/sql/antlr4/presto/PrestoSqlListener.java new file mode 100644 index 0000000..d403528 --- /dev/null +++ b/src/main/java/com/github/bigdata/sql/antlr4/presto/PrestoSqlListener.java @@ -0,0 +1,2372 @@ +// Generated from com/github/bigdata/sql/antlr4/presto/PrestoSql.g4 by ANTLR 4.7 +package com.github.bigdata.sql.antlr4.presto; +import org.antlr.v4.runtime.tree.ParseTreeListener; + +/** + * This interface defines a complete listener for a parse tree produced by + * {@link PrestoSqlParser}. + */ +public interface PrestoSqlListener extends ParseTreeListener { + /** + * Enter a parse tree produced by {@link PrestoSqlParser#singleStatement}. + * @param ctx the parse tree + */ + void enterSingleStatement(PrestoSqlParser.SingleStatementContext ctx); + /** + * Exit a parse tree produced by {@link PrestoSqlParser#singleStatement}. + * @param ctx the parse tree + */ + void exitSingleStatement(PrestoSqlParser.SingleStatementContext ctx); + /** + * Enter a parse tree produced by {@link PrestoSqlParser#standaloneExpression}. + * @param ctx the parse tree + */ + void enterStandaloneExpression(PrestoSqlParser.StandaloneExpressionContext ctx); + /** + * Exit a parse tree produced by {@link PrestoSqlParser#standaloneExpression}. + * @param ctx the parse tree + */ + void exitStandaloneExpression(PrestoSqlParser.StandaloneExpressionContext ctx); + /** + * Enter a parse tree produced by {@link PrestoSqlParser#standaloneRoutineBody}. + * @param ctx the parse tree + */ + void enterStandaloneRoutineBody(PrestoSqlParser.StandaloneRoutineBodyContext ctx); + /** + * Exit a parse tree produced by {@link PrestoSqlParser#standaloneRoutineBody}. + * @param ctx the parse tree + */ + void exitStandaloneRoutineBody(PrestoSqlParser.StandaloneRoutineBodyContext ctx); + /** + * Enter a parse tree produced by the {@code statementDefault} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void enterStatementDefault(PrestoSqlParser.StatementDefaultContext ctx); + /** + * Exit a parse tree produced by the {@code statementDefault} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void exitStatementDefault(PrestoSqlParser.StatementDefaultContext ctx); + /** + * Enter a parse tree produced by the {@code use} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void enterUse(PrestoSqlParser.UseContext ctx); + /** + * Exit a parse tree produced by the {@code use} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void exitUse(PrestoSqlParser.UseContext ctx); + /** + * Enter a parse tree produced by the {@code createSchema} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void enterCreateSchema(PrestoSqlParser.CreateSchemaContext ctx); + /** + * Exit a parse tree produced by the {@code createSchema} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void exitCreateSchema(PrestoSqlParser.CreateSchemaContext ctx); + /** + * Enter a parse tree produced by the {@code dropSchema} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void enterDropSchema(PrestoSqlParser.DropSchemaContext ctx); + /** + * Exit a parse tree produced by the {@code dropSchema} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void exitDropSchema(PrestoSqlParser.DropSchemaContext ctx); + /** + * Enter a parse tree produced by the {@code renameSchema} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void enterRenameSchema(PrestoSqlParser.RenameSchemaContext ctx); + /** + * Exit a parse tree produced by the {@code renameSchema} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void exitRenameSchema(PrestoSqlParser.RenameSchemaContext ctx); + /** + * Enter a parse tree produced by the {@code createTableAsSelect} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void enterCreateTableAsSelect(PrestoSqlParser.CreateTableAsSelectContext ctx); + /** + * Exit a parse tree produced by the {@code createTableAsSelect} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void exitCreateTableAsSelect(PrestoSqlParser.CreateTableAsSelectContext ctx); + /** + * Enter a parse tree produced by the {@code createTable} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void enterCreateTable(PrestoSqlParser.CreateTableContext ctx); + /** + * Exit a parse tree produced by the {@code createTable} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void exitCreateTable(PrestoSqlParser.CreateTableContext ctx); + /** + * Enter a parse tree produced by the {@code dropTable} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void enterDropTable(PrestoSqlParser.DropTableContext ctx); + /** + * Exit a parse tree produced by the {@code dropTable} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void exitDropTable(PrestoSqlParser.DropTableContext ctx); + /** + * Enter a parse tree produced by the {@code insertInto} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void enterInsertInto(PrestoSqlParser.InsertIntoContext ctx); + /** + * Exit a parse tree produced by the {@code insertInto} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void exitInsertInto(PrestoSqlParser.InsertIntoContext ctx); + /** + * Enter a parse tree produced by the {@code delete} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void enterDelete(PrestoSqlParser.DeleteContext ctx); + /** + * Exit a parse tree produced by the {@code delete} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void exitDelete(PrestoSqlParser.DeleteContext ctx); + /** + * Enter a parse tree produced by the {@code renameTable} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void enterRenameTable(PrestoSqlParser.RenameTableContext ctx); + /** + * Exit a parse tree produced by the {@code renameTable} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void exitRenameTable(PrestoSqlParser.RenameTableContext ctx); + /** + * Enter a parse tree produced by the {@code renameColumn} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void enterRenameColumn(PrestoSqlParser.RenameColumnContext ctx); + /** + * Exit a parse tree produced by the {@code renameColumn} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void exitRenameColumn(PrestoSqlParser.RenameColumnContext ctx); + /** + * Enter a parse tree produced by the {@code dropColumn} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void enterDropColumn(PrestoSqlParser.DropColumnContext ctx); + /** + * Exit a parse tree produced by the {@code dropColumn} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void exitDropColumn(PrestoSqlParser.DropColumnContext ctx); + /** + * Enter a parse tree produced by the {@code addColumn} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void enterAddColumn(PrestoSqlParser.AddColumnContext ctx); + /** + * Exit a parse tree produced by the {@code addColumn} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void exitAddColumn(PrestoSqlParser.AddColumnContext ctx); + /** + * Enter a parse tree produced by the {@code analyze} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void enterAnalyze(PrestoSqlParser.AnalyzeContext ctx); + /** + * Exit a parse tree produced by the {@code analyze} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void exitAnalyze(PrestoSqlParser.AnalyzeContext ctx); + /** + * Enter a parse tree produced by the {@code createType} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void enterCreateType(PrestoSqlParser.CreateTypeContext ctx); + /** + * Exit a parse tree produced by the {@code createType} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void exitCreateType(PrestoSqlParser.CreateTypeContext ctx); + /** + * Enter a parse tree produced by the {@code createView} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void enterCreateView(PrestoSqlParser.CreateViewContext ctx); + /** + * Exit a parse tree produced by the {@code createView} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void exitCreateView(PrestoSqlParser.CreateViewContext ctx); + /** + * Enter a parse tree produced by the {@code dropView} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void enterDropView(PrestoSqlParser.DropViewContext ctx); + /** + * Exit a parse tree produced by the {@code dropView} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void exitDropView(PrestoSqlParser.DropViewContext ctx); + /** + * Enter a parse tree produced by the {@code createMaterializedView} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void enterCreateMaterializedView(PrestoSqlParser.CreateMaterializedViewContext ctx); + /** + * Exit a parse tree produced by the {@code createMaterializedView} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void exitCreateMaterializedView(PrestoSqlParser.CreateMaterializedViewContext ctx); + /** + * Enter a parse tree produced by the {@code dropMaterializedView} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void enterDropMaterializedView(PrestoSqlParser.DropMaterializedViewContext ctx); + /** + * Exit a parse tree produced by the {@code dropMaterializedView} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void exitDropMaterializedView(PrestoSqlParser.DropMaterializedViewContext ctx); + /** + * Enter a parse tree produced by the {@code refreshMaterializedView} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void enterRefreshMaterializedView(PrestoSqlParser.RefreshMaterializedViewContext ctx); + /** + * Exit a parse tree produced by the {@code refreshMaterializedView} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void exitRefreshMaterializedView(PrestoSqlParser.RefreshMaterializedViewContext ctx); + /** + * Enter a parse tree produced by the {@code createFunction} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void enterCreateFunction(PrestoSqlParser.CreateFunctionContext ctx); + /** + * Exit a parse tree produced by the {@code createFunction} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void exitCreateFunction(PrestoSqlParser.CreateFunctionContext ctx); + /** + * Enter a parse tree produced by the {@code alterFunction} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void enterAlterFunction(PrestoSqlParser.AlterFunctionContext ctx); + /** + * Exit a parse tree produced by the {@code alterFunction} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void exitAlterFunction(PrestoSqlParser.AlterFunctionContext ctx); + /** + * Enter a parse tree produced by the {@code dropFunction} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void enterDropFunction(PrestoSqlParser.DropFunctionContext ctx); + /** + * Exit a parse tree produced by the {@code dropFunction} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void exitDropFunction(PrestoSqlParser.DropFunctionContext ctx); + /** + * Enter a parse tree produced by the {@code call} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void enterCall(PrestoSqlParser.CallContext ctx); + /** + * Exit a parse tree produced by the {@code call} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void exitCall(PrestoSqlParser.CallContext ctx); + /** + * Enter a parse tree produced by the {@code createRole} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void enterCreateRole(PrestoSqlParser.CreateRoleContext ctx); + /** + * Exit a parse tree produced by the {@code createRole} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void exitCreateRole(PrestoSqlParser.CreateRoleContext ctx); + /** + * Enter a parse tree produced by the {@code dropRole} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void enterDropRole(PrestoSqlParser.DropRoleContext ctx); + /** + * Exit a parse tree produced by the {@code dropRole} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void exitDropRole(PrestoSqlParser.DropRoleContext ctx); + /** + * Enter a parse tree produced by the {@code grantRoles} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void enterGrantRoles(PrestoSqlParser.GrantRolesContext ctx); + /** + * Exit a parse tree produced by the {@code grantRoles} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void exitGrantRoles(PrestoSqlParser.GrantRolesContext ctx); + /** + * Enter a parse tree produced by the {@code revokeRoles} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void enterRevokeRoles(PrestoSqlParser.RevokeRolesContext ctx); + /** + * Exit a parse tree produced by the {@code revokeRoles} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void exitRevokeRoles(PrestoSqlParser.RevokeRolesContext ctx); + /** + * Enter a parse tree produced by the {@code setRole} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void enterSetRole(PrestoSqlParser.SetRoleContext ctx); + /** + * Exit a parse tree produced by the {@code setRole} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void exitSetRole(PrestoSqlParser.SetRoleContext ctx); + /** + * Enter a parse tree produced by the {@code grant} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void enterGrant(PrestoSqlParser.GrantContext ctx); + /** + * Exit a parse tree produced by the {@code grant} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void exitGrant(PrestoSqlParser.GrantContext ctx); + /** + * Enter a parse tree produced by the {@code revoke} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void enterRevoke(PrestoSqlParser.RevokeContext ctx); + /** + * Exit a parse tree produced by the {@code revoke} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void exitRevoke(PrestoSqlParser.RevokeContext ctx); + /** + * Enter a parse tree produced by the {@code showGrants} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void enterShowGrants(PrestoSqlParser.ShowGrantsContext ctx); + /** + * Exit a parse tree produced by the {@code showGrants} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void exitShowGrants(PrestoSqlParser.ShowGrantsContext ctx); + /** + * Enter a parse tree produced by the {@code explain} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void enterExplain(PrestoSqlParser.ExplainContext ctx); + /** + * Exit a parse tree produced by the {@code explain} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void exitExplain(PrestoSqlParser.ExplainContext ctx); + /** + * Enter a parse tree produced by the {@code showCreateTable} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void enterShowCreateTable(PrestoSqlParser.ShowCreateTableContext ctx); + /** + * Exit a parse tree produced by the {@code showCreateTable} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void exitShowCreateTable(PrestoSqlParser.ShowCreateTableContext ctx); + /** + * Enter a parse tree produced by the {@code showCreateView} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void enterShowCreateView(PrestoSqlParser.ShowCreateViewContext ctx); + /** + * Exit a parse tree produced by the {@code showCreateView} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void exitShowCreateView(PrestoSqlParser.ShowCreateViewContext ctx); + /** + * Enter a parse tree produced by the {@code showCreateMaterializedView} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void enterShowCreateMaterializedView(PrestoSqlParser.ShowCreateMaterializedViewContext ctx); + /** + * Exit a parse tree produced by the {@code showCreateMaterializedView} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void exitShowCreateMaterializedView(PrestoSqlParser.ShowCreateMaterializedViewContext ctx); + /** + * Enter a parse tree produced by the {@code showCreateFunction} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void enterShowCreateFunction(PrestoSqlParser.ShowCreateFunctionContext ctx); + /** + * Exit a parse tree produced by the {@code showCreateFunction} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void exitShowCreateFunction(PrestoSqlParser.ShowCreateFunctionContext ctx); + /** + * Enter a parse tree produced by the {@code showTables} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void enterShowTables(PrestoSqlParser.ShowTablesContext ctx); + /** + * Exit a parse tree produced by the {@code showTables} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void exitShowTables(PrestoSqlParser.ShowTablesContext ctx); + /** + * Enter a parse tree produced by the {@code showSchemas} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void enterShowSchemas(PrestoSqlParser.ShowSchemasContext ctx); + /** + * Exit a parse tree produced by the {@code showSchemas} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void exitShowSchemas(PrestoSqlParser.ShowSchemasContext ctx); + /** + * Enter a parse tree produced by the {@code showCatalogs} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void enterShowCatalogs(PrestoSqlParser.ShowCatalogsContext ctx); + /** + * Exit a parse tree produced by the {@code showCatalogs} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void exitShowCatalogs(PrestoSqlParser.ShowCatalogsContext ctx); + /** + * Enter a parse tree produced by the {@code showColumns} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void enterShowColumns(PrestoSqlParser.ShowColumnsContext ctx); + /** + * Exit a parse tree produced by the {@code showColumns} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void exitShowColumns(PrestoSqlParser.ShowColumnsContext ctx); + /** + * Enter a parse tree produced by the {@code showStats} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void enterShowStats(PrestoSqlParser.ShowStatsContext ctx); + /** + * Exit a parse tree produced by the {@code showStats} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void exitShowStats(PrestoSqlParser.ShowStatsContext ctx); + /** + * Enter a parse tree produced by the {@code showStatsForQuery} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void enterShowStatsForQuery(PrestoSqlParser.ShowStatsForQueryContext ctx); + /** + * Exit a parse tree produced by the {@code showStatsForQuery} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void exitShowStatsForQuery(PrestoSqlParser.ShowStatsForQueryContext ctx); + /** + * Enter a parse tree produced by the {@code showRoles} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void enterShowRoles(PrestoSqlParser.ShowRolesContext ctx); + /** + * Exit a parse tree produced by the {@code showRoles} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void exitShowRoles(PrestoSqlParser.ShowRolesContext ctx); + /** + * Enter a parse tree produced by the {@code showRoleGrants} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void enterShowRoleGrants(PrestoSqlParser.ShowRoleGrantsContext ctx); + /** + * Exit a parse tree produced by the {@code showRoleGrants} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void exitShowRoleGrants(PrestoSqlParser.ShowRoleGrantsContext ctx); + /** + * Enter a parse tree produced by the {@code showFunctions} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void enterShowFunctions(PrestoSqlParser.ShowFunctionsContext ctx); + /** + * Exit a parse tree produced by the {@code showFunctions} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void exitShowFunctions(PrestoSqlParser.ShowFunctionsContext ctx); + /** + * Enter a parse tree produced by the {@code showSession} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void enterShowSession(PrestoSqlParser.ShowSessionContext ctx); + /** + * Exit a parse tree produced by the {@code showSession} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void exitShowSession(PrestoSqlParser.ShowSessionContext ctx); + /** + * Enter a parse tree produced by the {@code setSession} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void enterSetSession(PrestoSqlParser.SetSessionContext ctx); + /** + * Exit a parse tree produced by the {@code setSession} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void exitSetSession(PrestoSqlParser.SetSessionContext ctx); + /** + * Enter a parse tree produced by the {@code resetSession} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void enterResetSession(PrestoSqlParser.ResetSessionContext ctx); + /** + * Exit a parse tree produced by the {@code resetSession} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void exitResetSession(PrestoSqlParser.ResetSessionContext ctx); + /** + * Enter a parse tree produced by the {@code startTransaction} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void enterStartTransaction(PrestoSqlParser.StartTransactionContext ctx); + /** + * Exit a parse tree produced by the {@code startTransaction} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void exitStartTransaction(PrestoSqlParser.StartTransactionContext ctx); + /** + * Enter a parse tree produced by the {@code commit} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void enterCommit(PrestoSqlParser.CommitContext ctx); + /** + * Exit a parse tree produced by the {@code commit} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void exitCommit(PrestoSqlParser.CommitContext ctx); + /** + * Enter a parse tree produced by the {@code rollback} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void enterRollback(PrestoSqlParser.RollbackContext ctx); + /** + * Exit a parse tree produced by the {@code rollback} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void exitRollback(PrestoSqlParser.RollbackContext ctx); + /** + * Enter a parse tree produced by the {@code prepare} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void enterPrepare(PrestoSqlParser.PrepareContext ctx); + /** + * Exit a parse tree produced by the {@code prepare} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void exitPrepare(PrestoSqlParser.PrepareContext ctx); + /** + * Enter a parse tree produced by the {@code deallocate} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void enterDeallocate(PrestoSqlParser.DeallocateContext ctx); + /** + * Exit a parse tree produced by the {@code deallocate} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void exitDeallocate(PrestoSqlParser.DeallocateContext ctx); + /** + * Enter a parse tree produced by the {@code execute} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void enterExecute(PrestoSqlParser.ExecuteContext ctx); + /** + * Exit a parse tree produced by the {@code execute} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void exitExecute(PrestoSqlParser.ExecuteContext ctx); + /** + * Enter a parse tree produced by the {@code describeInput} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void enterDescribeInput(PrestoSqlParser.DescribeInputContext ctx); + /** + * Exit a parse tree produced by the {@code describeInput} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void exitDescribeInput(PrestoSqlParser.DescribeInputContext ctx); + /** + * Enter a parse tree produced by the {@code describeOutput} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void enterDescribeOutput(PrestoSqlParser.DescribeOutputContext ctx); + /** + * Exit a parse tree produced by the {@code describeOutput} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + */ + void exitDescribeOutput(PrestoSqlParser.DescribeOutputContext ctx); + /** + * Enter a parse tree produced by {@link PrestoSqlParser#query}. + * @param ctx the parse tree + */ + void enterQuery(PrestoSqlParser.QueryContext ctx); + /** + * Exit a parse tree produced by {@link PrestoSqlParser#query}. + * @param ctx the parse tree + */ + void exitQuery(PrestoSqlParser.QueryContext ctx); + /** + * Enter a parse tree produced by {@link PrestoSqlParser#with}. + * @param ctx the parse tree + */ + void enterWith(PrestoSqlParser.WithContext ctx); + /** + * Exit a parse tree produced by {@link PrestoSqlParser#with}. + * @param ctx the parse tree + */ + void exitWith(PrestoSqlParser.WithContext ctx); + /** + * Enter a parse tree produced by {@link PrestoSqlParser#tableElement}. + * @param ctx the parse tree + */ + void enterTableElement(PrestoSqlParser.TableElementContext ctx); + /** + * Exit a parse tree produced by {@link PrestoSqlParser#tableElement}. + * @param ctx the parse tree + */ + void exitTableElement(PrestoSqlParser.TableElementContext ctx); + /** + * Enter a parse tree produced by {@link PrestoSqlParser#columnDefinition}. + * @param ctx the parse tree + */ + void enterColumnDefinition(PrestoSqlParser.ColumnDefinitionContext ctx); + /** + * Exit a parse tree produced by {@link PrestoSqlParser#columnDefinition}. + * @param ctx the parse tree + */ + void exitColumnDefinition(PrestoSqlParser.ColumnDefinitionContext ctx); + /** + * Enter a parse tree produced by {@link PrestoSqlParser#likeClause}. + * @param ctx the parse tree + */ + void enterLikeClause(PrestoSqlParser.LikeClauseContext ctx); + /** + * Exit a parse tree produced by {@link PrestoSqlParser#likeClause}. + * @param ctx the parse tree + */ + void exitLikeClause(PrestoSqlParser.LikeClauseContext ctx); + /** + * Enter a parse tree produced by {@link PrestoSqlParser#properties}. + * @param ctx the parse tree + */ + void enterProperties(PrestoSqlParser.PropertiesContext ctx); + /** + * Exit a parse tree produced by {@link PrestoSqlParser#properties}. + * @param ctx the parse tree + */ + void exitProperties(PrestoSqlParser.PropertiesContext ctx); + /** + * Enter a parse tree produced by {@link PrestoSqlParser#property}. + * @param ctx the parse tree + */ + void enterProperty(PrestoSqlParser.PropertyContext ctx); + /** + * Exit a parse tree produced by {@link PrestoSqlParser#property}. + * @param ctx the parse tree + */ + void exitProperty(PrestoSqlParser.PropertyContext ctx); + /** + * Enter a parse tree produced by {@link PrestoSqlParser#sqlParameterDeclaration}. + * @param ctx the parse tree + */ + void enterSqlParameterDeclaration(PrestoSqlParser.SqlParameterDeclarationContext ctx); + /** + * Exit a parse tree produced by {@link PrestoSqlParser#sqlParameterDeclaration}. + * @param ctx the parse tree + */ + void exitSqlParameterDeclaration(PrestoSqlParser.SqlParameterDeclarationContext ctx); + /** + * Enter a parse tree produced by {@link PrestoSqlParser#routineCharacteristics}. + * @param ctx the parse tree + */ + void enterRoutineCharacteristics(PrestoSqlParser.RoutineCharacteristicsContext ctx); + /** + * Exit a parse tree produced by {@link PrestoSqlParser#routineCharacteristics}. + * @param ctx the parse tree + */ + void exitRoutineCharacteristics(PrestoSqlParser.RoutineCharacteristicsContext ctx); + /** + * Enter a parse tree produced by {@link PrestoSqlParser#routineCharacteristic}. + * @param ctx the parse tree + */ + void enterRoutineCharacteristic(PrestoSqlParser.RoutineCharacteristicContext ctx); + /** + * Exit a parse tree produced by {@link PrestoSqlParser#routineCharacteristic}. + * @param ctx the parse tree + */ + void exitRoutineCharacteristic(PrestoSqlParser.RoutineCharacteristicContext ctx); + /** + * Enter a parse tree produced by {@link PrestoSqlParser#alterRoutineCharacteristics}. + * @param ctx the parse tree + */ + void enterAlterRoutineCharacteristics(PrestoSqlParser.AlterRoutineCharacteristicsContext ctx); + /** + * Exit a parse tree produced by {@link PrestoSqlParser#alterRoutineCharacteristics}. + * @param ctx the parse tree + */ + void exitAlterRoutineCharacteristics(PrestoSqlParser.AlterRoutineCharacteristicsContext ctx); + /** + * Enter a parse tree produced by {@link PrestoSqlParser#alterRoutineCharacteristic}. + * @param ctx the parse tree + */ + void enterAlterRoutineCharacteristic(PrestoSqlParser.AlterRoutineCharacteristicContext ctx); + /** + * Exit a parse tree produced by {@link PrestoSqlParser#alterRoutineCharacteristic}. + * @param ctx the parse tree + */ + void exitAlterRoutineCharacteristic(PrestoSqlParser.AlterRoutineCharacteristicContext ctx); + /** + * Enter a parse tree produced by {@link PrestoSqlParser#routineBody}. + * @param ctx the parse tree + */ + void enterRoutineBody(PrestoSqlParser.RoutineBodyContext ctx); + /** + * Exit a parse tree produced by {@link PrestoSqlParser#routineBody}. + * @param ctx the parse tree + */ + void exitRoutineBody(PrestoSqlParser.RoutineBodyContext ctx); + /** + * Enter a parse tree produced by {@link PrestoSqlParser#returnStatement}. + * @param ctx the parse tree + */ + void enterReturnStatement(PrestoSqlParser.ReturnStatementContext ctx); + /** + * Exit a parse tree produced by {@link PrestoSqlParser#returnStatement}. + * @param ctx the parse tree + */ + void exitReturnStatement(PrestoSqlParser.ReturnStatementContext ctx); + /** + * Enter a parse tree produced by {@link PrestoSqlParser#externalBodyReference}. + * @param ctx the parse tree + */ + void enterExternalBodyReference(PrestoSqlParser.ExternalBodyReferenceContext ctx); + /** + * Exit a parse tree produced by {@link PrestoSqlParser#externalBodyReference}. + * @param ctx the parse tree + */ + void exitExternalBodyReference(PrestoSqlParser.ExternalBodyReferenceContext ctx); + /** + * Enter a parse tree produced by {@link PrestoSqlParser#language}. + * @param ctx the parse tree + */ + void enterLanguage(PrestoSqlParser.LanguageContext ctx); + /** + * Exit a parse tree produced by {@link PrestoSqlParser#language}. + * @param ctx the parse tree + */ + void exitLanguage(PrestoSqlParser.LanguageContext ctx); + /** + * Enter a parse tree produced by {@link PrestoSqlParser#determinism}. + * @param ctx the parse tree + */ + void enterDeterminism(PrestoSqlParser.DeterminismContext ctx); + /** + * Exit a parse tree produced by {@link PrestoSqlParser#determinism}. + * @param ctx the parse tree + */ + void exitDeterminism(PrestoSqlParser.DeterminismContext ctx); + /** + * Enter a parse tree produced by {@link PrestoSqlParser#nullCallClause}. + * @param ctx the parse tree + */ + void enterNullCallClause(PrestoSqlParser.NullCallClauseContext ctx); + /** + * Exit a parse tree produced by {@link PrestoSqlParser#nullCallClause}. + * @param ctx the parse tree + */ + void exitNullCallClause(PrestoSqlParser.NullCallClauseContext ctx); + /** + * Enter a parse tree produced by {@link PrestoSqlParser#externalRoutineName}. + * @param ctx the parse tree + */ + void enterExternalRoutineName(PrestoSqlParser.ExternalRoutineNameContext ctx); + /** + * Exit a parse tree produced by {@link PrestoSqlParser#externalRoutineName}. + * @param ctx the parse tree + */ + void exitExternalRoutineName(PrestoSqlParser.ExternalRoutineNameContext ctx); + /** + * Enter a parse tree produced by {@link PrestoSqlParser#queryNoWith}. + * @param ctx the parse tree + */ + void enterQueryNoWith(PrestoSqlParser.QueryNoWithContext ctx); + /** + * Exit a parse tree produced by {@link PrestoSqlParser#queryNoWith}. + * @param ctx the parse tree + */ + void exitQueryNoWith(PrestoSqlParser.QueryNoWithContext ctx); + /** + * Enter a parse tree produced by the {@code queryTermDefault} + * labeled alternative in {@link PrestoSqlParser#queryTerm}. + * @param ctx the parse tree + */ + void enterQueryTermDefault(PrestoSqlParser.QueryTermDefaultContext ctx); + /** + * Exit a parse tree produced by the {@code queryTermDefault} + * labeled alternative in {@link PrestoSqlParser#queryTerm}. + * @param ctx the parse tree + */ + void exitQueryTermDefault(PrestoSqlParser.QueryTermDefaultContext ctx); + /** + * Enter a parse tree produced by the {@code setOperation} + * labeled alternative in {@link PrestoSqlParser#queryTerm}. + * @param ctx the parse tree + */ + void enterSetOperation(PrestoSqlParser.SetOperationContext ctx); + /** + * Exit a parse tree produced by the {@code setOperation} + * labeled alternative in {@link PrestoSqlParser#queryTerm}. + * @param ctx the parse tree + */ + void exitSetOperation(PrestoSqlParser.SetOperationContext ctx); + /** + * Enter a parse tree produced by the {@code queryPrimaryDefault} + * labeled alternative in {@link PrestoSqlParser#queryPrimary}. + * @param ctx the parse tree + */ + void enterQueryPrimaryDefault(PrestoSqlParser.QueryPrimaryDefaultContext ctx); + /** + * Exit a parse tree produced by the {@code queryPrimaryDefault} + * labeled alternative in {@link PrestoSqlParser#queryPrimary}. + * @param ctx the parse tree + */ + void exitQueryPrimaryDefault(PrestoSqlParser.QueryPrimaryDefaultContext ctx); + /** + * Enter a parse tree produced by the {@code table} + * labeled alternative in {@link PrestoSqlParser#queryPrimary}. + * @param ctx the parse tree + */ + void enterTable(PrestoSqlParser.TableContext ctx); + /** + * Exit a parse tree produced by the {@code table} + * labeled alternative in {@link PrestoSqlParser#queryPrimary}. + * @param ctx the parse tree + */ + void exitTable(PrestoSqlParser.TableContext ctx); + /** + * Enter a parse tree produced by the {@code inlineTable} + * labeled alternative in {@link PrestoSqlParser#queryPrimary}. + * @param ctx the parse tree + */ + void enterInlineTable(PrestoSqlParser.InlineTableContext ctx); + /** + * Exit a parse tree produced by the {@code inlineTable} + * labeled alternative in {@link PrestoSqlParser#queryPrimary}. + * @param ctx the parse tree + */ + void exitInlineTable(PrestoSqlParser.InlineTableContext ctx); + /** + * Enter a parse tree produced by the {@code subquery} + * labeled alternative in {@link PrestoSqlParser#queryPrimary}. + * @param ctx the parse tree + */ + void enterSubquery(PrestoSqlParser.SubqueryContext ctx); + /** + * Exit a parse tree produced by the {@code subquery} + * labeled alternative in {@link PrestoSqlParser#queryPrimary}. + * @param ctx the parse tree + */ + void exitSubquery(PrestoSqlParser.SubqueryContext ctx); + /** + * Enter a parse tree produced by {@link PrestoSqlParser#sortItem}. + * @param ctx the parse tree + */ + void enterSortItem(PrestoSqlParser.SortItemContext ctx); + /** + * Exit a parse tree produced by {@link PrestoSqlParser#sortItem}. + * @param ctx the parse tree + */ + void exitSortItem(PrestoSqlParser.SortItemContext ctx); + /** + * Enter a parse tree produced by {@link PrestoSqlParser#querySpecification}. + * @param ctx the parse tree + */ + void enterQuerySpecification(PrestoSqlParser.QuerySpecificationContext ctx); + /** + * Exit a parse tree produced by {@link PrestoSqlParser#querySpecification}. + * @param ctx the parse tree + */ + void exitQuerySpecification(PrestoSqlParser.QuerySpecificationContext ctx); + /** + * Enter a parse tree produced by {@link PrestoSqlParser#groupBy}. + * @param ctx the parse tree + */ + void enterGroupBy(PrestoSqlParser.GroupByContext ctx); + /** + * Exit a parse tree produced by {@link PrestoSqlParser#groupBy}. + * @param ctx the parse tree + */ + void exitGroupBy(PrestoSqlParser.GroupByContext ctx); + /** + * Enter a parse tree produced by the {@code singleGroupingSet} + * labeled alternative in {@link PrestoSqlParser#groupingElement}. + * @param ctx the parse tree + */ + void enterSingleGroupingSet(PrestoSqlParser.SingleGroupingSetContext ctx); + /** + * Exit a parse tree produced by the {@code singleGroupingSet} + * labeled alternative in {@link PrestoSqlParser#groupingElement}. + * @param ctx the parse tree + */ + void exitSingleGroupingSet(PrestoSqlParser.SingleGroupingSetContext ctx); + /** + * Enter a parse tree produced by the {@code rollup} + * labeled alternative in {@link PrestoSqlParser#groupingElement}. + * @param ctx the parse tree + */ + void enterRollup(PrestoSqlParser.RollupContext ctx); + /** + * Exit a parse tree produced by the {@code rollup} + * labeled alternative in {@link PrestoSqlParser#groupingElement}. + * @param ctx the parse tree + */ + void exitRollup(PrestoSqlParser.RollupContext ctx); + /** + * Enter a parse tree produced by the {@code cube} + * labeled alternative in {@link PrestoSqlParser#groupingElement}. + * @param ctx the parse tree + */ + void enterCube(PrestoSqlParser.CubeContext ctx); + /** + * Exit a parse tree produced by the {@code cube} + * labeled alternative in {@link PrestoSqlParser#groupingElement}. + * @param ctx the parse tree + */ + void exitCube(PrestoSqlParser.CubeContext ctx); + /** + * Enter a parse tree produced by the {@code multipleGroupingSets} + * labeled alternative in {@link PrestoSqlParser#groupingElement}. + * @param ctx the parse tree + */ + void enterMultipleGroupingSets(PrestoSqlParser.MultipleGroupingSetsContext ctx); + /** + * Exit a parse tree produced by the {@code multipleGroupingSets} + * labeled alternative in {@link PrestoSqlParser#groupingElement}. + * @param ctx the parse tree + */ + void exitMultipleGroupingSets(PrestoSqlParser.MultipleGroupingSetsContext ctx); + /** + * Enter a parse tree produced by {@link PrestoSqlParser#groupingSet}. + * @param ctx the parse tree + */ + void enterGroupingSet(PrestoSqlParser.GroupingSetContext ctx); + /** + * Exit a parse tree produced by {@link PrestoSqlParser#groupingSet}. + * @param ctx the parse tree + */ + void exitGroupingSet(PrestoSqlParser.GroupingSetContext ctx); + /** + * Enter a parse tree produced by {@link PrestoSqlParser#namedQuery}. + * @param ctx the parse tree + */ + void enterNamedQuery(PrestoSqlParser.NamedQueryContext ctx); + /** + * Exit a parse tree produced by {@link PrestoSqlParser#namedQuery}. + * @param ctx the parse tree + */ + void exitNamedQuery(PrestoSqlParser.NamedQueryContext ctx); + /** + * Enter a parse tree produced by {@link PrestoSqlParser#setQuantifier}. + * @param ctx the parse tree + */ + void enterSetQuantifier(PrestoSqlParser.SetQuantifierContext ctx); + /** + * Exit a parse tree produced by {@link PrestoSqlParser#setQuantifier}. + * @param ctx the parse tree + */ + void exitSetQuantifier(PrestoSqlParser.SetQuantifierContext ctx); + /** + * Enter a parse tree produced by the {@code selectSingle} + * labeled alternative in {@link PrestoSqlParser#selectItem}. + * @param ctx the parse tree + */ + void enterSelectSingle(PrestoSqlParser.SelectSingleContext ctx); + /** + * Exit a parse tree produced by the {@code selectSingle} + * labeled alternative in {@link PrestoSqlParser#selectItem}. + * @param ctx the parse tree + */ + void exitSelectSingle(PrestoSqlParser.SelectSingleContext ctx); + /** + * Enter a parse tree produced by the {@code selectAll} + * labeled alternative in {@link PrestoSqlParser#selectItem}. + * @param ctx the parse tree + */ + void enterSelectAll(PrestoSqlParser.SelectAllContext ctx); + /** + * Exit a parse tree produced by the {@code selectAll} + * labeled alternative in {@link PrestoSqlParser#selectItem}. + * @param ctx the parse tree + */ + void exitSelectAll(PrestoSqlParser.SelectAllContext ctx); + /** + * Enter a parse tree produced by the {@code relationDefault} + * labeled alternative in {@link PrestoSqlParser#relation}. + * @param ctx the parse tree + */ + void enterRelationDefault(PrestoSqlParser.RelationDefaultContext ctx); + /** + * Exit a parse tree produced by the {@code relationDefault} + * labeled alternative in {@link PrestoSqlParser#relation}. + * @param ctx the parse tree + */ + void exitRelationDefault(PrestoSqlParser.RelationDefaultContext ctx); + /** + * Enter a parse tree produced by the {@code joinRelation} + * labeled alternative in {@link PrestoSqlParser#relation}. + * @param ctx the parse tree + */ + void enterJoinRelation(PrestoSqlParser.JoinRelationContext ctx); + /** + * Exit a parse tree produced by the {@code joinRelation} + * labeled alternative in {@link PrestoSqlParser#relation}. + * @param ctx the parse tree + */ + void exitJoinRelation(PrestoSqlParser.JoinRelationContext ctx); + /** + * Enter a parse tree produced by {@link PrestoSqlParser#joinType}. + * @param ctx the parse tree + */ + void enterJoinType(PrestoSqlParser.JoinTypeContext ctx); + /** + * Exit a parse tree produced by {@link PrestoSqlParser#joinType}. + * @param ctx the parse tree + */ + void exitJoinType(PrestoSqlParser.JoinTypeContext ctx); + /** + * Enter a parse tree produced by {@link PrestoSqlParser#joinCriteria}. + * @param ctx the parse tree + */ + void enterJoinCriteria(PrestoSqlParser.JoinCriteriaContext ctx); + /** + * Exit a parse tree produced by {@link PrestoSqlParser#joinCriteria}. + * @param ctx the parse tree + */ + void exitJoinCriteria(PrestoSqlParser.JoinCriteriaContext ctx); + /** + * Enter a parse tree produced by {@link PrestoSqlParser#sampledRelation}. + * @param ctx the parse tree + */ + void enterSampledRelation(PrestoSqlParser.SampledRelationContext ctx); + /** + * Exit a parse tree produced by {@link PrestoSqlParser#sampledRelation}. + * @param ctx the parse tree + */ + void exitSampledRelation(PrestoSqlParser.SampledRelationContext ctx); + /** + * Enter a parse tree produced by {@link PrestoSqlParser#sampleType}. + * @param ctx the parse tree + */ + void enterSampleType(PrestoSqlParser.SampleTypeContext ctx); + /** + * Exit a parse tree produced by {@link PrestoSqlParser#sampleType}. + * @param ctx the parse tree + */ + void exitSampleType(PrestoSqlParser.SampleTypeContext ctx); + /** + * Enter a parse tree produced by {@link PrestoSqlParser#aliasedRelation}. + * @param ctx the parse tree + */ + void enterAliasedRelation(PrestoSqlParser.AliasedRelationContext ctx); + /** + * Exit a parse tree produced by {@link PrestoSqlParser#aliasedRelation}. + * @param ctx the parse tree + */ + void exitAliasedRelation(PrestoSqlParser.AliasedRelationContext ctx); + /** + * Enter a parse tree produced by {@link PrestoSqlParser#columnAliases}. + * @param ctx the parse tree + */ + void enterColumnAliases(PrestoSqlParser.ColumnAliasesContext ctx); + /** + * Exit a parse tree produced by {@link PrestoSqlParser#columnAliases}. + * @param ctx the parse tree + */ + void exitColumnAliases(PrestoSqlParser.ColumnAliasesContext ctx); + /** + * Enter a parse tree produced by the {@code tableName} + * labeled alternative in {@link PrestoSqlParser#relationPrimary}. + * @param ctx the parse tree + */ + void enterTableName(PrestoSqlParser.TableNameContext ctx); + /** + * Exit a parse tree produced by the {@code tableName} + * labeled alternative in {@link PrestoSqlParser#relationPrimary}. + * @param ctx the parse tree + */ + void exitTableName(PrestoSqlParser.TableNameContext ctx); + /** + * Enter a parse tree produced by the {@code subqueryRelation} + * labeled alternative in {@link PrestoSqlParser#relationPrimary}. + * @param ctx the parse tree + */ + void enterSubqueryRelation(PrestoSqlParser.SubqueryRelationContext ctx); + /** + * Exit a parse tree produced by the {@code subqueryRelation} + * labeled alternative in {@link PrestoSqlParser#relationPrimary}. + * @param ctx the parse tree + */ + void exitSubqueryRelation(PrestoSqlParser.SubqueryRelationContext ctx); + /** + * Enter a parse tree produced by the {@code unnest} + * labeled alternative in {@link PrestoSqlParser#relationPrimary}. + * @param ctx the parse tree + */ + void enterUnnest(PrestoSqlParser.UnnestContext ctx); + /** + * Exit a parse tree produced by the {@code unnest} + * labeled alternative in {@link PrestoSqlParser#relationPrimary}. + * @param ctx the parse tree + */ + void exitUnnest(PrestoSqlParser.UnnestContext ctx); + /** + * Enter a parse tree produced by the {@code lateral} + * labeled alternative in {@link PrestoSqlParser#relationPrimary}. + * @param ctx the parse tree + */ + void enterLateral(PrestoSqlParser.LateralContext ctx); + /** + * Exit a parse tree produced by the {@code lateral} + * labeled alternative in {@link PrestoSqlParser#relationPrimary}. + * @param ctx the parse tree + */ + void exitLateral(PrestoSqlParser.LateralContext ctx); + /** + * Enter a parse tree produced by the {@code parenthesizedRelation} + * labeled alternative in {@link PrestoSqlParser#relationPrimary}. + * @param ctx the parse tree + */ + void enterParenthesizedRelation(PrestoSqlParser.ParenthesizedRelationContext ctx); + /** + * Exit a parse tree produced by the {@code parenthesizedRelation} + * labeled alternative in {@link PrestoSqlParser#relationPrimary}. + * @param ctx the parse tree + */ + void exitParenthesizedRelation(PrestoSqlParser.ParenthesizedRelationContext ctx); + /** + * Enter a parse tree produced by {@link PrestoSqlParser#expression}. + * @param ctx the parse tree + */ + void enterExpression(PrestoSqlParser.ExpressionContext ctx); + /** + * Exit a parse tree produced by {@link PrestoSqlParser#expression}. + * @param ctx the parse tree + */ + void exitExpression(PrestoSqlParser.ExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code logicalNot} + * labeled alternative in {@link PrestoSqlParser#booleanExpression}. + * @param ctx the parse tree + */ + void enterLogicalNot(PrestoSqlParser.LogicalNotContext ctx); + /** + * Exit a parse tree produced by the {@code logicalNot} + * labeled alternative in {@link PrestoSqlParser#booleanExpression}. + * @param ctx the parse tree + */ + void exitLogicalNot(PrestoSqlParser.LogicalNotContext ctx); + /** + * Enter a parse tree produced by the {@code predicated} + * labeled alternative in {@link PrestoSqlParser#booleanExpression}. + * @param ctx the parse tree + */ + void enterPredicated(PrestoSqlParser.PredicatedContext ctx); + /** + * Exit a parse tree produced by the {@code predicated} + * labeled alternative in {@link PrestoSqlParser#booleanExpression}. + * @param ctx the parse tree + */ + void exitPredicated(PrestoSqlParser.PredicatedContext ctx); + /** + * Enter a parse tree produced by the {@code logicalBinary} + * labeled alternative in {@link PrestoSqlParser#booleanExpression}. + * @param ctx the parse tree + */ + void enterLogicalBinary(PrestoSqlParser.LogicalBinaryContext ctx); + /** + * Exit a parse tree produced by the {@code logicalBinary} + * labeled alternative in {@link PrestoSqlParser#booleanExpression}. + * @param ctx the parse tree + */ + void exitLogicalBinary(PrestoSqlParser.LogicalBinaryContext ctx); + /** + * Enter a parse tree produced by the {@code comparison} + * labeled alternative in {@link PrestoSqlParser#predicate}. + * @param ctx the parse tree + */ + void enterComparison(PrestoSqlParser.ComparisonContext ctx); + /** + * Exit a parse tree produced by the {@code comparison} + * labeled alternative in {@link PrestoSqlParser#predicate}. + * @param ctx the parse tree + */ + void exitComparison(PrestoSqlParser.ComparisonContext ctx); + /** + * Enter a parse tree produced by the {@code quantifiedComparison} + * labeled alternative in {@link PrestoSqlParser#predicate}. + * @param ctx the parse tree + */ + void enterQuantifiedComparison(PrestoSqlParser.QuantifiedComparisonContext ctx); + /** + * Exit a parse tree produced by the {@code quantifiedComparison} + * labeled alternative in {@link PrestoSqlParser#predicate}. + * @param ctx the parse tree + */ + void exitQuantifiedComparison(PrestoSqlParser.QuantifiedComparisonContext ctx); + /** + * Enter a parse tree produced by the {@code between} + * labeled alternative in {@link PrestoSqlParser#predicate}. + * @param ctx the parse tree + */ + void enterBetween(PrestoSqlParser.BetweenContext ctx); + /** + * Exit a parse tree produced by the {@code between} + * labeled alternative in {@link PrestoSqlParser#predicate}. + * @param ctx the parse tree + */ + void exitBetween(PrestoSqlParser.BetweenContext ctx); + /** + * Enter a parse tree produced by the {@code inList} + * labeled alternative in {@link PrestoSqlParser#predicate}. + * @param ctx the parse tree + */ + void enterInList(PrestoSqlParser.InListContext ctx); + /** + * Exit a parse tree produced by the {@code inList} + * labeled alternative in {@link PrestoSqlParser#predicate}. + * @param ctx the parse tree + */ + void exitInList(PrestoSqlParser.InListContext ctx); + /** + * Enter a parse tree produced by the {@code inSubquery} + * labeled alternative in {@link PrestoSqlParser#predicate}. + * @param ctx the parse tree + */ + void enterInSubquery(PrestoSqlParser.InSubqueryContext ctx); + /** + * Exit a parse tree produced by the {@code inSubquery} + * labeled alternative in {@link PrestoSqlParser#predicate}. + * @param ctx the parse tree + */ + void exitInSubquery(PrestoSqlParser.InSubqueryContext ctx); + /** + * Enter a parse tree produced by the {@code like} + * labeled alternative in {@link PrestoSqlParser#predicate}. + * @param ctx the parse tree + */ + void enterLike(PrestoSqlParser.LikeContext ctx); + /** + * Exit a parse tree produced by the {@code like} + * labeled alternative in {@link PrestoSqlParser#predicate}. + * @param ctx the parse tree + */ + void exitLike(PrestoSqlParser.LikeContext ctx); + /** + * Enter a parse tree produced by the {@code nullPredicate} + * labeled alternative in {@link PrestoSqlParser#predicate}. + * @param ctx the parse tree + */ + void enterNullPredicate(PrestoSqlParser.NullPredicateContext ctx); + /** + * Exit a parse tree produced by the {@code nullPredicate} + * labeled alternative in {@link PrestoSqlParser#predicate}. + * @param ctx the parse tree + */ + void exitNullPredicate(PrestoSqlParser.NullPredicateContext ctx); + /** + * Enter a parse tree produced by the {@code distinctFrom} + * labeled alternative in {@link PrestoSqlParser#predicate}. + * @param ctx the parse tree + */ + void enterDistinctFrom(PrestoSqlParser.DistinctFromContext ctx); + /** + * Exit a parse tree produced by the {@code distinctFrom} + * labeled alternative in {@link PrestoSqlParser#predicate}. + * @param ctx the parse tree + */ + void exitDistinctFrom(PrestoSqlParser.DistinctFromContext ctx); + /** + * Enter a parse tree produced by the {@code valueExpressionDefault} + * labeled alternative in {@link PrestoSqlParser#valueExpression}. + * @param ctx the parse tree + */ + void enterValueExpressionDefault(PrestoSqlParser.ValueExpressionDefaultContext ctx); + /** + * Exit a parse tree produced by the {@code valueExpressionDefault} + * labeled alternative in {@link PrestoSqlParser#valueExpression}. + * @param ctx the parse tree + */ + void exitValueExpressionDefault(PrestoSqlParser.ValueExpressionDefaultContext ctx); + /** + * Enter a parse tree produced by the {@code concatenation} + * labeled alternative in {@link PrestoSqlParser#valueExpression}. + * @param ctx the parse tree + */ + void enterConcatenation(PrestoSqlParser.ConcatenationContext ctx); + /** + * Exit a parse tree produced by the {@code concatenation} + * labeled alternative in {@link PrestoSqlParser#valueExpression}. + * @param ctx the parse tree + */ + void exitConcatenation(PrestoSqlParser.ConcatenationContext ctx); + /** + * Enter a parse tree produced by the {@code arithmeticBinary} + * labeled alternative in {@link PrestoSqlParser#valueExpression}. + * @param ctx the parse tree + */ + void enterArithmeticBinary(PrestoSqlParser.ArithmeticBinaryContext ctx); + /** + * Exit a parse tree produced by the {@code arithmeticBinary} + * labeled alternative in {@link PrestoSqlParser#valueExpression}. + * @param ctx the parse tree + */ + void exitArithmeticBinary(PrestoSqlParser.ArithmeticBinaryContext ctx); + /** + * Enter a parse tree produced by the {@code arithmeticUnary} + * labeled alternative in {@link PrestoSqlParser#valueExpression}. + * @param ctx the parse tree + */ + void enterArithmeticUnary(PrestoSqlParser.ArithmeticUnaryContext ctx); + /** + * Exit a parse tree produced by the {@code arithmeticUnary} + * labeled alternative in {@link PrestoSqlParser#valueExpression}. + * @param ctx the parse tree + */ + void exitArithmeticUnary(PrestoSqlParser.ArithmeticUnaryContext ctx); + /** + * Enter a parse tree produced by the {@code atTimeZone} + * labeled alternative in {@link PrestoSqlParser#valueExpression}. + * @param ctx the parse tree + */ + void enterAtTimeZone(PrestoSqlParser.AtTimeZoneContext ctx); + /** + * Exit a parse tree produced by the {@code atTimeZone} + * labeled alternative in {@link PrestoSqlParser#valueExpression}. + * @param ctx the parse tree + */ + void exitAtTimeZone(PrestoSqlParser.AtTimeZoneContext ctx); + /** + * Enter a parse tree produced by the {@code dereference} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterDereference(PrestoSqlParser.DereferenceContext ctx); + /** + * Exit a parse tree produced by the {@code dereference} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitDereference(PrestoSqlParser.DereferenceContext ctx); + /** + * Enter a parse tree produced by the {@code typeConstructor} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterTypeConstructor(PrestoSqlParser.TypeConstructorContext ctx); + /** + * Exit a parse tree produced by the {@code typeConstructor} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitTypeConstructor(PrestoSqlParser.TypeConstructorContext ctx); + /** + * Enter a parse tree produced by the {@code specialDateTimeFunction} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterSpecialDateTimeFunction(PrestoSqlParser.SpecialDateTimeFunctionContext ctx); + /** + * Exit a parse tree produced by the {@code specialDateTimeFunction} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitSpecialDateTimeFunction(PrestoSqlParser.SpecialDateTimeFunctionContext ctx); + /** + * Enter a parse tree produced by the {@code substring} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterSubstring(PrestoSqlParser.SubstringContext ctx); + /** + * Exit a parse tree produced by the {@code substring} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitSubstring(PrestoSqlParser.SubstringContext ctx); + /** + * Enter a parse tree produced by the {@code cast} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterCast(PrestoSqlParser.CastContext ctx); + /** + * Exit a parse tree produced by the {@code cast} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitCast(PrestoSqlParser.CastContext ctx); + /** + * Enter a parse tree produced by the {@code lambda} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterLambda(PrestoSqlParser.LambdaContext ctx); + /** + * Exit a parse tree produced by the {@code lambda} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitLambda(PrestoSqlParser.LambdaContext ctx); + /** + * Enter a parse tree produced by the {@code parenthesizedExpression} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterParenthesizedExpression(PrestoSqlParser.ParenthesizedExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code parenthesizedExpression} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitParenthesizedExpression(PrestoSqlParser.ParenthesizedExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code parameter} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterParameter(PrestoSqlParser.ParameterContext ctx); + /** + * Exit a parse tree produced by the {@code parameter} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitParameter(PrestoSqlParser.ParameterContext ctx); + /** + * Enter a parse tree produced by the {@code normalize} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterNormalize(PrestoSqlParser.NormalizeContext ctx); + /** + * Exit a parse tree produced by the {@code normalize} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitNormalize(PrestoSqlParser.NormalizeContext ctx); + /** + * Enter a parse tree produced by the {@code intervalLiteral} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterIntervalLiteral(PrestoSqlParser.IntervalLiteralContext ctx); + /** + * Exit a parse tree produced by the {@code intervalLiteral} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitIntervalLiteral(PrestoSqlParser.IntervalLiteralContext ctx); + /** + * Enter a parse tree produced by the {@code numericLiteral} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterNumericLiteral(PrestoSqlParser.NumericLiteralContext ctx); + /** + * Exit a parse tree produced by the {@code numericLiteral} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitNumericLiteral(PrestoSqlParser.NumericLiteralContext ctx); + /** + * Enter a parse tree produced by the {@code booleanLiteral} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterBooleanLiteral(PrestoSqlParser.BooleanLiteralContext ctx); + /** + * Exit a parse tree produced by the {@code booleanLiteral} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitBooleanLiteral(PrestoSqlParser.BooleanLiteralContext ctx); + /** + * Enter a parse tree produced by the {@code simpleCase} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterSimpleCase(PrestoSqlParser.SimpleCaseContext ctx); + /** + * Exit a parse tree produced by the {@code simpleCase} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitSimpleCase(PrestoSqlParser.SimpleCaseContext ctx); + /** + * Enter a parse tree produced by the {@code columnReference} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterColumnReference(PrestoSqlParser.ColumnReferenceContext ctx); + /** + * Exit a parse tree produced by the {@code columnReference} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitColumnReference(PrestoSqlParser.ColumnReferenceContext ctx); + /** + * Enter a parse tree produced by the {@code nullLiteral} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterNullLiteral(PrestoSqlParser.NullLiteralContext ctx); + /** + * Exit a parse tree produced by the {@code nullLiteral} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitNullLiteral(PrestoSqlParser.NullLiteralContext ctx); + /** + * Enter a parse tree produced by the {@code rowConstructor} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterRowConstructor(PrestoSqlParser.RowConstructorContext ctx); + /** + * Exit a parse tree produced by the {@code rowConstructor} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitRowConstructor(PrestoSqlParser.RowConstructorContext ctx); + /** + * Enter a parse tree produced by the {@code subscript} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterSubscript(PrestoSqlParser.SubscriptContext ctx); + /** + * Exit a parse tree produced by the {@code subscript} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitSubscript(PrestoSqlParser.SubscriptContext ctx); + /** + * Enter a parse tree produced by the {@code subqueryExpression} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterSubqueryExpression(PrestoSqlParser.SubqueryExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code subqueryExpression} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitSubqueryExpression(PrestoSqlParser.SubqueryExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code binaryLiteral} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterBinaryLiteral(PrestoSqlParser.BinaryLiteralContext ctx); + /** + * Exit a parse tree produced by the {@code binaryLiteral} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitBinaryLiteral(PrestoSqlParser.BinaryLiteralContext ctx); + /** + * Enter a parse tree produced by the {@code currentUser} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterCurrentUser(PrestoSqlParser.CurrentUserContext ctx); + /** + * Exit a parse tree produced by the {@code currentUser} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitCurrentUser(PrestoSqlParser.CurrentUserContext ctx); + /** + * Enter a parse tree produced by the {@code extract} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterExtract(PrestoSqlParser.ExtractContext ctx); + /** + * Exit a parse tree produced by the {@code extract} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitExtract(PrestoSqlParser.ExtractContext ctx); + /** + * Enter a parse tree produced by the {@code stringLiteral} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterStringLiteral(PrestoSqlParser.StringLiteralContext ctx); + /** + * Exit a parse tree produced by the {@code stringLiteral} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitStringLiteral(PrestoSqlParser.StringLiteralContext ctx); + /** + * Enter a parse tree produced by the {@code arrayConstructor} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterArrayConstructor(PrestoSqlParser.ArrayConstructorContext ctx); + /** + * Exit a parse tree produced by the {@code arrayConstructor} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitArrayConstructor(PrestoSqlParser.ArrayConstructorContext ctx); + /** + * Enter a parse tree produced by the {@code functionCall} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterFunctionCall(PrestoSqlParser.FunctionCallContext ctx); + /** + * Exit a parse tree produced by the {@code functionCall} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitFunctionCall(PrestoSqlParser.FunctionCallContext ctx); + /** + * Enter a parse tree produced by the {@code exists} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterExists(PrestoSqlParser.ExistsContext ctx); + /** + * Exit a parse tree produced by the {@code exists} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitExists(PrestoSqlParser.ExistsContext ctx); + /** + * Enter a parse tree produced by the {@code position} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterPosition(PrestoSqlParser.PositionContext ctx); + /** + * Exit a parse tree produced by the {@code position} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitPosition(PrestoSqlParser.PositionContext ctx); + /** + * Enter a parse tree produced by the {@code searchedCase} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterSearchedCase(PrestoSqlParser.SearchedCaseContext ctx); + /** + * Exit a parse tree produced by the {@code searchedCase} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitSearchedCase(PrestoSqlParser.SearchedCaseContext ctx); + /** + * Enter a parse tree produced by the {@code groupingOperation} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterGroupingOperation(PrestoSqlParser.GroupingOperationContext ctx); + /** + * Exit a parse tree produced by the {@code groupingOperation} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitGroupingOperation(PrestoSqlParser.GroupingOperationContext ctx); + /** + * Enter a parse tree produced by the {@code basicStringLiteral} + * labeled alternative in {@link PrestoSqlParser#string}. + * @param ctx the parse tree + */ + void enterBasicStringLiteral(PrestoSqlParser.BasicStringLiteralContext ctx); + /** + * Exit a parse tree produced by the {@code basicStringLiteral} + * labeled alternative in {@link PrestoSqlParser#string}. + * @param ctx the parse tree + */ + void exitBasicStringLiteral(PrestoSqlParser.BasicStringLiteralContext ctx); + /** + * Enter a parse tree produced by the {@code unicodeStringLiteral} + * labeled alternative in {@link PrestoSqlParser#string}. + * @param ctx the parse tree + */ + void enterUnicodeStringLiteral(PrestoSqlParser.UnicodeStringLiteralContext ctx); + /** + * Exit a parse tree produced by the {@code unicodeStringLiteral} + * labeled alternative in {@link PrestoSqlParser#string}. + * @param ctx the parse tree + */ + void exitUnicodeStringLiteral(PrestoSqlParser.UnicodeStringLiteralContext ctx); + /** + * Enter a parse tree produced by {@link PrestoSqlParser#nullTreatment}. + * @param ctx the parse tree + */ + void enterNullTreatment(PrestoSqlParser.NullTreatmentContext ctx); + /** + * Exit a parse tree produced by {@link PrestoSqlParser#nullTreatment}. + * @param ctx the parse tree + */ + void exitNullTreatment(PrestoSqlParser.NullTreatmentContext ctx); + /** + * Enter a parse tree produced by the {@code timeZoneInterval} + * labeled alternative in {@link PrestoSqlParser#timeZoneSpecifier}. + * @param ctx the parse tree + */ + void enterTimeZoneInterval(PrestoSqlParser.TimeZoneIntervalContext ctx); + /** + * Exit a parse tree produced by the {@code timeZoneInterval} + * labeled alternative in {@link PrestoSqlParser#timeZoneSpecifier}. + * @param ctx the parse tree + */ + void exitTimeZoneInterval(PrestoSqlParser.TimeZoneIntervalContext ctx); + /** + * Enter a parse tree produced by the {@code timeZoneString} + * labeled alternative in {@link PrestoSqlParser#timeZoneSpecifier}. + * @param ctx the parse tree + */ + void enterTimeZoneString(PrestoSqlParser.TimeZoneStringContext ctx); + /** + * Exit a parse tree produced by the {@code timeZoneString} + * labeled alternative in {@link PrestoSqlParser#timeZoneSpecifier}. + * @param ctx the parse tree + */ + void exitTimeZoneString(PrestoSqlParser.TimeZoneStringContext ctx); + /** + * Enter a parse tree produced by {@link PrestoSqlParser#comparisonOperator}. + * @param ctx the parse tree + */ + void enterComparisonOperator(PrestoSqlParser.ComparisonOperatorContext ctx); + /** + * Exit a parse tree produced by {@link PrestoSqlParser#comparisonOperator}. + * @param ctx the parse tree + */ + void exitComparisonOperator(PrestoSqlParser.ComparisonOperatorContext ctx); + /** + * Enter a parse tree produced by {@link PrestoSqlParser#comparisonQuantifier}. + * @param ctx the parse tree + */ + void enterComparisonQuantifier(PrestoSqlParser.ComparisonQuantifierContext ctx); + /** + * Exit a parse tree produced by {@link PrestoSqlParser#comparisonQuantifier}. + * @param ctx the parse tree + */ + void exitComparisonQuantifier(PrestoSqlParser.ComparisonQuantifierContext ctx); + /** + * Enter a parse tree produced by {@link PrestoSqlParser#booleanValue}. + * @param ctx the parse tree + */ + void enterBooleanValue(PrestoSqlParser.BooleanValueContext ctx); + /** + * Exit a parse tree produced by {@link PrestoSqlParser#booleanValue}. + * @param ctx the parse tree + */ + void exitBooleanValue(PrestoSqlParser.BooleanValueContext ctx); + /** + * Enter a parse tree produced by {@link PrestoSqlParser#interval}. + * @param ctx the parse tree + */ + void enterInterval(PrestoSqlParser.IntervalContext ctx); + /** + * Exit a parse tree produced by {@link PrestoSqlParser#interval}. + * @param ctx the parse tree + */ + void exitInterval(PrestoSqlParser.IntervalContext ctx); + /** + * Enter a parse tree produced by {@link PrestoSqlParser#intervalField}. + * @param ctx the parse tree + */ + void enterIntervalField(PrestoSqlParser.IntervalFieldContext ctx); + /** + * Exit a parse tree produced by {@link PrestoSqlParser#intervalField}. + * @param ctx the parse tree + */ + void exitIntervalField(PrestoSqlParser.IntervalFieldContext ctx); + /** + * Enter a parse tree produced by {@link PrestoSqlParser#normalForm}. + * @param ctx the parse tree + */ + void enterNormalForm(PrestoSqlParser.NormalFormContext ctx); + /** + * Exit a parse tree produced by {@link PrestoSqlParser#normalForm}. + * @param ctx the parse tree + */ + void exitNormalForm(PrestoSqlParser.NormalFormContext ctx); + /** + * Enter a parse tree produced by {@link PrestoSqlParser#types}. + * @param ctx the parse tree + */ + void enterTypes(PrestoSqlParser.TypesContext ctx); + /** + * Exit a parse tree produced by {@link PrestoSqlParser#types}. + * @param ctx the parse tree + */ + void exitTypes(PrestoSqlParser.TypesContext ctx); + /** + * Enter a parse tree produced by {@link PrestoSqlParser#type}. + * @param ctx the parse tree + */ + void enterType(PrestoSqlParser.TypeContext ctx); + /** + * Exit a parse tree produced by {@link PrestoSqlParser#type}. + * @param ctx the parse tree + */ + void exitType(PrestoSqlParser.TypeContext ctx); + /** + * Enter a parse tree produced by {@link PrestoSqlParser#typeParameter}. + * @param ctx the parse tree + */ + void enterTypeParameter(PrestoSqlParser.TypeParameterContext ctx); + /** + * Exit a parse tree produced by {@link PrestoSqlParser#typeParameter}. + * @param ctx the parse tree + */ + void exitTypeParameter(PrestoSqlParser.TypeParameterContext ctx); + /** + * Enter a parse tree produced by {@link PrestoSqlParser#baseType}. + * @param ctx the parse tree + */ + void enterBaseType(PrestoSqlParser.BaseTypeContext ctx); + /** + * Exit a parse tree produced by {@link PrestoSqlParser#baseType}. + * @param ctx the parse tree + */ + void exitBaseType(PrestoSqlParser.BaseTypeContext ctx); + /** + * Enter a parse tree produced by {@link PrestoSqlParser#whenClause}. + * @param ctx the parse tree + */ + void enterWhenClause(PrestoSqlParser.WhenClauseContext ctx); + /** + * Exit a parse tree produced by {@link PrestoSqlParser#whenClause}. + * @param ctx the parse tree + */ + void exitWhenClause(PrestoSqlParser.WhenClauseContext ctx); + /** + * Enter a parse tree produced by {@link PrestoSqlParser#filter}. + * @param ctx the parse tree + */ + void enterFilter(PrestoSqlParser.FilterContext ctx); + /** + * Exit a parse tree produced by {@link PrestoSqlParser#filter}. + * @param ctx the parse tree + */ + void exitFilter(PrestoSqlParser.FilterContext ctx); + /** + * Enter a parse tree produced by {@link PrestoSqlParser#over}. + * @param ctx the parse tree + */ + void enterOver(PrestoSqlParser.OverContext ctx); + /** + * Exit a parse tree produced by {@link PrestoSqlParser#over}. + * @param ctx the parse tree + */ + void exitOver(PrestoSqlParser.OverContext ctx); + /** + * Enter a parse tree produced by {@link PrestoSqlParser#windowFrame}. + * @param ctx the parse tree + */ + void enterWindowFrame(PrestoSqlParser.WindowFrameContext ctx); + /** + * Exit a parse tree produced by {@link PrestoSqlParser#windowFrame}. + * @param ctx the parse tree + */ + void exitWindowFrame(PrestoSqlParser.WindowFrameContext ctx); + /** + * Enter a parse tree produced by the {@code unboundedFrame} + * labeled alternative in {@link PrestoSqlParser#frameBound}. + * @param ctx the parse tree + */ + void enterUnboundedFrame(PrestoSqlParser.UnboundedFrameContext ctx); + /** + * Exit a parse tree produced by the {@code unboundedFrame} + * labeled alternative in {@link PrestoSqlParser#frameBound}. + * @param ctx the parse tree + */ + void exitUnboundedFrame(PrestoSqlParser.UnboundedFrameContext ctx); + /** + * Enter a parse tree produced by the {@code currentRowBound} + * labeled alternative in {@link PrestoSqlParser#frameBound}. + * @param ctx the parse tree + */ + void enterCurrentRowBound(PrestoSqlParser.CurrentRowBoundContext ctx); + /** + * Exit a parse tree produced by the {@code currentRowBound} + * labeled alternative in {@link PrestoSqlParser#frameBound}. + * @param ctx the parse tree + */ + void exitCurrentRowBound(PrestoSqlParser.CurrentRowBoundContext ctx); + /** + * Enter a parse tree produced by the {@code boundedFrame} + * labeled alternative in {@link PrestoSqlParser#frameBound}. + * @param ctx the parse tree + */ + void enterBoundedFrame(PrestoSqlParser.BoundedFrameContext ctx); + /** + * Exit a parse tree produced by the {@code boundedFrame} + * labeled alternative in {@link PrestoSqlParser#frameBound}. + * @param ctx the parse tree + */ + void exitBoundedFrame(PrestoSqlParser.BoundedFrameContext ctx); + /** + * Enter a parse tree produced by the {@code explainFormat} + * labeled alternative in {@link PrestoSqlParser#explainOption}. + * @param ctx the parse tree + */ + void enterExplainFormat(PrestoSqlParser.ExplainFormatContext ctx); + /** + * Exit a parse tree produced by the {@code explainFormat} + * labeled alternative in {@link PrestoSqlParser#explainOption}. + * @param ctx the parse tree + */ + void exitExplainFormat(PrestoSqlParser.ExplainFormatContext ctx); + /** + * Enter a parse tree produced by the {@code explainType} + * labeled alternative in {@link PrestoSqlParser#explainOption}. + * @param ctx the parse tree + */ + void enterExplainType(PrestoSqlParser.ExplainTypeContext ctx); + /** + * Exit a parse tree produced by the {@code explainType} + * labeled alternative in {@link PrestoSqlParser#explainOption}. + * @param ctx the parse tree + */ + void exitExplainType(PrestoSqlParser.ExplainTypeContext ctx); + /** + * Enter a parse tree produced by the {@code isolationLevel} + * labeled alternative in {@link PrestoSqlParser#transactionMode}. + * @param ctx the parse tree + */ + void enterIsolationLevel(PrestoSqlParser.IsolationLevelContext ctx); + /** + * Exit a parse tree produced by the {@code isolationLevel} + * labeled alternative in {@link PrestoSqlParser#transactionMode}. + * @param ctx the parse tree + */ + void exitIsolationLevel(PrestoSqlParser.IsolationLevelContext ctx); + /** + * Enter a parse tree produced by the {@code transactionAccessMode} + * labeled alternative in {@link PrestoSqlParser#transactionMode}. + * @param ctx the parse tree + */ + void enterTransactionAccessMode(PrestoSqlParser.TransactionAccessModeContext ctx); + /** + * Exit a parse tree produced by the {@code transactionAccessMode} + * labeled alternative in {@link PrestoSqlParser#transactionMode}. + * @param ctx the parse tree + */ + void exitTransactionAccessMode(PrestoSqlParser.TransactionAccessModeContext ctx); + /** + * Enter a parse tree produced by the {@code readUncommitted} + * labeled alternative in {@link PrestoSqlParser#levelOfIsolation}. + * @param ctx the parse tree + */ + void enterReadUncommitted(PrestoSqlParser.ReadUncommittedContext ctx); + /** + * Exit a parse tree produced by the {@code readUncommitted} + * labeled alternative in {@link PrestoSqlParser#levelOfIsolation}. + * @param ctx the parse tree + */ + void exitReadUncommitted(PrestoSqlParser.ReadUncommittedContext ctx); + /** + * Enter a parse tree produced by the {@code readCommitted} + * labeled alternative in {@link PrestoSqlParser#levelOfIsolation}. + * @param ctx the parse tree + */ + void enterReadCommitted(PrestoSqlParser.ReadCommittedContext ctx); + /** + * Exit a parse tree produced by the {@code readCommitted} + * labeled alternative in {@link PrestoSqlParser#levelOfIsolation}. + * @param ctx the parse tree + */ + void exitReadCommitted(PrestoSqlParser.ReadCommittedContext ctx); + /** + * Enter a parse tree produced by the {@code repeatableRead} + * labeled alternative in {@link PrestoSqlParser#levelOfIsolation}. + * @param ctx the parse tree + */ + void enterRepeatableRead(PrestoSqlParser.RepeatableReadContext ctx); + /** + * Exit a parse tree produced by the {@code repeatableRead} + * labeled alternative in {@link PrestoSqlParser#levelOfIsolation}. + * @param ctx the parse tree + */ + void exitRepeatableRead(PrestoSqlParser.RepeatableReadContext ctx); + /** + * Enter a parse tree produced by the {@code serializable} + * labeled alternative in {@link PrestoSqlParser#levelOfIsolation}. + * @param ctx the parse tree + */ + void enterSerializable(PrestoSqlParser.SerializableContext ctx); + /** + * Exit a parse tree produced by the {@code serializable} + * labeled alternative in {@link PrestoSqlParser#levelOfIsolation}. + * @param ctx the parse tree + */ + void exitSerializable(PrestoSqlParser.SerializableContext ctx); + /** + * Enter a parse tree produced by the {@code positionalArgument} + * labeled alternative in {@link PrestoSqlParser#callArgument}. + * @param ctx the parse tree + */ + void enterPositionalArgument(PrestoSqlParser.PositionalArgumentContext ctx); + /** + * Exit a parse tree produced by the {@code positionalArgument} + * labeled alternative in {@link PrestoSqlParser#callArgument}. + * @param ctx the parse tree + */ + void exitPositionalArgument(PrestoSqlParser.PositionalArgumentContext ctx); + /** + * Enter a parse tree produced by the {@code namedArgument} + * labeled alternative in {@link PrestoSqlParser#callArgument}. + * @param ctx the parse tree + */ + void enterNamedArgument(PrestoSqlParser.NamedArgumentContext ctx); + /** + * Exit a parse tree produced by the {@code namedArgument} + * labeled alternative in {@link PrestoSqlParser#callArgument}. + * @param ctx the parse tree + */ + void exitNamedArgument(PrestoSqlParser.NamedArgumentContext ctx); + /** + * Enter a parse tree produced by {@link PrestoSqlParser#privilege}. + * @param ctx the parse tree + */ + void enterPrivilege(PrestoSqlParser.PrivilegeContext ctx); + /** + * Exit a parse tree produced by {@link PrestoSqlParser#privilege}. + * @param ctx the parse tree + */ + void exitPrivilege(PrestoSqlParser.PrivilegeContext ctx); + /** + * Enter a parse tree produced by {@link PrestoSqlParser#qualifiedName}. + * @param ctx the parse tree + */ + void enterQualifiedName(PrestoSqlParser.QualifiedNameContext ctx); + /** + * Exit a parse tree produced by {@link PrestoSqlParser#qualifiedName}. + * @param ctx the parse tree + */ + void exitQualifiedName(PrestoSqlParser.QualifiedNameContext ctx); + /** + * Enter a parse tree produced by the {@code currentUserGrantor} + * labeled alternative in {@link PrestoSqlParser#grantor}. + * @param ctx the parse tree + */ + void enterCurrentUserGrantor(PrestoSqlParser.CurrentUserGrantorContext ctx); + /** + * Exit a parse tree produced by the {@code currentUserGrantor} + * labeled alternative in {@link PrestoSqlParser#grantor}. + * @param ctx the parse tree + */ + void exitCurrentUserGrantor(PrestoSqlParser.CurrentUserGrantorContext ctx); + /** + * Enter a parse tree produced by the {@code currentRoleGrantor} + * labeled alternative in {@link PrestoSqlParser#grantor}. + * @param ctx the parse tree + */ + void enterCurrentRoleGrantor(PrestoSqlParser.CurrentRoleGrantorContext ctx); + /** + * Exit a parse tree produced by the {@code currentRoleGrantor} + * labeled alternative in {@link PrestoSqlParser#grantor}. + * @param ctx the parse tree + */ + void exitCurrentRoleGrantor(PrestoSqlParser.CurrentRoleGrantorContext ctx); + /** + * Enter a parse tree produced by the {@code specifiedPrincipal} + * labeled alternative in {@link PrestoSqlParser#grantor}. + * @param ctx the parse tree + */ + void enterSpecifiedPrincipal(PrestoSqlParser.SpecifiedPrincipalContext ctx); + /** + * Exit a parse tree produced by the {@code specifiedPrincipal} + * labeled alternative in {@link PrestoSqlParser#grantor}. + * @param ctx the parse tree + */ + void exitSpecifiedPrincipal(PrestoSqlParser.SpecifiedPrincipalContext ctx); + /** + * Enter a parse tree produced by the {@code userPrincipal} + * labeled alternative in {@link PrestoSqlParser#principal}. + * @param ctx the parse tree + */ + void enterUserPrincipal(PrestoSqlParser.UserPrincipalContext ctx); + /** + * Exit a parse tree produced by the {@code userPrincipal} + * labeled alternative in {@link PrestoSqlParser#principal}. + * @param ctx the parse tree + */ + void exitUserPrincipal(PrestoSqlParser.UserPrincipalContext ctx); + /** + * Enter a parse tree produced by the {@code rolePrincipal} + * labeled alternative in {@link PrestoSqlParser#principal}. + * @param ctx the parse tree + */ + void enterRolePrincipal(PrestoSqlParser.RolePrincipalContext ctx); + /** + * Exit a parse tree produced by the {@code rolePrincipal} + * labeled alternative in {@link PrestoSqlParser#principal}. + * @param ctx the parse tree + */ + void exitRolePrincipal(PrestoSqlParser.RolePrincipalContext ctx); + /** + * Enter a parse tree produced by the {@code unspecifiedPrincipal} + * labeled alternative in {@link PrestoSqlParser#principal}. + * @param ctx the parse tree + */ + void enterUnspecifiedPrincipal(PrestoSqlParser.UnspecifiedPrincipalContext ctx); + /** + * Exit a parse tree produced by the {@code unspecifiedPrincipal} + * labeled alternative in {@link PrestoSqlParser#principal}. + * @param ctx the parse tree + */ + void exitUnspecifiedPrincipal(PrestoSqlParser.UnspecifiedPrincipalContext ctx); + /** + * Enter a parse tree produced by {@link PrestoSqlParser#roles}. + * @param ctx the parse tree + */ + void enterRoles(PrestoSqlParser.RolesContext ctx); + /** + * Exit a parse tree produced by {@link PrestoSqlParser#roles}. + * @param ctx the parse tree + */ + void exitRoles(PrestoSqlParser.RolesContext ctx); + /** + * Enter a parse tree produced by the {@code unquotedIdentifier} + * labeled alternative in {@link PrestoSqlParser#identifier}. + * @param ctx the parse tree + */ + void enterUnquotedIdentifier(PrestoSqlParser.UnquotedIdentifierContext ctx); + /** + * Exit a parse tree produced by the {@code unquotedIdentifier} + * labeled alternative in {@link PrestoSqlParser#identifier}. + * @param ctx the parse tree + */ + void exitUnquotedIdentifier(PrestoSqlParser.UnquotedIdentifierContext ctx); + /** + * Enter a parse tree produced by the {@code quotedIdentifier} + * labeled alternative in {@link PrestoSqlParser#identifier}. + * @param ctx the parse tree + */ + void enterQuotedIdentifier(PrestoSqlParser.QuotedIdentifierContext ctx); + /** + * Exit a parse tree produced by the {@code quotedIdentifier} + * labeled alternative in {@link PrestoSqlParser#identifier}. + * @param ctx the parse tree + */ + void exitQuotedIdentifier(PrestoSqlParser.QuotedIdentifierContext ctx); + /** + * Enter a parse tree produced by the {@code backQuotedIdentifier} + * labeled alternative in {@link PrestoSqlParser#identifier}. + * @param ctx the parse tree + */ + void enterBackQuotedIdentifier(PrestoSqlParser.BackQuotedIdentifierContext ctx); + /** + * Exit a parse tree produced by the {@code backQuotedIdentifier} + * labeled alternative in {@link PrestoSqlParser#identifier}. + * @param ctx the parse tree + */ + void exitBackQuotedIdentifier(PrestoSqlParser.BackQuotedIdentifierContext ctx); + /** + * Enter a parse tree produced by the {@code digitIdentifier} + * labeled alternative in {@link PrestoSqlParser#identifier}. + * @param ctx the parse tree + */ + void enterDigitIdentifier(PrestoSqlParser.DigitIdentifierContext ctx); + /** + * Exit a parse tree produced by the {@code digitIdentifier} + * labeled alternative in {@link PrestoSqlParser#identifier}. + * @param ctx the parse tree + */ + void exitDigitIdentifier(PrestoSqlParser.DigitIdentifierContext ctx); + /** + * Enter a parse tree produced by the {@code decimalLiteral} + * labeled alternative in {@link PrestoSqlParser#number}. + * @param ctx the parse tree + */ + void enterDecimalLiteral(PrestoSqlParser.DecimalLiteralContext ctx); + /** + * Exit a parse tree produced by the {@code decimalLiteral} + * labeled alternative in {@link PrestoSqlParser#number}. + * @param ctx the parse tree + */ + void exitDecimalLiteral(PrestoSqlParser.DecimalLiteralContext ctx); + /** + * Enter a parse tree produced by the {@code doubleLiteral} + * labeled alternative in {@link PrestoSqlParser#number}. + * @param ctx the parse tree + */ + void enterDoubleLiteral(PrestoSqlParser.DoubleLiteralContext ctx); + /** + * Exit a parse tree produced by the {@code doubleLiteral} + * labeled alternative in {@link PrestoSqlParser#number}. + * @param ctx the parse tree + */ + void exitDoubleLiteral(PrestoSqlParser.DoubleLiteralContext ctx); + /** + * Enter a parse tree produced by the {@code integerLiteral} + * labeled alternative in {@link PrestoSqlParser#number}. + * @param ctx the parse tree + */ + void enterIntegerLiteral(PrestoSqlParser.IntegerLiteralContext ctx); + /** + * Exit a parse tree produced by the {@code integerLiteral} + * labeled alternative in {@link PrestoSqlParser#number}. + * @param ctx the parse tree + */ + void exitIntegerLiteral(PrestoSqlParser.IntegerLiteralContext ctx); + /** + * Enter a parse tree produced by {@link PrestoSqlParser#nonReserved}. + * @param ctx the parse tree + */ + void enterNonReserved(PrestoSqlParser.NonReservedContext ctx); + /** + * Exit a parse tree produced by {@link PrestoSqlParser#nonReserved}. + * @param ctx the parse tree + */ + void exitNonReserved(PrestoSqlParser.NonReservedContext ctx); +} \ No newline at end of file diff --git a/src/main/java/com/github/bigdata/sql/antlr4/presto/PrestoSqlParser.java b/src/main/java/com/github/bigdata/sql/antlr4/presto/PrestoSqlParser.java new file mode 100644 index 0000000..9438e2a --- /dev/null +++ b/src/main/java/com/github/bigdata/sql/antlr4/presto/PrestoSqlParser.java @@ -0,0 +1,14787 @@ +// Generated from com/github/bigdata/sql/antlr4/presto/PrestoSql.g4 by ANTLR 4.7 +package com.github.bigdata.sql.antlr4.presto; +import org.antlr.v4.runtime.atn.*; +import org.antlr.v4.runtime.dfa.DFA; +import org.antlr.v4.runtime.*; +import org.antlr.v4.runtime.misc.*; +import org.antlr.v4.runtime.tree.*; +import java.util.List; +import java.util.Iterator; +import java.util.ArrayList; + +@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"}) +public class PrestoSqlParser extends Parser { + static { RuntimeMetaData.checkVersion("4.7", 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, + ADD=10, ADMIN=11, ALL=12, ALTER=13, ANALYZE=14, AND=15, ANY=16, ARRAY=17, + AS=18, ASC=19, AT=20, BERNOULLI=21, BETWEEN=22, BY=23, CALL=24, CALLED=25, + CASCADE=26, CASE=27, CAST=28, CATALOGS=29, COLUMN=30, COLUMNS=31, COMMENT=32, + COMMIT=33, COMMITTED=34, CONSTRAINT=35, CREATE=36, CROSS=37, CUBE=38, + CURRENT=39, CURRENT_DATE=40, CURRENT_ROLE=41, CURRENT_TIME=42, CURRENT_TIMESTAMP=43, + CURRENT_USER=44, DATA=45, DATE=46, DAY=47, DEALLOCATE=48, DEFINER=49, + DELETE=50, DESC=51, DESCRIBE=52, DETERMINISTIC=53, DISTINCT=54, DISTRIBUTED=55, + DROP=56, ELSE=57, END=58, ESCAPE=59, EXCEPT=60, EXCLUDING=61, EXECUTE=62, + EXISTS=63, EXPLAIN=64, EXTRACT=65, EXTERNAL=66, FALSE=67, FILTER=68, FIRST=69, + FOLLOWING=70, FOR=71, FORMAT=72, FROM=73, FULL=74, FUNCTION=75, FUNCTIONS=76, + GRANT=77, GRANTED=78, GRANTS=79, GRAPHVIZ=80, GROUP=81, GROUPING=82, HAVING=83, + HOUR=84, IF=85, IGNORE=86, IN=87, INCLUDING=88, INNER=89, INPUT=90, INSERT=91, + INTERSECT=92, INTERVAL=93, INTO=94, INVOKER=95, IO=96, IS=97, ISOLATION=98, + JSON=99, JOIN=100, LANGUAGE=101, LAST=102, LATERAL=103, LEFT=104, LEVEL=105, + LIKE=106, LIMIT=107, LOCALTIME=108, LOCALTIMESTAMP=109, LOGICAL=110, MAP=111, + MATERIALIZED=112, MINUTE=113, MONTH=114, NAME=115, NATURAL=116, NFC=117, + NFD=118, NFKC=119, NFKD=120, NO=121, NONE=122, NORMALIZE=123, NOT=124, + NULL=125, NULLIF=126, NULLS=127, OFFSET=128, ON=129, ONLY=130, OPTION=131, + OR=132, ORDER=133, ORDINALITY=134, OUTER=135, OUTPUT=136, OVER=137, PARTITION=138, + PARTITIONS=139, POSITION=140, PRECEDING=141, PREPARE=142, PRIVILEGES=143, + PROPERTIES=144, RANGE=145, READ=146, RECURSIVE=147, REFRESH=148, RENAME=149, + REPEATABLE=150, REPLACE=151, RESET=152, RESPECT=153, RESTRICT=154, RETURN=155, + RETURNS=156, REVOKE=157, RIGHT=158, ROLE=159, ROLES=160, ROLLBACK=161, + ROLLUP=162, ROW=163, ROWS=164, SCHEMA=165, SCHEMAS=166, SECOND=167, SECURITY=168, + SELECT=169, SERIALIZABLE=170, SESSION=171, SET=172, SETS=173, SHOW=174, + SOME=175, SQL=176, START=177, STATS=178, SUBSTRING=179, SYSTEM=180, TABLE=181, + TABLES=182, TABLESAMPLE=183, TEMPORARY=184, TEXT=185, THEN=186, TIME=187, + TIMESTAMP=188, TO=189, TRANSACTION=190, TRUE=191, TRY_CAST=192, TYPE=193, + UESCAPE=194, UNBOUNDED=195, UNCOMMITTED=196, UNION=197, UNNEST=198, USE=199, + USER=200, USING=201, VALIDATE=202, VALUES=203, VERBOSE=204, VIEW=205, + WHEN=206, WHERE=207, WITH=208, WORK=209, WRITE=210, YEAR=211, ZONE=212, + EQ=213, NEQ=214, LT=215, LTE=216, GT=217, GTE=218, PLUS=219, MINUS=220, + ASTERISK=221, SLASH=222, PERCENT=223, CONCAT=224, STRING=225, UNICODE_STRING=226, + BINARY_LITERAL=227, INTEGER_VALUE=228, DECIMAL_VALUE=229, DOUBLE_VALUE=230, + IDENTIFIER=231, DIGIT_IDENTIFIER=232, QUOTED_IDENTIFIER=233, BACKQUOTED_IDENTIFIER=234, + TIME_WITH_TIME_ZONE=235, TIMESTAMP_WITH_TIME_ZONE=236, DOUBLE_PRECISION=237, + SIMPLE_COMMENT=238, BRACKETED_COMMENT=239, WS=240, UNRECOGNIZED=241, DELIMITER=242; + public static final int + RULE_singleStatement = 0, RULE_standaloneExpression = 1, RULE_standaloneRoutineBody = 2, + RULE_statement = 3, RULE_query = 4, RULE_with = 5, RULE_tableElement = 6, + RULE_columnDefinition = 7, RULE_likeClause = 8, RULE_properties = 9, RULE_property = 10, + RULE_sqlParameterDeclaration = 11, RULE_routineCharacteristics = 12, RULE_routineCharacteristic = 13, + RULE_alterRoutineCharacteristics = 14, RULE_alterRoutineCharacteristic = 15, + RULE_routineBody = 16, RULE_returnStatement = 17, RULE_externalBodyReference = 18, + RULE_language = 19, RULE_determinism = 20, RULE_nullCallClause = 21, RULE_externalRoutineName = 22, + RULE_queryNoWith = 23, RULE_queryTerm = 24, RULE_queryPrimary = 25, RULE_sortItem = 26, + RULE_querySpecification = 27, RULE_groupBy = 28, RULE_groupingElement = 29, + RULE_groupingSet = 30, RULE_namedQuery = 31, RULE_setQuantifier = 32, + RULE_selectItem = 33, RULE_relation = 34, RULE_joinType = 35, RULE_joinCriteria = 36, + RULE_sampledRelation = 37, RULE_sampleType = 38, RULE_aliasedRelation = 39, + RULE_columnAliases = 40, RULE_relationPrimary = 41, RULE_expression = 42, + RULE_booleanExpression = 43, RULE_predicate = 44, RULE_valueExpression = 45, + RULE_primaryExpression = 46, RULE_string = 47, RULE_nullTreatment = 48, + RULE_timeZoneSpecifier = 49, RULE_comparisonOperator = 50, RULE_comparisonQuantifier = 51, + RULE_booleanValue = 52, RULE_interval = 53, RULE_intervalField = 54, RULE_normalForm = 55, + RULE_types = 56, RULE_type = 57, RULE_typeParameter = 58, RULE_baseType = 59, + RULE_whenClause = 60, RULE_filter = 61, RULE_over = 62, RULE_windowFrame = 63, + RULE_frameBound = 64, RULE_explainOption = 65, RULE_transactionMode = 66, + RULE_levelOfIsolation = 67, RULE_callArgument = 68, RULE_privilege = 69, + RULE_qualifiedName = 70, RULE_grantor = 71, RULE_principal = 72, RULE_roles = 73, + RULE_identifier = 74, RULE_number = 75, RULE_nonReserved = 76; + public static final String[] ruleNames = { + "singleStatement", "standaloneExpression", "standaloneRoutineBody", "statement", + "query", "with", "tableElement", "columnDefinition", "likeClause", "properties", + "property", "sqlParameterDeclaration", "routineCharacteristics", "routineCharacteristic", + "alterRoutineCharacteristics", "alterRoutineCharacteristic", "routineBody", + "returnStatement", "externalBodyReference", "language", "determinism", + "nullCallClause", "externalRoutineName", "queryNoWith", "queryTerm", "queryPrimary", + "sortItem", "querySpecification", "groupBy", "groupingElement", "groupingSet", + "namedQuery", "setQuantifier", "selectItem", "relation", "joinType", "joinCriteria", + "sampledRelation", "sampleType", "aliasedRelation", "columnAliases", "relationPrimary", + "expression", "booleanExpression", "predicate", "valueExpression", "primaryExpression", + "string", "nullTreatment", "timeZoneSpecifier", "comparisonOperator", + "comparisonQuantifier", "booleanValue", "interval", "intervalField", "normalForm", + "types", "type", "typeParameter", "baseType", "whenClause", "filter", + "over", "windowFrame", "frameBound", "explainOption", "transactionMode", + "levelOfIsolation", "callArgument", "privilege", "qualifiedName", "grantor", + "principal", "roles", "identifier", "number", "nonReserved" + }; + + private static final String[] _LITERAL_NAMES = { + null, "'.'", "'('", "')'", "','", "'?'", "'->'", "'['", "']'", "'=>'", + "'ADD'", "'ADMIN'", "'ALL'", "'ALTER'", "'ANALYZE'", "'AND'", "'ANY'", + "'ARRAY'", "'AS'", "'ASC'", "'AT'", "'BERNOULLI'", "'BETWEEN'", "'BY'", + "'CALL'", "'CALLED'", "'CASCADE'", "'CASE'", "'CAST'", "'CATALOGS'", "'COLUMN'", + "'COLUMNS'", "'COMMENT'", "'COMMIT'", "'COMMITTED'", "'CONSTRAINT'", "'CREATE'", + "'CROSS'", "'CUBE'", "'CURRENT'", "'CURRENT_DATE'", "'CURRENT_ROLE'", + "'CURRENT_TIME'", "'CURRENT_TIMESTAMP'", "'CURRENT_USER'", "'DATA'", "'DATE'", + "'DAY'", "'DEALLOCATE'", "'DEFINER'", "'DELETE'", "'DESC'", "'DESCRIBE'", + "'DETERMINISTIC'", "'DISTINCT'", "'DISTRIBUTED'", "'DROP'", "'ELSE'", + "'END'", "'ESCAPE'", "'EXCEPT'", "'EXCLUDING'", "'EXECUTE'", "'EXISTS'", + "'EXPLAIN'", "'EXTRACT'", "'EXTERNAL'", "'FALSE'", "'FILTER'", "'FIRST'", + "'FOLLOWING'", "'FOR'", "'FORMAT'", "'FROM'", "'FULL'", "'FUNCTION'", + "'FUNCTIONS'", "'GRANT'", "'GRANTED'", "'GRANTS'", "'GRAPHVIZ'", "'GROUP'", + "'GROUPING'", "'HAVING'", "'HOUR'", "'IF'", "'IGNORE'", "'IN'", "'INCLUDING'", + "'INNER'", "'INPUT'", "'INSERT'", "'INTERSECT'", "'INTERVAL'", "'INTO'", + "'INVOKER'", "'IO'", "'IS'", "'ISOLATION'", "'JSON'", "'JOIN'", "'LANGUAGE'", + "'LAST'", "'LATERAL'", "'LEFT'", "'LEVEL'", "'LIKE'", "'LIMIT'", "'LOCALTIME'", + "'LOCALTIMESTAMP'", "'LOGICAL'", "'MAP'", "'MATERIALIZED'", "'MINUTE'", + "'MONTH'", "'NAME'", "'NATURAL'", "'NFC'", "'NFD'", "'NFKC'", "'NFKD'", + "'NO'", "'NONE'", "'NORMALIZE'", "'NOT'", "'NULL'", "'NULLIF'", "'NULLS'", + "'OFFSET'", "'ON'", "'ONLY'", "'OPTION'", "'OR'", "'ORDER'", "'ORDINALITY'", + "'OUTER'", "'OUTPUT'", "'OVER'", "'PARTITION'", "'PARTITIONS'", "'POSITION'", + "'PRECEDING'", "'PREPARE'", "'PRIVILEGES'", "'PROPERTIES'", "'RANGE'", + "'READ'", "'RECURSIVE'", "'REFRESH'", "'RENAME'", "'REPEATABLE'", "'REPLACE'", + "'RESET'", "'RESPECT'", "'RESTRICT'", "'RETURN'", "'RETURNS'", "'REVOKE'", + "'RIGHT'", "'ROLE'", "'ROLES'", "'ROLLBACK'", "'ROLLUP'", "'ROW'", "'ROWS'", + "'SCHEMA'", "'SCHEMAS'", "'SECOND'", "'SECURITY'", "'SELECT'", "'SERIALIZABLE'", + "'SESSION'", "'SET'", "'SETS'", "'SHOW'", "'SOME'", "'SQL'", "'START'", + "'STATS'", "'SUBSTRING'", "'SYSTEM'", "'TABLE'", "'TABLES'", "'TABLESAMPLE'", + "'TEMPORARY'", "'TEXT'", "'THEN'", "'TIME'", "'TIMESTAMP'", "'TO'", "'TRANSACTION'", + "'TRUE'", "'TRY_CAST'", "'TYPE'", "'UESCAPE'", "'UNBOUNDED'", "'UNCOMMITTED'", + "'UNION'", "'UNNEST'", "'USE'", "'USER'", "'USING'", "'VALIDATE'", "'VALUES'", + "'VERBOSE'", "'VIEW'", "'WHEN'", "'WHERE'", "'WITH'", "'WORK'", "'WRITE'", + "'YEAR'", "'ZONE'", "'='", null, "'<'", "'<='", "'>'", "'>='", "'+'", + "'-'", "'*'", "'/'", "'%'", "'||'" + }; + private static final String[] _SYMBOLIC_NAMES = { + null, null, null, null, null, null, null, null, null, null, "ADD", "ADMIN", + "ALL", "ALTER", "ANALYZE", "AND", "ANY", "ARRAY", "AS", "ASC", "AT", "BERNOULLI", + "BETWEEN", "BY", "CALL", "CALLED", "CASCADE", "CASE", "CAST", "CATALOGS", + "COLUMN", "COLUMNS", "COMMENT", "COMMIT", "COMMITTED", "CONSTRAINT", "CREATE", + "CROSS", "CUBE", "CURRENT", "CURRENT_DATE", "CURRENT_ROLE", "CURRENT_TIME", + "CURRENT_TIMESTAMP", "CURRENT_USER", "DATA", "DATE", "DAY", "DEALLOCATE", + "DEFINER", "DELETE", "DESC", "DESCRIBE", "DETERMINISTIC", "DISTINCT", + "DISTRIBUTED", "DROP", "ELSE", "END", "ESCAPE", "EXCEPT", "EXCLUDING", + "EXECUTE", "EXISTS", "EXPLAIN", "EXTRACT", "EXTERNAL", "FALSE", "FILTER", + "FIRST", "FOLLOWING", "FOR", "FORMAT", "FROM", "FULL", "FUNCTION", "FUNCTIONS", + "GRANT", "GRANTED", "GRANTS", "GRAPHVIZ", "GROUP", "GROUPING", "HAVING", + "HOUR", "IF", "IGNORE", "IN", "INCLUDING", "INNER", "INPUT", "INSERT", + "INTERSECT", "INTERVAL", "INTO", "INVOKER", "IO", "IS", "ISOLATION", "JSON", + "JOIN", "LANGUAGE", "LAST", "LATERAL", "LEFT", "LEVEL", "LIKE", "LIMIT", + "LOCALTIME", "LOCALTIMESTAMP", "LOGICAL", "MAP", "MATERIALIZED", "MINUTE", + "MONTH", "NAME", "NATURAL", "NFC", "NFD", "NFKC", "NFKD", "NO", "NONE", + "NORMALIZE", "NOT", "NULL", "NULLIF", "NULLS", "OFFSET", "ON", "ONLY", + "OPTION", "OR", "ORDER", "ORDINALITY", "OUTER", "OUTPUT", "OVER", "PARTITION", + "PARTITIONS", "POSITION", "PRECEDING", "PREPARE", "PRIVILEGES", "PROPERTIES", + "RANGE", "READ", "RECURSIVE", "REFRESH", "RENAME", "REPEATABLE", "REPLACE", + "RESET", "RESPECT", "RESTRICT", "RETURN", "RETURNS", "REVOKE", "RIGHT", + "ROLE", "ROLES", "ROLLBACK", "ROLLUP", "ROW", "ROWS", "SCHEMA", "SCHEMAS", + "SECOND", "SECURITY", "SELECT", "SERIALIZABLE", "SESSION", "SET", "SETS", + "SHOW", "SOME", "SQL", "START", "STATS", "SUBSTRING", "SYSTEM", "TABLE", + "TABLES", "TABLESAMPLE", "TEMPORARY", "TEXT", "THEN", "TIME", "TIMESTAMP", + "TO", "TRANSACTION", "TRUE", "TRY_CAST", "TYPE", "UESCAPE", "UNBOUNDED", + "UNCOMMITTED", "UNION", "UNNEST", "USE", "USER", "USING", "VALIDATE", + "VALUES", "VERBOSE", "VIEW", "WHEN", "WHERE", "WITH", "WORK", "WRITE", + "YEAR", "ZONE", "EQ", "NEQ", "LT", "LTE", "GT", "GTE", "PLUS", "MINUS", + "ASTERISK", "SLASH", "PERCENT", "CONCAT", "STRING", "UNICODE_STRING", + "BINARY_LITERAL", "INTEGER_VALUE", "DECIMAL_VALUE", "DOUBLE_VALUE", "IDENTIFIER", + "DIGIT_IDENTIFIER", "QUOTED_IDENTIFIER", "BACKQUOTED_IDENTIFIER", "TIME_WITH_TIME_ZONE", + "TIMESTAMP_WITH_TIME_ZONE", "DOUBLE_PRECISION", "SIMPLE_COMMENT", "BRACKETED_COMMENT", + "WS", "UNRECOGNIZED", "DELIMITER" + }; + 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 "PrestoSql.g4"; } + + @Override + public String[] getRuleNames() { return ruleNames; } + + @Override + public String getSerializedATN() { return _serializedATN; } + + @Override + public ATN getATN() { return _ATN; } + + public PrestoSqlParser(TokenStream input) { + super(input); + _interp = new ParserATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache); + } + public static class SingleStatementContext extends ParserRuleContext { + public StatementContext statement() { + return getRuleContext(StatementContext.class,0); + } + public TerminalNode EOF() { return getToken(PrestoSqlParser.EOF, 0); } + public SingleStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_singleStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterSingleStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitSingleStatement(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitSingleStatement(this); + else return visitor.visitChildren(this); + } + } + + public final SingleStatementContext singleStatement() throws RecognitionException { + SingleStatementContext _localctx = new SingleStatementContext(_ctx, getState()); + enterRule(_localctx, 0, RULE_singleStatement); + try { + enterOuterAlt(_localctx, 1); + { + setState(154); + statement(); + setState(155); + match(EOF); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class StandaloneExpressionContext extends ParserRuleContext { + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public TerminalNode EOF() { return getToken(PrestoSqlParser.EOF, 0); } + public StandaloneExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_standaloneExpression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterStandaloneExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitStandaloneExpression(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitStandaloneExpression(this); + else return visitor.visitChildren(this); + } + } + + public final StandaloneExpressionContext standaloneExpression() throws RecognitionException { + StandaloneExpressionContext _localctx = new StandaloneExpressionContext(_ctx, getState()); + enterRule(_localctx, 2, RULE_standaloneExpression); + try { + enterOuterAlt(_localctx, 1); + { + setState(157); + expression(); + setState(158); + match(EOF); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class StandaloneRoutineBodyContext extends ParserRuleContext { + public RoutineBodyContext routineBody() { + return getRuleContext(RoutineBodyContext.class,0); + } + public TerminalNode EOF() { return getToken(PrestoSqlParser.EOF, 0); } + public StandaloneRoutineBodyContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_standaloneRoutineBody; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterStandaloneRoutineBody(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitStandaloneRoutineBody(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitStandaloneRoutineBody(this); + else return visitor.visitChildren(this); + } + } + + public final StandaloneRoutineBodyContext standaloneRoutineBody() throws RecognitionException { + StandaloneRoutineBodyContext _localctx = new StandaloneRoutineBodyContext(_ctx, getState()); + enterRule(_localctx, 4, RULE_standaloneRoutineBody); + try { + enterOuterAlt(_localctx, 1); + { + setState(160); + routineBody(); + setState(161); + match(EOF); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class StatementContext extends ParserRuleContext { + public StatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_statement; } + + public StatementContext() { } + public void copyFrom(StatementContext ctx) { + super.copyFrom(ctx); + } + } + public static class ExplainContext extends StatementContext { + public TerminalNode EXPLAIN() { return getToken(PrestoSqlParser.EXPLAIN, 0); } + public StatementContext statement() { + return getRuleContext(StatementContext.class,0); + } + public TerminalNode ANALYZE() { return getToken(PrestoSqlParser.ANALYZE, 0); } + public TerminalNode VERBOSE() { return getToken(PrestoSqlParser.VERBOSE, 0); } + public List explainOption() { + return getRuleContexts(ExplainOptionContext.class); + } + public ExplainOptionContext explainOption(int i) { + return getRuleContext(ExplainOptionContext.class,i); + } + public ExplainContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterExplain(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitExplain(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitExplain(this); + else return visitor.visitChildren(this); + } + } + public static class PrepareContext extends StatementContext { + public TerminalNode PREPARE() { return getToken(PrestoSqlParser.PREPARE, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode FROM() { return getToken(PrestoSqlParser.FROM, 0); } + public StatementContext statement() { + return getRuleContext(StatementContext.class,0); + } + public PrepareContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterPrepare(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitPrepare(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitPrepare(this); + else return visitor.visitChildren(this); + } + } + public static class DropMaterializedViewContext extends StatementContext { + public TerminalNode DROP() { return getToken(PrestoSqlParser.DROP, 0); } + public TerminalNode MATERIALIZED() { return getToken(PrestoSqlParser.MATERIALIZED, 0); } + public TerminalNode VIEW() { return getToken(PrestoSqlParser.VIEW, 0); } + public QualifiedNameContext qualifiedName() { + return getRuleContext(QualifiedNameContext.class,0); + } + public TerminalNode IF() { return getToken(PrestoSqlParser.IF, 0); } + public TerminalNode EXISTS() { return getToken(PrestoSqlParser.EXISTS, 0); } + public DropMaterializedViewContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterDropMaterializedView(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitDropMaterializedView(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitDropMaterializedView(this); + else return visitor.visitChildren(this); + } + } + public static class UseContext extends StatementContext { + public IdentifierContext schema; + public IdentifierContext catalog; + public TerminalNode USE() { return getToken(PrestoSqlParser.USE, 0); } + public List identifier() { + return getRuleContexts(IdentifierContext.class); + } + public IdentifierContext identifier(int i) { + return getRuleContext(IdentifierContext.class,i); + } + public UseContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterUse(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitUse(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitUse(this); + else return visitor.visitChildren(this); + } + } + public static class DeallocateContext extends StatementContext { + public TerminalNode DEALLOCATE() { return getToken(PrestoSqlParser.DEALLOCATE, 0); } + public TerminalNode PREPARE() { return getToken(PrestoSqlParser.PREPARE, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public DeallocateContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterDeallocate(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitDeallocate(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitDeallocate(this); + else return visitor.visitChildren(this); + } + } + public static class RenameTableContext extends StatementContext { + public QualifiedNameContext from; + public QualifiedNameContext to; + public TerminalNode ALTER() { return getToken(PrestoSqlParser.ALTER, 0); } + public TerminalNode TABLE() { return getToken(PrestoSqlParser.TABLE, 0); } + public TerminalNode RENAME() { return getToken(PrestoSqlParser.RENAME, 0); } + public TerminalNode TO() { return getToken(PrestoSqlParser.TO, 0); } + public List qualifiedName() { + return getRuleContexts(QualifiedNameContext.class); + } + public QualifiedNameContext qualifiedName(int i) { + return getRuleContext(QualifiedNameContext.class,i); + } + public TerminalNode IF() { return getToken(PrestoSqlParser.IF, 0); } + public TerminalNode EXISTS() { return getToken(PrestoSqlParser.EXISTS, 0); } + public RenameTableContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterRenameTable(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitRenameTable(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitRenameTable(this); + else return visitor.visitChildren(this); + } + } + public static class CommitContext extends StatementContext { + public TerminalNode COMMIT() { return getToken(PrestoSqlParser.COMMIT, 0); } + public TerminalNode WORK() { return getToken(PrestoSqlParser.WORK, 0); } + public CommitContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterCommit(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitCommit(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitCommit(this); + else return visitor.visitChildren(this); + } + } + public static class CreateRoleContext extends StatementContext { + public IdentifierContext name; + public TerminalNode CREATE() { return getToken(PrestoSqlParser.CREATE, 0); } + public TerminalNode ROLE() { return getToken(PrestoSqlParser.ROLE, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode WITH() { return getToken(PrestoSqlParser.WITH, 0); } + public TerminalNode ADMIN() { return getToken(PrestoSqlParser.ADMIN, 0); } + public GrantorContext grantor() { + return getRuleContext(GrantorContext.class,0); + } + public CreateRoleContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterCreateRole(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitCreateRole(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitCreateRole(this); + else return visitor.visitChildren(this); + } + } + public static class ShowCreateFunctionContext extends StatementContext { + public TerminalNode SHOW() { return getToken(PrestoSqlParser.SHOW, 0); } + public TerminalNode CREATE() { return getToken(PrestoSqlParser.CREATE, 0); } + public TerminalNode FUNCTION() { return getToken(PrestoSqlParser.FUNCTION, 0); } + public QualifiedNameContext qualifiedName() { + return getRuleContext(QualifiedNameContext.class,0); + } + public TypesContext types() { + return getRuleContext(TypesContext.class,0); + } + public ShowCreateFunctionContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterShowCreateFunction(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitShowCreateFunction(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitShowCreateFunction(this); + else return visitor.visitChildren(this); + } + } + public static class DropColumnContext extends StatementContext { + public QualifiedNameContext tableName; + public QualifiedNameContext column; + public TerminalNode ALTER() { return getToken(PrestoSqlParser.ALTER, 0); } + public TerminalNode TABLE() { return getToken(PrestoSqlParser.TABLE, 0); } + public TerminalNode DROP() { return getToken(PrestoSqlParser.DROP, 0); } + public TerminalNode COLUMN() { return getToken(PrestoSqlParser.COLUMN, 0); } + public List qualifiedName() { + return getRuleContexts(QualifiedNameContext.class); + } + public QualifiedNameContext qualifiedName(int i) { + return getRuleContext(QualifiedNameContext.class,i); + } + public List IF() { return getTokens(PrestoSqlParser.IF); } + public TerminalNode IF(int i) { + return getToken(PrestoSqlParser.IF, i); + } + public List EXISTS() { return getTokens(PrestoSqlParser.EXISTS); } + public TerminalNode EXISTS(int i) { + return getToken(PrestoSqlParser.EXISTS, i); + } + public DropColumnContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterDropColumn(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitDropColumn(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitDropColumn(this); + else return visitor.visitChildren(this); + } + } + public static class DropViewContext extends StatementContext { + public TerminalNode DROP() { return getToken(PrestoSqlParser.DROP, 0); } + public TerminalNode VIEW() { return getToken(PrestoSqlParser.VIEW, 0); } + public QualifiedNameContext qualifiedName() { + return getRuleContext(QualifiedNameContext.class,0); + } + public TerminalNode IF() { return getToken(PrestoSqlParser.IF, 0); } + public TerminalNode EXISTS() { return getToken(PrestoSqlParser.EXISTS, 0); } + public DropViewContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterDropView(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitDropView(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitDropView(this); + else return visitor.visitChildren(this); + } + } + public static class ShowTablesContext extends StatementContext { + public StringContext pattern; + public StringContext escape; + public TerminalNode SHOW() { return getToken(PrestoSqlParser.SHOW, 0); } + public TerminalNode TABLES() { return getToken(PrestoSqlParser.TABLES, 0); } + public QualifiedNameContext qualifiedName() { + return getRuleContext(QualifiedNameContext.class,0); + } + public TerminalNode LIKE() { return getToken(PrestoSqlParser.LIKE, 0); } + public TerminalNode FROM() { return getToken(PrestoSqlParser.FROM, 0); } + public TerminalNode IN() { return getToken(PrestoSqlParser.IN, 0); } + public List string() { + return getRuleContexts(StringContext.class); + } + public StringContext string(int i) { + return getRuleContext(StringContext.class,i); + } + public TerminalNode ESCAPE() { return getToken(PrestoSqlParser.ESCAPE, 0); } + public ShowTablesContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterShowTables(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitShowTables(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitShowTables(this); + else return visitor.visitChildren(this); + } + } + public static class ShowCatalogsContext extends StatementContext { + public StringContext pattern; + public TerminalNode SHOW() { return getToken(PrestoSqlParser.SHOW, 0); } + public TerminalNode CATALOGS() { return getToken(PrestoSqlParser.CATALOGS, 0); } + public TerminalNode LIKE() { return getToken(PrestoSqlParser.LIKE, 0); } + public StringContext string() { + return getRuleContext(StringContext.class,0); + } + public ShowCatalogsContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterShowCatalogs(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitShowCatalogs(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitShowCatalogs(this); + else return visitor.visitChildren(this); + } + } + public static class ShowRolesContext extends StatementContext { + public TerminalNode SHOW() { return getToken(PrestoSqlParser.SHOW, 0); } + public TerminalNode ROLES() { return getToken(PrestoSqlParser.ROLES, 0); } + public TerminalNode CURRENT() { return getToken(PrestoSqlParser.CURRENT, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode FROM() { return getToken(PrestoSqlParser.FROM, 0); } + public TerminalNode IN() { return getToken(PrestoSqlParser.IN, 0); } + public ShowRolesContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterShowRoles(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitShowRoles(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitShowRoles(this); + else return visitor.visitChildren(this); + } + } + public static class RenameColumnContext extends StatementContext { + public QualifiedNameContext tableName; + public IdentifierContext from; + public IdentifierContext to; + public TerminalNode ALTER() { return getToken(PrestoSqlParser.ALTER, 0); } + public TerminalNode TABLE() { return getToken(PrestoSqlParser.TABLE, 0); } + public TerminalNode RENAME() { return getToken(PrestoSqlParser.RENAME, 0); } + public TerminalNode COLUMN() { return getToken(PrestoSqlParser.COLUMN, 0); } + public TerminalNode TO() { return getToken(PrestoSqlParser.TO, 0); } + public QualifiedNameContext qualifiedName() { + return getRuleContext(QualifiedNameContext.class,0); + } + public List identifier() { + return getRuleContexts(IdentifierContext.class); + } + public IdentifierContext identifier(int i) { + return getRuleContext(IdentifierContext.class,i); + } + public List IF() { return getTokens(PrestoSqlParser.IF); } + public TerminalNode IF(int i) { + return getToken(PrestoSqlParser.IF, i); + } + public List EXISTS() { return getTokens(PrestoSqlParser.EXISTS); } + public TerminalNode EXISTS(int i) { + return getToken(PrestoSqlParser.EXISTS, i); + } + public RenameColumnContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterRenameColumn(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitRenameColumn(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitRenameColumn(this); + else return visitor.visitChildren(this); + } + } + public static class RevokeRolesContext extends StatementContext { + public TerminalNode REVOKE() { return getToken(PrestoSqlParser.REVOKE, 0); } + public RolesContext roles() { + return getRuleContext(RolesContext.class,0); + } + public TerminalNode FROM() { return getToken(PrestoSqlParser.FROM, 0); } + public List principal() { + return getRuleContexts(PrincipalContext.class); + } + public PrincipalContext principal(int i) { + return getRuleContext(PrincipalContext.class,i); + } + public TerminalNode ADMIN() { return getToken(PrestoSqlParser.ADMIN, 0); } + public TerminalNode OPTION() { return getToken(PrestoSqlParser.OPTION, 0); } + public TerminalNode FOR() { return getToken(PrestoSqlParser.FOR, 0); } + public TerminalNode GRANTED() { return getToken(PrestoSqlParser.GRANTED, 0); } + public TerminalNode BY() { return getToken(PrestoSqlParser.BY, 0); } + public GrantorContext grantor() { + return getRuleContext(GrantorContext.class,0); + } + public RevokeRolesContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterRevokeRoles(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitRevokeRoles(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitRevokeRoles(this); + else return visitor.visitChildren(this); + } + } + public static class ShowCreateTableContext extends StatementContext { + public TerminalNode SHOW() { return getToken(PrestoSqlParser.SHOW, 0); } + public TerminalNode CREATE() { return getToken(PrestoSqlParser.CREATE, 0); } + public TerminalNode TABLE() { return getToken(PrestoSqlParser.TABLE, 0); } + public QualifiedNameContext qualifiedName() { + return getRuleContext(QualifiedNameContext.class,0); + } + public ShowCreateTableContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterShowCreateTable(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitShowCreateTable(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitShowCreateTable(this); + else return visitor.visitChildren(this); + } + } + public static class ShowColumnsContext extends StatementContext { + public TerminalNode SHOW() { return getToken(PrestoSqlParser.SHOW, 0); } + public TerminalNode COLUMNS() { return getToken(PrestoSqlParser.COLUMNS, 0); } + public QualifiedNameContext qualifiedName() { + return getRuleContext(QualifiedNameContext.class,0); + } + public TerminalNode FROM() { return getToken(PrestoSqlParser.FROM, 0); } + public TerminalNode IN() { return getToken(PrestoSqlParser.IN, 0); } + public TerminalNode DESCRIBE() { return getToken(PrestoSqlParser.DESCRIBE, 0); } + public TerminalNode DESC() { return getToken(PrestoSqlParser.DESC, 0); } + public ShowColumnsContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterShowColumns(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitShowColumns(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitShowColumns(this); + else return visitor.visitChildren(this); + } + } + public static class ShowRoleGrantsContext extends StatementContext { + public TerminalNode SHOW() { return getToken(PrestoSqlParser.SHOW, 0); } + public TerminalNode ROLE() { return getToken(PrestoSqlParser.ROLE, 0); } + public TerminalNode GRANTS() { return getToken(PrestoSqlParser.GRANTS, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode FROM() { return getToken(PrestoSqlParser.FROM, 0); } + public TerminalNode IN() { return getToken(PrestoSqlParser.IN, 0); } + public ShowRoleGrantsContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterShowRoleGrants(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitShowRoleGrants(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitShowRoleGrants(this); + else return visitor.visitChildren(this); + } + } + public static class AddColumnContext extends StatementContext { + public QualifiedNameContext tableName; + public ColumnDefinitionContext column; + public TerminalNode ALTER() { return getToken(PrestoSqlParser.ALTER, 0); } + public TerminalNode TABLE() { return getToken(PrestoSqlParser.TABLE, 0); } + public TerminalNode ADD() { return getToken(PrestoSqlParser.ADD, 0); } + public TerminalNode COLUMN() { return getToken(PrestoSqlParser.COLUMN, 0); } + public QualifiedNameContext qualifiedName() { + return getRuleContext(QualifiedNameContext.class,0); + } + public ColumnDefinitionContext columnDefinition() { + return getRuleContext(ColumnDefinitionContext.class,0); + } + public List IF() { return getTokens(PrestoSqlParser.IF); } + public TerminalNode IF(int i) { + return getToken(PrestoSqlParser.IF, i); + } + public List EXISTS() { return getTokens(PrestoSqlParser.EXISTS); } + public TerminalNode EXISTS(int i) { + return getToken(PrestoSqlParser.EXISTS, i); + } + public TerminalNode NOT() { return getToken(PrestoSqlParser.NOT, 0); } + public AddColumnContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterAddColumn(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitAddColumn(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitAddColumn(this); + else return visitor.visitChildren(this); + } + } + public static class ResetSessionContext extends StatementContext { + public TerminalNode RESET() { return getToken(PrestoSqlParser.RESET, 0); } + public TerminalNode SESSION() { return getToken(PrestoSqlParser.SESSION, 0); } + public QualifiedNameContext qualifiedName() { + return getRuleContext(QualifiedNameContext.class,0); + } + public ResetSessionContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterResetSession(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitResetSession(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitResetSession(this); + else return visitor.visitChildren(this); + } + } + public static class InsertIntoContext extends StatementContext { + public TerminalNode INSERT() { return getToken(PrestoSqlParser.INSERT, 0); } + public TerminalNode INTO() { return getToken(PrestoSqlParser.INTO, 0); } + public QualifiedNameContext qualifiedName() { + return getRuleContext(QualifiedNameContext.class,0); + } + public QueryContext query() { + return getRuleContext(QueryContext.class,0); + } + public ColumnAliasesContext columnAliases() { + return getRuleContext(ColumnAliasesContext.class,0); + } + public InsertIntoContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterInsertInto(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitInsertInto(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitInsertInto(this); + else return visitor.visitChildren(this); + } + } + public static class ShowSessionContext extends StatementContext { + public TerminalNode SHOW() { return getToken(PrestoSqlParser.SHOW, 0); } + public TerminalNode SESSION() { return getToken(PrestoSqlParser.SESSION, 0); } + public ShowSessionContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterShowSession(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitShowSession(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitShowSession(this); + else return visitor.visitChildren(this); + } + } + public static class CreateSchemaContext extends StatementContext { + public TerminalNode CREATE() { return getToken(PrestoSqlParser.CREATE, 0); } + public TerminalNode SCHEMA() { return getToken(PrestoSqlParser.SCHEMA, 0); } + public QualifiedNameContext qualifiedName() { + return getRuleContext(QualifiedNameContext.class,0); + } + public TerminalNode IF() { return getToken(PrestoSqlParser.IF, 0); } + public TerminalNode NOT() { return getToken(PrestoSqlParser.NOT, 0); } + public TerminalNode EXISTS() { return getToken(PrestoSqlParser.EXISTS, 0); } + public TerminalNode WITH() { return getToken(PrestoSqlParser.WITH, 0); } + public PropertiesContext properties() { + return getRuleContext(PropertiesContext.class,0); + } + public CreateSchemaContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterCreateSchema(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitCreateSchema(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitCreateSchema(this); + else return visitor.visitChildren(this); + } + } + public static class ExecuteContext extends StatementContext { + public TerminalNode EXECUTE() { return getToken(PrestoSqlParser.EXECUTE, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode USING() { return getToken(PrestoSqlParser.USING, 0); } + public List expression() { + return getRuleContexts(ExpressionContext.class); + } + public ExpressionContext expression(int i) { + return getRuleContext(ExpressionContext.class,i); + } + public ExecuteContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterExecute(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitExecute(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitExecute(this); + else return visitor.visitChildren(this); + } + } + public static class RenameSchemaContext extends StatementContext { + public TerminalNode ALTER() { return getToken(PrestoSqlParser.ALTER, 0); } + public TerminalNode SCHEMA() { return getToken(PrestoSqlParser.SCHEMA, 0); } + public QualifiedNameContext qualifiedName() { + return getRuleContext(QualifiedNameContext.class,0); + } + public TerminalNode RENAME() { return getToken(PrestoSqlParser.RENAME, 0); } + public TerminalNode TO() { return getToken(PrestoSqlParser.TO, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public RenameSchemaContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterRenameSchema(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitRenameSchema(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitRenameSchema(this); + else return visitor.visitChildren(this); + } + } + public static class DropRoleContext extends StatementContext { + public IdentifierContext name; + public TerminalNode DROP() { return getToken(PrestoSqlParser.DROP, 0); } + public TerminalNode ROLE() { return getToken(PrestoSqlParser.ROLE, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public DropRoleContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterDropRole(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitDropRole(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitDropRole(this); + else return visitor.visitChildren(this); + } + } + public static class AnalyzeContext extends StatementContext { + public TerminalNode ANALYZE() { return getToken(PrestoSqlParser.ANALYZE, 0); } + public QualifiedNameContext qualifiedName() { + return getRuleContext(QualifiedNameContext.class,0); + } + public TerminalNode WITH() { return getToken(PrestoSqlParser.WITH, 0); } + public PropertiesContext properties() { + return getRuleContext(PropertiesContext.class,0); + } + public AnalyzeContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterAnalyze(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitAnalyze(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitAnalyze(this); + else return visitor.visitChildren(this); + } + } + public static class SetRoleContext extends StatementContext { + public IdentifierContext role; + public TerminalNode SET() { return getToken(PrestoSqlParser.SET, 0); } + public TerminalNode ROLE() { return getToken(PrestoSqlParser.ROLE, 0); } + public TerminalNode ALL() { return getToken(PrestoSqlParser.ALL, 0); } + public TerminalNode NONE() { return getToken(PrestoSqlParser.NONE, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public SetRoleContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterSetRole(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitSetRole(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitSetRole(this); + else return visitor.visitChildren(this); + } + } + public static class CreateFunctionContext extends StatementContext { + public QualifiedNameContext functionName; + public TypeContext returnType; + public TerminalNode CREATE() { return getToken(PrestoSqlParser.CREATE, 0); } + public TerminalNode FUNCTION() { return getToken(PrestoSqlParser.FUNCTION, 0); } + public TerminalNode RETURNS() { return getToken(PrestoSqlParser.RETURNS, 0); } + public RoutineCharacteristicsContext routineCharacteristics() { + return getRuleContext(RoutineCharacteristicsContext.class,0); + } + public RoutineBodyContext routineBody() { + return getRuleContext(RoutineBodyContext.class,0); + } + public QualifiedNameContext qualifiedName() { + return getRuleContext(QualifiedNameContext.class,0); + } + public TypeContext type() { + return getRuleContext(TypeContext.class,0); + } + public TerminalNode OR() { return getToken(PrestoSqlParser.OR, 0); } + public TerminalNode REPLACE() { return getToken(PrestoSqlParser.REPLACE, 0); } + public TerminalNode TEMPORARY() { return getToken(PrestoSqlParser.TEMPORARY, 0); } + public List sqlParameterDeclaration() { + return getRuleContexts(SqlParameterDeclarationContext.class); + } + public SqlParameterDeclarationContext sqlParameterDeclaration(int i) { + return getRuleContext(SqlParameterDeclarationContext.class,i); + } + public TerminalNode COMMENT() { return getToken(PrestoSqlParser.COMMENT, 0); } + public StringContext string() { + return getRuleContext(StringContext.class,0); + } + public CreateFunctionContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterCreateFunction(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitCreateFunction(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitCreateFunction(this); + else return visitor.visitChildren(this); + } + } + public static class ShowGrantsContext extends StatementContext { + public TerminalNode SHOW() { return getToken(PrestoSqlParser.SHOW, 0); } + public TerminalNode GRANTS() { return getToken(PrestoSqlParser.GRANTS, 0); } + public TerminalNode ON() { return getToken(PrestoSqlParser.ON, 0); } + public QualifiedNameContext qualifiedName() { + return getRuleContext(QualifiedNameContext.class,0); + } + public TerminalNode TABLE() { return getToken(PrestoSqlParser.TABLE, 0); } + public ShowGrantsContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterShowGrants(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitShowGrants(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitShowGrants(this); + else return visitor.visitChildren(this); + } + } + public static class DropSchemaContext extends StatementContext { + public TerminalNode DROP() { return getToken(PrestoSqlParser.DROP, 0); } + public TerminalNode SCHEMA() { return getToken(PrestoSqlParser.SCHEMA, 0); } + public QualifiedNameContext qualifiedName() { + return getRuleContext(QualifiedNameContext.class,0); + } + public TerminalNode IF() { return getToken(PrestoSqlParser.IF, 0); } + public TerminalNode EXISTS() { return getToken(PrestoSqlParser.EXISTS, 0); } + public TerminalNode CASCADE() { return getToken(PrestoSqlParser.CASCADE, 0); } + public TerminalNode RESTRICT() { return getToken(PrestoSqlParser.RESTRICT, 0); } + public DropSchemaContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterDropSchema(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitDropSchema(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitDropSchema(this); + else return visitor.visitChildren(this); + } + } + public static class ShowCreateViewContext extends StatementContext { + public TerminalNode SHOW() { return getToken(PrestoSqlParser.SHOW, 0); } + public TerminalNode CREATE() { return getToken(PrestoSqlParser.CREATE, 0); } + public TerminalNode VIEW() { return getToken(PrestoSqlParser.VIEW, 0); } + public QualifiedNameContext qualifiedName() { + return getRuleContext(QualifiedNameContext.class,0); + } + public ShowCreateViewContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterShowCreateView(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitShowCreateView(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitShowCreateView(this); + else return visitor.visitChildren(this); + } + } + public static class CreateTableContext extends StatementContext { + public TerminalNode CREATE() { return getToken(PrestoSqlParser.CREATE, 0); } + public TerminalNode TABLE() { return getToken(PrestoSqlParser.TABLE, 0); } + public QualifiedNameContext qualifiedName() { + return getRuleContext(QualifiedNameContext.class,0); + } + public List tableElement() { + return getRuleContexts(TableElementContext.class); + } + public TableElementContext tableElement(int i) { + return getRuleContext(TableElementContext.class,i); + } + public TerminalNode IF() { return getToken(PrestoSqlParser.IF, 0); } + public TerminalNode NOT() { return getToken(PrestoSqlParser.NOT, 0); } + public TerminalNode EXISTS() { return getToken(PrestoSqlParser.EXISTS, 0); } + public TerminalNode COMMENT() { return getToken(PrestoSqlParser.COMMENT, 0); } + public StringContext string() { + return getRuleContext(StringContext.class,0); + } + public TerminalNode WITH() { return getToken(PrestoSqlParser.WITH, 0); } + public PropertiesContext properties() { + return getRuleContext(PropertiesContext.class,0); + } + public CreateTableContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterCreateTable(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitCreateTable(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitCreateTable(this); + else return visitor.visitChildren(this); + } + } + public static class StartTransactionContext extends StatementContext { + public TerminalNode START() { return getToken(PrestoSqlParser.START, 0); } + public TerminalNode TRANSACTION() { return getToken(PrestoSqlParser.TRANSACTION, 0); } + public List transactionMode() { + return getRuleContexts(TransactionModeContext.class); + } + public TransactionModeContext transactionMode(int i) { + return getRuleContext(TransactionModeContext.class,i); + } + public StartTransactionContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterStartTransaction(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitStartTransaction(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitStartTransaction(this); + else return visitor.visitChildren(this); + } + } + public static class CreateTableAsSelectContext extends StatementContext { + public TerminalNode CREATE() { return getToken(PrestoSqlParser.CREATE, 0); } + public TerminalNode TABLE() { return getToken(PrestoSqlParser.TABLE, 0); } + public QualifiedNameContext qualifiedName() { + return getRuleContext(QualifiedNameContext.class,0); + } + public TerminalNode AS() { return getToken(PrestoSqlParser.AS, 0); } + public QueryContext query() { + return getRuleContext(QueryContext.class,0); + } + public TerminalNode IF() { return getToken(PrestoSqlParser.IF, 0); } + public TerminalNode NOT() { return getToken(PrestoSqlParser.NOT, 0); } + public TerminalNode EXISTS() { return getToken(PrestoSqlParser.EXISTS, 0); } + public ColumnAliasesContext columnAliases() { + return getRuleContext(ColumnAliasesContext.class,0); + } + public TerminalNode COMMENT() { return getToken(PrestoSqlParser.COMMENT, 0); } + public StringContext string() { + return getRuleContext(StringContext.class,0); + } + public List WITH() { return getTokens(PrestoSqlParser.WITH); } + public TerminalNode WITH(int i) { + return getToken(PrestoSqlParser.WITH, i); + } + public PropertiesContext properties() { + return getRuleContext(PropertiesContext.class,0); + } + public TerminalNode DATA() { return getToken(PrestoSqlParser.DATA, 0); } + public TerminalNode NO() { return getToken(PrestoSqlParser.NO, 0); } + public CreateTableAsSelectContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterCreateTableAsSelect(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitCreateTableAsSelect(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitCreateTableAsSelect(this); + else return visitor.visitChildren(this); + } + } + public static class ShowStatsContext extends StatementContext { + public TerminalNode SHOW() { return getToken(PrestoSqlParser.SHOW, 0); } + public TerminalNode STATS() { return getToken(PrestoSqlParser.STATS, 0); } + public TerminalNode FOR() { return getToken(PrestoSqlParser.FOR, 0); } + public QualifiedNameContext qualifiedName() { + return getRuleContext(QualifiedNameContext.class,0); + } + public ShowStatsContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterShowStats(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitShowStats(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitShowStats(this); + else return visitor.visitChildren(this); + } + } + public static class DropFunctionContext extends StatementContext { + public TerminalNode DROP() { return getToken(PrestoSqlParser.DROP, 0); } + public TerminalNode FUNCTION() { return getToken(PrestoSqlParser.FUNCTION, 0); } + public QualifiedNameContext qualifiedName() { + return getRuleContext(QualifiedNameContext.class,0); + } + public TerminalNode TEMPORARY() { return getToken(PrestoSqlParser.TEMPORARY, 0); } + public TerminalNode IF() { return getToken(PrestoSqlParser.IF, 0); } + public TerminalNode EXISTS() { return getToken(PrestoSqlParser.EXISTS, 0); } + public TypesContext types() { + return getRuleContext(TypesContext.class,0); + } + public DropFunctionContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterDropFunction(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitDropFunction(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitDropFunction(this); + else return visitor.visitChildren(this); + } + } + public static class RevokeContext extends StatementContext { + public PrincipalContext grantee; + public TerminalNode REVOKE() { return getToken(PrestoSqlParser.REVOKE, 0); } + public TerminalNode ON() { return getToken(PrestoSqlParser.ON, 0); } + public QualifiedNameContext qualifiedName() { + return getRuleContext(QualifiedNameContext.class,0); + } + public TerminalNode FROM() { return getToken(PrestoSqlParser.FROM, 0); } + public PrincipalContext principal() { + return getRuleContext(PrincipalContext.class,0); + } + public List privilege() { + return getRuleContexts(PrivilegeContext.class); + } + public PrivilegeContext privilege(int i) { + return getRuleContext(PrivilegeContext.class,i); + } + public TerminalNode ALL() { return getToken(PrestoSqlParser.ALL, 0); } + public TerminalNode PRIVILEGES() { return getToken(PrestoSqlParser.PRIVILEGES, 0); } + public TerminalNode GRANT() { return getToken(PrestoSqlParser.GRANT, 0); } + public TerminalNode OPTION() { return getToken(PrestoSqlParser.OPTION, 0); } + public TerminalNode FOR() { return getToken(PrestoSqlParser.FOR, 0); } + public TerminalNode TABLE() { return getToken(PrestoSqlParser.TABLE, 0); } + public RevokeContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterRevoke(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitRevoke(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitRevoke(this); + else return visitor.visitChildren(this); + } + } + public static class CreateTypeContext extends StatementContext { + public TerminalNode CREATE() { return getToken(PrestoSqlParser.CREATE, 0); } + public TerminalNode TYPE() { return getToken(PrestoSqlParser.TYPE, 0); } + public QualifiedNameContext qualifiedName() { + return getRuleContext(QualifiedNameContext.class,0); + } + public TerminalNode AS() { return getToken(PrestoSqlParser.AS, 0); } + public List sqlParameterDeclaration() { + return getRuleContexts(SqlParameterDeclarationContext.class); + } + public SqlParameterDeclarationContext sqlParameterDeclaration(int i) { + return getRuleContext(SqlParameterDeclarationContext.class,i); + } + public TypeContext type() { + return getRuleContext(TypeContext.class,0); + } + public CreateTypeContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterCreateType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitCreateType(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitCreateType(this); + else return visitor.visitChildren(this); + } + } + public static class DeleteContext extends StatementContext { + public TerminalNode DELETE() { return getToken(PrestoSqlParser.DELETE, 0); } + public TerminalNode FROM() { return getToken(PrestoSqlParser.FROM, 0); } + public QualifiedNameContext qualifiedName() { + return getRuleContext(QualifiedNameContext.class,0); + } + public TerminalNode WHERE() { return getToken(PrestoSqlParser.WHERE, 0); } + public BooleanExpressionContext booleanExpression() { + return getRuleContext(BooleanExpressionContext.class,0); + } + public DeleteContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterDelete(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitDelete(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitDelete(this); + else return visitor.visitChildren(this); + } + } + public static class DescribeInputContext extends StatementContext { + public TerminalNode DESCRIBE() { return getToken(PrestoSqlParser.DESCRIBE, 0); } + public TerminalNode INPUT() { return getToken(PrestoSqlParser.INPUT, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public DescribeInputContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterDescribeInput(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitDescribeInput(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitDescribeInput(this); + else return visitor.visitChildren(this); + } + } + public static class ShowStatsForQueryContext extends StatementContext { + public TerminalNode SHOW() { return getToken(PrestoSqlParser.SHOW, 0); } + public TerminalNode STATS() { return getToken(PrestoSqlParser.STATS, 0); } + public TerminalNode FOR() { return getToken(PrestoSqlParser.FOR, 0); } + public QuerySpecificationContext querySpecification() { + return getRuleContext(QuerySpecificationContext.class,0); + } + public ShowStatsForQueryContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterShowStatsForQuery(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitShowStatsForQuery(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitShowStatsForQuery(this); + else return visitor.visitChildren(this); + } + } + public static class StatementDefaultContext extends StatementContext { + public QueryContext query() { + return getRuleContext(QueryContext.class,0); + } + public StatementDefaultContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterStatementDefault(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitStatementDefault(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitStatementDefault(this); + else return visitor.visitChildren(this); + } + } + public static class CreateMaterializedViewContext extends StatementContext { + public TerminalNode CREATE() { return getToken(PrestoSqlParser.CREATE, 0); } + public TerminalNode MATERIALIZED() { return getToken(PrestoSqlParser.MATERIALIZED, 0); } + public TerminalNode VIEW() { return getToken(PrestoSqlParser.VIEW, 0); } + public QualifiedNameContext qualifiedName() { + return getRuleContext(QualifiedNameContext.class,0); + } + public TerminalNode AS() { return getToken(PrestoSqlParser.AS, 0); } + public QueryContext query() { + return getRuleContext(QueryContext.class,0); + } + public TerminalNode IF() { return getToken(PrestoSqlParser.IF, 0); } + public TerminalNode NOT() { return getToken(PrestoSqlParser.NOT, 0); } + public TerminalNode EXISTS() { return getToken(PrestoSqlParser.EXISTS, 0); } + public TerminalNode COMMENT() { return getToken(PrestoSqlParser.COMMENT, 0); } + public StringContext string() { + return getRuleContext(StringContext.class,0); + } + public TerminalNode WITH() { return getToken(PrestoSqlParser.WITH, 0); } + public PropertiesContext properties() { + return getRuleContext(PropertiesContext.class,0); + } + public CreateMaterializedViewContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterCreateMaterializedView(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitCreateMaterializedView(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitCreateMaterializedView(this); + else return visitor.visitChildren(this); + } + } + public static class AlterFunctionContext extends StatementContext { + public TerminalNode ALTER() { return getToken(PrestoSqlParser.ALTER, 0); } + public TerminalNode FUNCTION() { return getToken(PrestoSqlParser.FUNCTION, 0); } + public QualifiedNameContext qualifiedName() { + return getRuleContext(QualifiedNameContext.class,0); + } + public AlterRoutineCharacteristicsContext alterRoutineCharacteristics() { + return getRuleContext(AlterRoutineCharacteristicsContext.class,0); + } + public TypesContext types() { + return getRuleContext(TypesContext.class,0); + } + public AlterFunctionContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterAlterFunction(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitAlterFunction(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitAlterFunction(this); + else return visitor.visitChildren(this); + } + } + public static class SetSessionContext extends StatementContext { + public TerminalNode SET() { return getToken(PrestoSqlParser.SET, 0); } + public TerminalNode SESSION() { return getToken(PrestoSqlParser.SESSION, 0); } + public QualifiedNameContext qualifiedName() { + return getRuleContext(QualifiedNameContext.class,0); + } + public TerminalNode EQ() { return getToken(PrestoSqlParser.EQ, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public SetSessionContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterSetSession(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitSetSession(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitSetSession(this); + else return visitor.visitChildren(this); + } + } + public static class CreateViewContext extends StatementContext { + public TerminalNode CREATE() { return getToken(PrestoSqlParser.CREATE, 0); } + public TerminalNode VIEW() { return getToken(PrestoSqlParser.VIEW, 0); } + public QualifiedNameContext qualifiedName() { + return getRuleContext(QualifiedNameContext.class,0); + } + public TerminalNode AS() { return getToken(PrestoSqlParser.AS, 0); } + public QueryContext query() { + return getRuleContext(QueryContext.class,0); + } + public TerminalNode OR() { return getToken(PrestoSqlParser.OR, 0); } + public TerminalNode REPLACE() { return getToken(PrestoSqlParser.REPLACE, 0); } + public TerminalNode SECURITY() { return getToken(PrestoSqlParser.SECURITY, 0); } + public TerminalNode DEFINER() { return getToken(PrestoSqlParser.DEFINER, 0); } + public TerminalNode INVOKER() { return getToken(PrestoSqlParser.INVOKER, 0); } + public CreateViewContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterCreateView(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitCreateView(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitCreateView(this); + else return visitor.visitChildren(this); + } + } + public static class ShowSchemasContext extends StatementContext { + public StringContext pattern; + public StringContext escape; + public TerminalNode SHOW() { return getToken(PrestoSqlParser.SHOW, 0); } + public TerminalNode SCHEMAS() { return getToken(PrestoSqlParser.SCHEMAS, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode LIKE() { return getToken(PrestoSqlParser.LIKE, 0); } + public TerminalNode FROM() { return getToken(PrestoSqlParser.FROM, 0); } + public TerminalNode IN() { return getToken(PrestoSqlParser.IN, 0); } + public List string() { + return getRuleContexts(StringContext.class); + } + public StringContext string(int i) { + return getRuleContext(StringContext.class,i); + } + public TerminalNode ESCAPE() { return getToken(PrestoSqlParser.ESCAPE, 0); } + public ShowSchemasContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterShowSchemas(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitShowSchemas(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitShowSchemas(this); + else return visitor.visitChildren(this); + } + } + public static class DropTableContext extends StatementContext { + public TerminalNode DROP() { return getToken(PrestoSqlParser.DROP, 0); } + public TerminalNode TABLE() { return getToken(PrestoSqlParser.TABLE, 0); } + public QualifiedNameContext qualifiedName() { + return getRuleContext(QualifiedNameContext.class,0); + } + public TerminalNode IF() { return getToken(PrestoSqlParser.IF, 0); } + public TerminalNode EXISTS() { return getToken(PrestoSqlParser.EXISTS, 0); } + public DropTableContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterDropTable(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitDropTable(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitDropTable(this); + else return visitor.visitChildren(this); + } + } + public static class RollbackContext extends StatementContext { + public TerminalNode ROLLBACK() { return getToken(PrestoSqlParser.ROLLBACK, 0); } + public TerminalNode WORK() { return getToken(PrestoSqlParser.WORK, 0); } + public RollbackContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterRollback(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitRollback(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitRollback(this); + else return visitor.visitChildren(this); + } + } + public static class GrantRolesContext extends StatementContext { + public TerminalNode GRANT() { return getToken(PrestoSqlParser.GRANT, 0); } + public RolesContext roles() { + return getRuleContext(RolesContext.class,0); + } + public TerminalNode TO() { return getToken(PrestoSqlParser.TO, 0); } + public List principal() { + return getRuleContexts(PrincipalContext.class); + } + public PrincipalContext principal(int i) { + return getRuleContext(PrincipalContext.class,i); + } + public TerminalNode WITH() { return getToken(PrestoSqlParser.WITH, 0); } + public TerminalNode ADMIN() { return getToken(PrestoSqlParser.ADMIN, 0); } + public TerminalNode OPTION() { return getToken(PrestoSqlParser.OPTION, 0); } + public TerminalNode GRANTED() { return getToken(PrestoSqlParser.GRANTED, 0); } + public TerminalNode BY() { return getToken(PrestoSqlParser.BY, 0); } + public GrantorContext grantor() { + return getRuleContext(GrantorContext.class,0); + } + public GrantRolesContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterGrantRoles(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitGrantRoles(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitGrantRoles(this); + else return visitor.visitChildren(this); + } + } + public static class CallContext extends StatementContext { + public TerminalNode CALL() { return getToken(PrestoSqlParser.CALL, 0); } + public QualifiedNameContext qualifiedName() { + return getRuleContext(QualifiedNameContext.class,0); + } + public List callArgument() { + return getRuleContexts(CallArgumentContext.class); + } + public CallArgumentContext callArgument(int i) { + return getRuleContext(CallArgumentContext.class,i); + } + public CallContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterCall(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitCall(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitCall(this); + else return visitor.visitChildren(this); + } + } + public static class RefreshMaterializedViewContext extends StatementContext { + public TerminalNode REFRESH() { return getToken(PrestoSqlParser.REFRESH, 0); } + public TerminalNode MATERIALIZED() { return getToken(PrestoSqlParser.MATERIALIZED, 0); } + public TerminalNode VIEW() { return getToken(PrestoSqlParser.VIEW, 0); } + public QualifiedNameContext qualifiedName() { + return getRuleContext(QualifiedNameContext.class,0); + } + public TerminalNode WHERE() { return getToken(PrestoSqlParser.WHERE, 0); } + public BooleanExpressionContext booleanExpression() { + return getRuleContext(BooleanExpressionContext.class,0); + } + public RefreshMaterializedViewContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterRefreshMaterializedView(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitRefreshMaterializedView(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitRefreshMaterializedView(this); + else return visitor.visitChildren(this); + } + } + public static class ShowCreateMaterializedViewContext extends StatementContext { + public TerminalNode SHOW() { return getToken(PrestoSqlParser.SHOW, 0); } + public TerminalNode CREATE() { return getToken(PrestoSqlParser.CREATE, 0); } + public TerminalNode MATERIALIZED() { return getToken(PrestoSqlParser.MATERIALIZED, 0); } + public TerminalNode VIEW() { return getToken(PrestoSqlParser.VIEW, 0); } + public QualifiedNameContext qualifiedName() { + return getRuleContext(QualifiedNameContext.class,0); + } + public ShowCreateMaterializedViewContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterShowCreateMaterializedView(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitShowCreateMaterializedView(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitShowCreateMaterializedView(this); + else return visitor.visitChildren(this); + } + } + public static class ShowFunctionsContext extends StatementContext { + public StringContext pattern; + public StringContext escape; + public TerminalNode SHOW() { return getToken(PrestoSqlParser.SHOW, 0); } + public TerminalNode FUNCTIONS() { return getToken(PrestoSqlParser.FUNCTIONS, 0); } + public TerminalNode LIKE() { return getToken(PrestoSqlParser.LIKE, 0); } + public List string() { + return getRuleContexts(StringContext.class); + } + public StringContext string(int i) { + return getRuleContext(StringContext.class,i); + } + public TerminalNode ESCAPE() { return getToken(PrestoSqlParser.ESCAPE, 0); } + public ShowFunctionsContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterShowFunctions(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitShowFunctions(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitShowFunctions(this); + else return visitor.visitChildren(this); + } + } + public static class DescribeOutputContext extends StatementContext { + public TerminalNode DESCRIBE() { return getToken(PrestoSqlParser.DESCRIBE, 0); } + public TerminalNode OUTPUT() { return getToken(PrestoSqlParser.OUTPUT, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public DescribeOutputContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterDescribeOutput(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitDescribeOutput(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitDescribeOutput(this); + else return visitor.visitChildren(this); + } + } + public static class GrantContext extends StatementContext { + public PrincipalContext grantee; + public List GRANT() { return getTokens(PrestoSqlParser.GRANT); } + public TerminalNode GRANT(int i) { + return getToken(PrestoSqlParser.GRANT, i); + } + public TerminalNode ON() { return getToken(PrestoSqlParser.ON, 0); } + public QualifiedNameContext qualifiedName() { + return getRuleContext(QualifiedNameContext.class,0); + } + public TerminalNode TO() { return getToken(PrestoSqlParser.TO, 0); } + public PrincipalContext principal() { + return getRuleContext(PrincipalContext.class,0); + } + public List privilege() { + return getRuleContexts(PrivilegeContext.class); + } + public PrivilegeContext privilege(int i) { + return getRuleContext(PrivilegeContext.class,i); + } + public TerminalNode ALL() { return getToken(PrestoSqlParser.ALL, 0); } + public TerminalNode PRIVILEGES() { return getToken(PrestoSqlParser.PRIVILEGES, 0); } + public TerminalNode TABLE() { return getToken(PrestoSqlParser.TABLE, 0); } + public TerminalNode WITH() { return getToken(PrestoSqlParser.WITH, 0); } + public TerminalNode OPTION() { return getToken(PrestoSqlParser.OPTION, 0); } + public GrantContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterGrant(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitGrant(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitGrant(this); + else return visitor.visitChildren(this); + } + } + + public final StatementContext statement() throws RecognitionException { + StatementContext _localctx = new StatementContext(_ctx, getState()); + enterRule(_localctx, 6, RULE_statement); + int _la; + try { + setState(791); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,88,_ctx) ) { + case 1: + _localctx = new StatementDefaultContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(163); + query(); + } + break; + case 2: + _localctx = new UseContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(164); + match(USE); + setState(165); + ((UseContext)_localctx).schema = identifier(); + } + break; + case 3: + _localctx = new UseContext(_localctx); + enterOuterAlt(_localctx, 3); + { + setState(166); + match(USE); + setState(167); + ((UseContext)_localctx).catalog = identifier(); + setState(168); + match(T__0); + setState(169); + ((UseContext)_localctx).schema = identifier(); + } + break; + case 4: + _localctx = new CreateSchemaContext(_localctx); + enterOuterAlt(_localctx, 4); + { + setState(171); + match(CREATE); + setState(172); + match(SCHEMA); + setState(176); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,0,_ctx) ) { + case 1: + { + setState(173); + match(IF); + setState(174); + match(NOT); + setState(175); + match(EXISTS); + } + break; + } + setState(178); + qualifiedName(); + setState(181); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==WITH) { + { + setState(179); + match(WITH); + setState(180); + properties(); + } + } + + } + break; + case 5: + _localctx = new DropSchemaContext(_localctx); + enterOuterAlt(_localctx, 5); + { + setState(183); + match(DROP); + setState(184); + match(SCHEMA); + setState(187); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,2,_ctx) ) { + case 1: + { + setState(185); + match(IF); + setState(186); + match(EXISTS); + } + break; + } + setState(189); + qualifiedName(); + setState(191); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==CASCADE || _la==RESTRICT) { + { + setState(190); + _la = _input.LA(1); + if ( !(_la==CASCADE || _la==RESTRICT) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + } + + } + break; + case 6: + _localctx = new RenameSchemaContext(_localctx); + enterOuterAlt(_localctx, 6); + { + setState(193); + match(ALTER); + setState(194); + match(SCHEMA); + setState(195); + qualifiedName(); + setState(196); + match(RENAME); + setState(197); + match(TO); + setState(198); + identifier(); + } + break; + case 7: + _localctx = new CreateTableAsSelectContext(_localctx); + enterOuterAlt(_localctx, 7); + { + setState(200); + match(CREATE); + setState(201); + match(TABLE); + setState(205); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,4,_ctx) ) { + case 1: + { + setState(202); + match(IF); + setState(203); + match(NOT); + setState(204); + match(EXISTS); + } + break; + } + setState(207); + qualifiedName(); + setState(209); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==T__1) { + { + setState(208); + columnAliases(); + } + } + + setState(213); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==COMMENT) { + { + setState(211); + match(COMMENT); + setState(212); + string(); + } + } + + setState(217); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==WITH) { + { + setState(215); + match(WITH); + setState(216); + properties(); + } + } + + setState(219); + match(AS); + setState(225); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,8,_ctx) ) { + case 1: + { + setState(220); + query(); + } + break; + case 2: + { + setState(221); + match(T__1); + setState(222); + query(); + setState(223); + match(T__2); + } + break; + } + setState(232); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==WITH) { + { + setState(227); + match(WITH); + setState(229); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==NO) { + { + setState(228); + match(NO); + } + } + + setState(231); + match(DATA); + } + } + + } + break; + case 8: + _localctx = new CreateTableContext(_localctx); + enterOuterAlt(_localctx, 8); + { + setState(234); + match(CREATE); + setState(235); + match(TABLE); + setState(239); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,11,_ctx) ) { + case 1: + { + setState(236); + match(IF); + setState(237); + match(NOT); + setState(238); + match(EXISTS); + } + break; + } + setState(241); + qualifiedName(); + setState(242); + match(T__1); + setState(243); + tableElement(); + setState(248); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__3) { + { + { + setState(244); + match(T__3); + setState(245); + tableElement(); + } + } + setState(250); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(251); + match(T__2); + setState(254); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==COMMENT) { + { + setState(252); + match(COMMENT); + setState(253); + string(); + } + } + + setState(258); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==WITH) { + { + setState(256); + match(WITH); + setState(257); + properties(); + } + } + + } + break; + case 9: + _localctx = new DropTableContext(_localctx); + enterOuterAlt(_localctx, 9); + { + setState(260); + match(DROP); + setState(261); + match(TABLE); + setState(264); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,15,_ctx) ) { + case 1: + { + setState(262); + match(IF); + setState(263); + match(EXISTS); + } + break; + } + setState(266); + qualifiedName(); + } + break; + case 10: + _localctx = new InsertIntoContext(_localctx); + enterOuterAlt(_localctx, 10); + { + setState(267); + match(INSERT); + setState(268); + match(INTO); + setState(269); + qualifiedName(); + setState(271); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,16,_ctx) ) { + case 1: + { + setState(270); + columnAliases(); + } + break; + } + setState(273); + query(); + } + break; + case 11: + _localctx = new DeleteContext(_localctx); + enterOuterAlt(_localctx, 11); + { + setState(275); + match(DELETE); + setState(276); + match(FROM); + setState(277); + qualifiedName(); + setState(280); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==WHERE) { + { + setState(278); + match(WHERE); + setState(279); + booleanExpression(0); + } + } + + } + break; + case 12: + _localctx = new RenameTableContext(_localctx); + enterOuterAlt(_localctx, 12); + { + setState(282); + match(ALTER); + setState(283); + match(TABLE); + setState(286); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,18,_ctx) ) { + case 1: + { + setState(284); + match(IF); + setState(285); + match(EXISTS); + } + break; + } + setState(288); + ((RenameTableContext)_localctx).from = qualifiedName(); + setState(289); + match(RENAME); + setState(290); + match(TO); + setState(291); + ((RenameTableContext)_localctx).to = qualifiedName(); + } + break; + case 13: + _localctx = new RenameColumnContext(_localctx); + enterOuterAlt(_localctx, 13); + { + setState(293); + match(ALTER); + setState(294); + match(TABLE); + setState(297); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,19,_ctx) ) { + case 1: + { + setState(295); + match(IF); + setState(296); + match(EXISTS); + } + break; + } + setState(299); + ((RenameColumnContext)_localctx).tableName = qualifiedName(); + setState(300); + match(RENAME); + setState(301); + match(COLUMN); + setState(304); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,20,_ctx) ) { + case 1: + { + setState(302); + match(IF); + setState(303); + match(EXISTS); + } + break; + } + setState(306); + ((RenameColumnContext)_localctx).from = identifier(); + setState(307); + match(TO); + setState(308); + ((RenameColumnContext)_localctx).to = identifier(); + } + break; + case 14: + _localctx = new DropColumnContext(_localctx); + enterOuterAlt(_localctx, 14); + { + setState(310); + match(ALTER); + setState(311); + match(TABLE); + setState(314); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,21,_ctx) ) { + case 1: + { + setState(312); + match(IF); + setState(313); + match(EXISTS); + } + break; + } + setState(316); + ((DropColumnContext)_localctx).tableName = qualifiedName(); + setState(317); + match(DROP); + setState(318); + match(COLUMN); + setState(321); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,22,_ctx) ) { + case 1: + { + setState(319); + match(IF); + setState(320); + match(EXISTS); + } + break; + } + setState(323); + ((DropColumnContext)_localctx).column = qualifiedName(); + } + break; + case 15: + _localctx = new AddColumnContext(_localctx); + enterOuterAlt(_localctx, 15); + { + setState(325); + match(ALTER); + setState(326); + match(TABLE); + setState(329); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,23,_ctx) ) { + case 1: + { + setState(327); + match(IF); + setState(328); + match(EXISTS); + } + break; + } + setState(331); + ((AddColumnContext)_localctx).tableName = qualifiedName(); + setState(332); + match(ADD); + setState(333); + match(COLUMN); + setState(337); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,24,_ctx) ) { + case 1: + { + setState(334); + match(IF); + setState(335); + match(NOT); + setState(336); + match(EXISTS); + } + break; + } + setState(339); + ((AddColumnContext)_localctx).column = columnDefinition(); + } + break; + case 16: + _localctx = new AnalyzeContext(_localctx); + enterOuterAlt(_localctx, 16); + { + setState(341); + match(ANALYZE); + setState(342); + qualifiedName(); + setState(345); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==WITH) { + { + setState(343); + match(WITH); + setState(344); + properties(); + } + } + + } + break; + case 17: + _localctx = new CreateTypeContext(_localctx); + enterOuterAlt(_localctx, 17); + { + setState(347); + match(CREATE); + setState(348); + match(TYPE); + setState(349); + qualifiedName(); + setState(350); + match(AS); + setState(363); + _errHandler.sync(this); + switch (_input.LA(1)) { + case T__1: + { + setState(351); + match(T__1); + setState(352); + sqlParameterDeclaration(); + setState(357); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__3) { + { + { + setState(353); + match(T__3); + setState(354); + sqlParameterDeclaration(); + } + } + setState(359); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(360); + match(T__2); + } + break; + case ADD: + case ADMIN: + case ALL: + case ANALYZE: + case ANY: + case ARRAY: + case ASC: + case AT: + case BERNOULLI: + case CALL: + case CALLED: + case CASCADE: + case CATALOGS: + case COLUMN: + case COLUMNS: + case COMMENT: + case COMMIT: + case COMMITTED: + case CURRENT: + case CURRENT_ROLE: + case DATA: + case DATE: + case DAY: + case DEFINER: + case DESC: + case DETERMINISTIC: + case DISTRIBUTED: + case EXCLUDING: + case EXPLAIN: + case EXTERNAL: + case FILTER: + case FIRST: + case FOLLOWING: + case FORMAT: + case FUNCTION: + case FUNCTIONS: + case GRANT: + case GRANTED: + case GRANTS: + case GRAPHVIZ: + case HOUR: + case IF: + case IGNORE: + case INCLUDING: + case INPUT: + case INTERVAL: + case INVOKER: + case IO: + case ISOLATION: + case JSON: + case LANGUAGE: + case LAST: + case LATERAL: + case LEVEL: + case LIMIT: + case LOGICAL: + case MAP: + case MATERIALIZED: + case MINUTE: + case MONTH: + case NAME: + case NFC: + case NFD: + case NFKC: + case NFKD: + case NO: + case NONE: + case NULLIF: + case NULLS: + case OFFSET: + case ONLY: + case OPTION: + case ORDINALITY: + case OUTPUT: + case OVER: + case PARTITION: + case PARTITIONS: + case POSITION: + case PRECEDING: + case PRIVILEGES: + case PROPERTIES: + case RANGE: + case READ: + case REFRESH: + case RENAME: + case REPEATABLE: + case REPLACE: + case RESET: + case RESPECT: + case RESTRICT: + case RETURN: + case RETURNS: + case REVOKE: + case ROLE: + case ROLES: + case ROLLBACK: + case ROW: + case ROWS: + case SCHEMA: + case SCHEMAS: + case SECOND: + case SECURITY: + case SERIALIZABLE: + case SESSION: + case SET: + case SETS: + case SHOW: + case SOME: + case SQL: + case START: + case STATS: + case SUBSTRING: + case SYSTEM: + case TABLES: + case TABLESAMPLE: + case TEMPORARY: + case TEXT: + case TIME: + case TIMESTAMP: + case TO: + case TRANSACTION: + case TRY_CAST: + case TYPE: + case UNBOUNDED: + case UNCOMMITTED: + case USE: + case USER: + case VALIDATE: + case VERBOSE: + case VIEW: + case WORK: + case WRITE: + case YEAR: + case ZONE: + case IDENTIFIER: + case DIGIT_IDENTIFIER: + case QUOTED_IDENTIFIER: + case BACKQUOTED_IDENTIFIER: + case TIME_WITH_TIME_ZONE: + case TIMESTAMP_WITH_TIME_ZONE: + case DOUBLE_PRECISION: + { + setState(362); + type(0); + } + break; + default: + throw new NoViableAltException(this); + } + } + break; + case 18: + _localctx = new CreateViewContext(_localctx); + enterOuterAlt(_localctx, 18); + { + setState(365); + match(CREATE); + setState(368); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==OR) { + { + setState(366); + match(OR); + setState(367); + match(REPLACE); + } + } + + setState(370); + match(VIEW); + setState(371); + qualifiedName(); + setState(374); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==SECURITY) { + { + setState(372); + match(SECURITY); + setState(373); + _la = _input.LA(1); + if ( !(_la==DEFINER || _la==INVOKER) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + } + + setState(376); + match(AS); + setState(377); + query(); + } + break; + case 19: + _localctx = new DropViewContext(_localctx); + enterOuterAlt(_localctx, 19); + { + setState(379); + match(DROP); + setState(380); + match(VIEW); + setState(383); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,30,_ctx) ) { + case 1: + { + setState(381); + match(IF); + setState(382); + match(EXISTS); + } + break; + } + setState(385); + qualifiedName(); + } + break; + case 20: + _localctx = new CreateMaterializedViewContext(_localctx); + enterOuterAlt(_localctx, 20); + { + setState(386); + match(CREATE); + setState(387); + match(MATERIALIZED); + setState(388); + match(VIEW); + setState(392); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,31,_ctx) ) { + case 1: + { + setState(389); + match(IF); + setState(390); + match(NOT); + setState(391); + match(EXISTS); + } + break; + } + setState(394); + qualifiedName(); + setState(397); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==COMMENT) { + { + setState(395); + match(COMMENT); + setState(396); + string(); + } + } + + setState(401); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==WITH) { + { + setState(399); + match(WITH); + setState(400); + properties(); + } + } + + setState(403); + match(AS); + setState(409); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,34,_ctx) ) { + case 1: + { + setState(404); + query(); + } + break; + case 2: + { + setState(405); + match(T__1); + setState(406); + query(); + setState(407); + match(T__2); + } + break; + } + } + break; + case 21: + _localctx = new DropMaterializedViewContext(_localctx); + enterOuterAlt(_localctx, 21); + { + setState(411); + match(DROP); + setState(412); + match(MATERIALIZED); + setState(413); + match(VIEW); + setState(416); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,35,_ctx) ) { + case 1: + { + setState(414); + match(IF); + setState(415); + match(EXISTS); + } + break; + } + setState(418); + qualifiedName(); + } + break; + case 22: + _localctx = new RefreshMaterializedViewContext(_localctx); + enterOuterAlt(_localctx, 22); + { + setState(419); + match(REFRESH); + setState(420); + match(MATERIALIZED); + setState(421); + match(VIEW); + setState(422); + qualifiedName(); + setState(423); + match(WHERE); + setState(424); + booleanExpression(0); + } + break; + case 23: + _localctx = new CreateFunctionContext(_localctx); + enterOuterAlt(_localctx, 23); + { + setState(426); + match(CREATE); + setState(429); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==OR) { + { + setState(427); + match(OR); + setState(428); + match(REPLACE); + } + } + + setState(432); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==TEMPORARY) { + { + setState(431); + match(TEMPORARY); + } + } + + setState(434); + match(FUNCTION); + setState(435); + ((CreateFunctionContext)_localctx).functionName = qualifiedName(); + setState(436); + match(T__1); + setState(445); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ADD) | (1L << ADMIN) | (1L << ALL) | (1L << ANALYZE) | (1L << ANY) | (1L << ARRAY) | (1L << ASC) | (1L << AT) | (1L << BERNOULLI) | (1L << CALL) | (1L << CALLED) | (1L << CASCADE) | (1L << CATALOGS) | (1L << COLUMN) | (1L << COLUMNS) | (1L << COMMENT) | (1L << COMMIT) | (1L << COMMITTED) | (1L << CURRENT) | (1L << CURRENT_ROLE) | (1L << DATA) | (1L << DATE) | (1L << DAY) | (1L << DEFINER) | (1L << DESC) | (1L << DETERMINISTIC) | (1L << DISTRIBUTED) | (1L << EXCLUDING))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (EXPLAIN - 64)) | (1L << (EXTERNAL - 64)) | (1L << (FILTER - 64)) | (1L << (FIRST - 64)) | (1L << (FOLLOWING - 64)) | (1L << (FORMAT - 64)) | (1L << (FUNCTION - 64)) | (1L << (FUNCTIONS - 64)) | (1L << (GRANT - 64)) | (1L << (GRANTED - 64)) | (1L << (GRANTS - 64)) | (1L << (GRAPHVIZ - 64)) | (1L << (HOUR - 64)) | (1L << (IF - 64)) | (1L << (IGNORE - 64)) | (1L << (INCLUDING - 64)) | (1L << (INPUT - 64)) | (1L << (INTERVAL - 64)) | (1L << (INVOKER - 64)) | (1L << (IO - 64)) | (1L << (ISOLATION - 64)) | (1L << (JSON - 64)) | (1L << (LANGUAGE - 64)) | (1L << (LAST - 64)) | (1L << (LATERAL - 64)) | (1L << (LEVEL - 64)) | (1L << (LIMIT - 64)) | (1L << (LOGICAL - 64)) | (1L << (MAP - 64)) | (1L << (MATERIALIZED - 64)) | (1L << (MINUTE - 64)) | (1L << (MONTH - 64)) | (1L << (NAME - 64)) | (1L << (NFC - 64)) | (1L << (NFD - 64)) | (1L << (NFKC - 64)) | (1L << (NFKD - 64)) | (1L << (NO - 64)) | (1L << (NONE - 64)) | (1L << (NULLIF - 64)) | (1L << (NULLS - 64)))) != 0) || ((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & ((1L << (OFFSET - 128)) | (1L << (ONLY - 128)) | (1L << (OPTION - 128)) | (1L << (ORDINALITY - 128)) | (1L << (OUTPUT - 128)) | (1L << (OVER - 128)) | (1L << (PARTITION - 128)) | (1L << (PARTITIONS - 128)) | (1L << (POSITION - 128)) | (1L << (PRECEDING - 128)) | (1L << (PRIVILEGES - 128)) | (1L << (PROPERTIES - 128)) | (1L << (RANGE - 128)) | (1L << (READ - 128)) | (1L << (REFRESH - 128)) | (1L << (RENAME - 128)) | (1L << (REPEATABLE - 128)) | (1L << (REPLACE - 128)) | (1L << (RESET - 128)) | (1L << (RESPECT - 128)) | (1L << (RESTRICT - 128)) | (1L << (RETURN - 128)) | (1L << (RETURNS - 128)) | (1L << (REVOKE - 128)) | (1L << (ROLE - 128)) | (1L << (ROLES - 128)) | (1L << (ROLLBACK - 128)) | (1L << (ROW - 128)) | (1L << (ROWS - 128)) | (1L << (SCHEMA - 128)) | (1L << (SCHEMAS - 128)) | (1L << (SECOND - 128)) | (1L << (SECURITY - 128)) | (1L << (SERIALIZABLE - 128)) | (1L << (SESSION - 128)) | (1L << (SET - 128)) | (1L << (SETS - 128)) | (1L << (SHOW - 128)) | (1L << (SOME - 128)) | (1L << (SQL - 128)) | (1L << (START - 128)) | (1L << (STATS - 128)) | (1L << (SUBSTRING - 128)) | (1L << (SYSTEM - 128)) | (1L << (TABLES - 128)) | (1L << (TABLESAMPLE - 128)) | (1L << (TEMPORARY - 128)) | (1L << (TEXT - 128)) | (1L << (TIME - 128)) | (1L << (TIMESTAMP - 128)) | (1L << (TO - 128)) | (1L << (TRANSACTION - 128)))) != 0) || ((((_la - 192)) & ~0x3f) == 0 && ((1L << (_la - 192)) & ((1L << (TRY_CAST - 192)) | (1L << (TYPE - 192)) | (1L << (UNBOUNDED - 192)) | (1L << (UNCOMMITTED - 192)) | (1L << (USE - 192)) | (1L << (USER - 192)) | (1L << (VALIDATE - 192)) | (1L << (VERBOSE - 192)) | (1L << (VIEW - 192)) | (1L << (WORK - 192)) | (1L << (WRITE - 192)) | (1L << (YEAR - 192)) | (1L << (ZONE - 192)) | (1L << (IDENTIFIER - 192)) | (1L << (DIGIT_IDENTIFIER - 192)) | (1L << (QUOTED_IDENTIFIER - 192)) | (1L << (BACKQUOTED_IDENTIFIER - 192)))) != 0)) { + { + setState(437); + sqlParameterDeclaration(); + setState(442); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__3) { + { + { + setState(438); + match(T__3); + setState(439); + sqlParameterDeclaration(); + } + } + setState(444); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + + setState(447); + match(T__2); + setState(448); + match(RETURNS); + setState(449); + ((CreateFunctionContext)_localctx).returnType = type(0); + setState(452); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==COMMENT) { + { + setState(450); + match(COMMENT); + setState(451); + string(); + } + } + + setState(454); + routineCharacteristics(); + setState(455); + routineBody(); + } + break; + case 24: + _localctx = new AlterFunctionContext(_localctx); + enterOuterAlt(_localctx, 24); + { + setState(457); + match(ALTER); + setState(458); + match(FUNCTION); + setState(459); + qualifiedName(); + setState(461); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==T__1) { + { + setState(460); + types(); + } + } + + setState(463); + alterRoutineCharacteristics(); + } + break; + case 25: + _localctx = new DropFunctionContext(_localctx); + enterOuterAlt(_localctx, 25); + { + setState(465); + match(DROP); + setState(467); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==TEMPORARY) { + { + setState(466); + match(TEMPORARY); + } + } + + setState(469); + match(FUNCTION); + setState(472); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,43,_ctx) ) { + case 1: + { + setState(470); + match(IF); + setState(471); + match(EXISTS); + } + break; + } + setState(474); + qualifiedName(); + setState(476); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==T__1) { + { + setState(475); + types(); + } + } + + } + break; + case 26: + _localctx = new CallContext(_localctx); + enterOuterAlt(_localctx, 26); + { + setState(478); + match(CALL); + setState(479); + qualifiedName(); + setState(480); + match(T__1); + setState(489); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__1) | (1L << T__4) | (1L << ADD) | (1L << ADMIN) | (1L << ALL) | (1L << ANALYZE) | (1L << ANY) | (1L << ARRAY) | (1L << ASC) | (1L << AT) | (1L << BERNOULLI) | (1L << CALL) | (1L << CALLED) | (1L << CASCADE) | (1L << CASE) | (1L << CAST) | (1L << CATALOGS) | (1L << COLUMN) | (1L << COLUMNS) | (1L << COMMENT) | (1L << COMMIT) | (1L << COMMITTED) | (1L << CURRENT) | (1L << CURRENT_DATE) | (1L << CURRENT_ROLE) | (1L << CURRENT_TIME) | (1L << CURRENT_TIMESTAMP) | (1L << CURRENT_USER) | (1L << DATA) | (1L << DATE) | (1L << DAY) | (1L << DEFINER) | (1L << DESC) | (1L << DETERMINISTIC) | (1L << DISTRIBUTED) | (1L << EXCLUDING) | (1L << EXISTS))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (EXPLAIN - 64)) | (1L << (EXTRACT - 64)) | (1L << (EXTERNAL - 64)) | (1L << (FALSE - 64)) | (1L << (FILTER - 64)) | (1L << (FIRST - 64)) | (1L << (FOLLOWING - 64)) | (1L << (FORMAT - 64)) | (1L << (FUNCTION - 64)) | (1L << (FUNCTIONS - 64)) | (1L << (GRANT - 64)) | (1L << (GRANTED - 64)) | (1L << (GRANTS - 64)) | (1L << (GRAPHVIZ - 64)) | (1L << (GROUPING - 64)) | (1L << (HOUR - 64)) | (1L << (IF - 64)) | (1L << (IGNORE - 64)) | (1L << (INCLUDING - 64)) | (1L << (INPUT - 64)) | (1L << (INTERVAL - 64)) | (1L << (INVOKER - 64)) | (1L << (IO - 64)) | (1L << (ISOLATION - 64)) | (1L << (JSON - 64)) | (1L << (LANGUAGE - 64)) | (1L << (LAST - 64)) | (1L << (LATERAL - 64)) | (1L << (LEVEL - 64)) | (1L << (LIMIT - 64)) | (1L << (LOCALTIME - 64)) | (1L << (LOCALTIMESTAMP - 64)) | (1L << (LOGICAL - 64)) | (1L << (MAP - 64)) | (1L << (MATERIALIZED - 64)) | (1L << (MINUTE - 64)) | (1L << (MONTH - 64)) | (1L << (NAME - 64)) | (1L << (NFC - 64)) | (1L << (NFD - 64)) | (1L << (NFKC - 64)) | (1L << (NFKD - 64)) | (1L << (NO - 64)) | (1L << (NONE - 64)) | (1L << (NORMALIZE - 64)) | (1L << (NOT - 64)) | (1L << (NULL - 64)) | (1L << (NULLIF - 64)) | (1L << (NULLS - 64)))) != 0) || ((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & ((1L << (OFFSET - 128)) | (1L << (ONLY - 128)) | (1L << (OPTION - 128)) | (1L << (ORDINALITY - 128)) | (1L << (OUTPUT - 128)) | (1L << (OVER - 128)) | (1L << (PARTITION - 128)) | (1L << (PARTITIONS - 128)) | (1L << (POSITION - 128)) | (1L << (PRECEDING - 128)) | (1L << (PRIVILEGES - 128)) | (1L << (PROPERTIES - 128)) | (1L << (RANGE - 128)) | (1L << (READ - 128)) | (1L << (REFRESH - 128)) | (1L << (RENAME - 128)) | (1L << (REPEATABLE - 128)) | (1L << (REPLACE - 128)) | (1L << (RESET - 128)) | (1L << (RESPECT - 128)) | (1L << (RESTRICT - 128)) | (1L << (RETURN - 128)) | (1L << (RETURNS - 128)) | (1L << (REVOKE - 128)) | (1L << (ROLE - 128)) | (1L << (ROLES - 128)) | (1L << (ROLLBACK - 128)) | (1L << (ROW - 128)) | (1L << (ROWS - 128)) | (1L << (SCHEMA - 128)) | (1L << (SCHEMAS - 128)) | (1L << (SECOND - 128)) | (1L << (SECURITY - 128)) | (1L << (SERIALIZABLE - 128)) | (1L << (SESSION - 128)) | (1L << (SET - 128)) | (1L << (SETS - 128)) | (1L << (SHOW - 128)) | (1L << (SOME - 128)) | (1L << (SQL - 128)) | (1L << (START - 128)) | (1L << (STATS - 128)) | (1L << (SUBSTRING - 128)) | (1L << (SYSTEM - 128)) | (1L << (TABLES - 128)) | (1L << (TABLESAMPLE - 128)) | (1L << (TEMPORARY - 128)) | (1L << (TEXT - 128)) | (1L << (TIME - 128)) | (1L << (TIMESTAMP - 128)) | (1L << (TO - 128)) | (1L << (TRANSACTION - 128)) | (1L << (TRUE - 128)))) != 0) || ((((_la - 192)) & ~0x3f) == 0 && ((1L << (_la - 192)) & ((1L << (TRY_CAST - 192)) | (1L << (TYPE - 192)) | (1L << (UNBOUNDED - 192)) | (1L << (UNCOMMITTED - 192)) | (1L << (USE - 192)) | (1L << (USER - 192)) | (1L << (VALIDATE - 192)) | (1L << (VERBOSE - 192)) | (1L << (VIEW - 192)) | (1L << (WORK - 192)) | (1L << (WRITE - 192)) | (1L << (YEAR - 192)) | (1L << (ZONE - 192)) | (1L << (PLUS - 192)) | (1L << (MINUS - 192)) | (1L << (STRING - 192)) | (1L << (UNICODE_STRING - 192)) | (1L << (BINARY_LITERAL - 192)) | (1L << (INTEGER_VALUE - 192)) | (1L << (DECIMAL_VALUE - 192)) | (1L << (DOUBLE_VALUE - 192)) | (1L << (IDENTIFIER - 192)) | (1L << (DIGIT_IDENTIFIER - 192)) | (1L << (QUOTED_IDENTIFIER - 192)) | (1L << (BACKQUOTED_IDENTIFIER - 192)) | (1L << (DOUBLE_PRECISION - 192)))) != 0)) { + { + setState(481); + callArgument(); + setState(486); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__3) { + { + { + setState(482); + match(T__3); + setState(483); + callArgument(); + } + } + setState(488); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + + setState(491); + match(T__2); + } + break; + case 27: + _localctx = new CreateRoleContext(_localctx); + enterOuterAlt(_localctx, 27); + { + setState(493); + match(CREATE); + setState(494); + match(ROLE); + setState(495); + ((CreateRoleContext)_localctx).name = identifier(); + setState(499); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==WITH) { + { + setState(496); + match(WITH); + setState(497); + match(ADMIN); + setState(498); + grantor(); + } + } + + } + break; + case 28: + _localctx = new DropRoleContext(_localctx); + enterOuterAlt(_localctx, 28); + { + setState(501); + match(DROP); + setState(502); + match(ROLE); + setState(503); + ((DropRoleContext)_localctx).name = identifier(); + } + break; + case 29: + _localctx = new GrantRolesContext(_localctx); + enterOuterAlt(_localctx, 29); + { + setState(504); + match(GRANT); + setState(505); + roles(); + setState(506); + match(TO); + setState(507); + principal(); + setState(512); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__3) { + { + { + setState(508); + match(T__3); + setState(509); + principal(); + } + } + setState(514); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(518); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==WITH) { + { + setState(515); + match(WITH); + setState(516); + match(ADMIN); + setState(517); + match(OPTION); + } + } + + setState(523); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==GRANTED) { + { + setState(520); + match(GRANTED); + setState(521); + match(BY); + setState(522); + grantor(); + } + } + + } + break; + case 30: + _localctx = new RevokeRolesContext(_localctx); + enterOuterAlt(_localctx, 30); + { + setState(525); + match(REVOKE); + setState(529); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,51,_ctx) ) { + case 1: + { + setState(526); + match(ADMIN); + setState(527); + match(OPTION); + setState(528); + match(FOR); + } + break; + } + setState(531); + roles(); + setState(532); + match(FROM); + setState(533); + principal(); + setState(538); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__3) { + { + { + setState(534); + match(T__3); + setState(535); + principal(); + } + } + setState(540); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(544); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==GRANTED) { + { + setState(541); + match(GRANTED); + setState(542); + match(BY); + setState(543); + grantor(); + } + } + + } + break; + case 31: + _localctx = new SetRoleContext(_localctx); + enterOuterAlt(_localctx, 31); + { + setState(546); + match(SET); + setState(547); + match(ROLE); + setState(551); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,54,_ctx) ) { + case 1: + { + setState(548); + match(ALL); + } + break; + case 2: + { + setState(549); + match(NONE); + } + break; + case 3: + { + setState(550); + ((SetRoleContext)_localctx).role = identifier(); + } + break; + } + } + break; + case 32: + _localctx = new GrantContext(_localctx); + enterOuterAlt(_localctx, 32); + { + setState(553); + match(GRANT); + setState(564); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,56,_ctx) ) { + case 1: + { + setState(554); + privilege(); + setState(559); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__3) { + { + { + setState(555); + match(T__3); + setState(556); + privilege(); + } + } + setState(561); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + break; + case 2: + { + setState(562); + match(ALL); + setState(563); + match(PRIVILEGES); + } + break; + } + setState(566); + match(ON); + setState(568); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==TABLE) { + { + setState(567); + match(TABLE); + } + } + + setState(570); + qualifiedName(); + setState(571); + match(TO); + setState(572); + ((GrantContext)_localctx).grantee = principal(); + setState(576); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==WITH) { + { + setState(573); + match(WITH); + setState(574); + match(GRANT); + setState(575); + match(OPTION); + } + } + + } + break; + case 33: + _localctx = new RevokeContext(_localctx); + enterOuterAlt(_localctx, 33); + { + setState(578); + match(REVOKE); + setState(582); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,59,_ctx) ) { + case 1: + { + setState(579); + match(GRANT); + setState(580); + match(OPTION); + setState(581); + match(FOR); + } + break; + } + setState(594); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,61,_ctx) ) { + case 1: + { + setState(584); + privilege(); + setState(589); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__3) { + { + { + setState(585); + match(T__3); + setState(586); + privilege(); + } + } + setState(591); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + break; + case 2: + { + setState(592); + match(ALL); + setState(593); + match(PRIVILEGES); + } + break; + } + setState(596); + match(ON); + setState(598); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==TABLE) { + { + setState(597); + match(TABLE); + } + } + + setState(600); + qualifiedName(); + setState(601); + match(FROM); + setState(602); + ((RevokeContext)_localctx).grantee = principal(); + } + break; + case 34: + _localctx = new ShowGrantsContext(_localctx); + enterOuterAlt(_localctx, 34); + { + setState(604); + match(SHOW); + setState(605); + match(GRANTS); + setState(611); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ON) { + { + setState(606); + match(ON); + setState(608); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==TABLE) { + { + setState(607); + match(TABLE); + } + } + + setState(610); + qualifiedName(); + } + } + + } + break; + case 35: + _localctx = new ExplainContext(_localctx); + enterOuterAlt(_localctx, 35); + { + setState(613); + match(EXPLAIN); + setState(615); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,65,_ctx) ) { + case 1: + { + setState(614); + match(ANALYZE); + } + break; + } + setState(618); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==VERBOSE) { + { + setState(617); + match(VERBOSE); + } + } + + setState(631); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,68,_ctx) ) { + case 1: + { + setState(620); + match(T__1); + setState(621); + explainOption(); + setState(626); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__3) { + { + { + setState(622); + match(T__3); + setState(623); + explainOption(); + } + } + setState(628); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(629); + match(T__2); + } + break; + } + setState(633); + statement(); + } + break; + case 36: + _localctx = new ShowCreateTableContext(_localctx); + enterOuterAlt(_localctx, 36); + { + setState(634); + match(SHOW); + setState(635); + match(CREATE); + setState(636); + match(TABLE); + setState(637); + qualifiedName(); + } + break; + case 37: + _localctx = new ShowCreateViewContext(_localctx); + enterOuterAlt(_localctx, 37); + { + setState(638); + match(SHOW); + setState(639); + match(CREATE); + setState(640); + match(VIEW); + setState(641); + qualifiedName(); + } + break; + case 38: + _localctx = new ShowCreateMaterializedViewContext(_localctx); + enterOuterAlt(_localctx, 38); + { + setState(642); + match(SHOW); + setState(643); + match(CREATE); + setState(644); + match(MATERIALIZED); + setState(645); + match(VIEW); + setState(646); + qualifiedName(); + } + break; + case 39: + _localctx = new ShowCreateFunctionContext(_localctx); + enterOuterAlt(_localctx, 39); + { + setState(647); + match(SHOW); + setState(648); + match(CREATE); + setState(649); + match(FUNCTION); + setState(650); + qualifiedName(); + setState(652); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==T__1) { + { + setState(651); + types(); + } + } + + } + break; + case 40: + _localctx = new ShowTablesContext(_localctx); + enterOuterAlt(_localctx, 40); + { + setState(654); + match(SHOW); + setState(655); + match(TABLES); + setState(658); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FROM || _la==IN) { + { + setState(656); + _la = _input.LA(1); + if ( !(_la==FROM || _la==IN) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(657); + qualifiedName(); + } + } + + setState(666); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LIKE) { + { + setState(660); + match(LIKE); + setState(661); + ((ShowTablesContext)_localctx).pattern = string(); + setState(664); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ESCAPE) { + { + setState(662); + match(ESCAPE); + setState(663); + ((ShowTablesContext)_localctx).escape = string(); + } + } + + } + } + + } + break; + case 41: + _localctx = new ShowSchemasContext(_localctx); + enterOuterAlt(_localctx, 41); + { + setState(668); + match(SHOW); + setState(669); + match(SCHEMAS); + setState(672); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FROM || _la==IN) { + { + setState(670); + _la = _input.LA(1); + if ( !(_la==FROM || _la==IN) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(671); + identifier(); + } + } + + setState(680); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LIKE) { + { + setState(674); + match(LIKE); + setState(675); + ((ShowSchemasContext)_localctx).pattern = string(); + setState(678); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ESCAPE) { + { + setState(676); + match(ESCAPE); + setState(677); + ((ShowSchemasContext)_localctx).escape = string(); + } + } + + } + } + + } + break; + case 42: + _localctx = new ShowCatalogsContext(_localctx); + enterOuterAlt(_localctx, 42); + { + setState(682); + match(SHOW); + setState(683); + match(CATALOGS); + setState(686); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LIKE) { + { + setState(684); + match(LIKE); + setState(685); + ((ShowCatalogsContext)_localctx).pattern = string(); + } + } + + } + break; + case 43: + _localctx = new ShowColumnsContext(_localctx); + enterOuterAlt(_localctx, 43); + { + setState(688); + match(SHOW); + setState(689); + match(COLUMNS); + setState(690); + _la = _input.LA(1); + if ( !(_la==FROM || _la==IN) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(691); + qualifiedName(); + } + break; + case 44: + _localctx = new ShowStatsContext(_localctx); + enterOuterAlt(_localctx, 44); + { + setState(692); + match(SHOW); + setState(693); + match(STATS); + setState(694); + match(FOR); + setState(695); + qualifiedName(); + } + break; + case 45: + _localctx = new ShowStatsForQueryContext(_localctx); + enterOuterAlt(_localctx, 45); + { + setState(696); + match(SHOW); + setState(697); + match(STATS); + setState(698); + match(FOR); + setState(699); + match(T__1); + setState(700); + querySpecification(); + setState(701); + match(T__2); + } + break; + case 46: + _localctx = new ShowRolesContext(_localctx); + enterOuterAlt(_localctx, 46); + { + setState(703); + match(SHOW); + setState(705); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==CURRENT) { + { + setState(704); + match(CURRENT); + } + } + + setState(707); + match(ROLES); + setState(710); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FROM || _la==IN) { + { + setState(708); + _la = _input.LA(1); + if ( !(_la==FROM || _la==IN) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(709); + identifier(); + } + } + + } + break; + case 47: + _localctx = new ShowRoleGrantsContext(_localctx); + enterOuterAlt(_localctx, 47); + { + setState(712); + match(SHOW); + setState(713); + match(ROLE); + setState(714); + match(GRANTS); + setState(717); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FROM || _la==IN) { + { + setState(715); + _la = _input.LA(1); + if ( !(_la==FROM || _la==IN) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(716); + identifier(); + } + } + + } + break; + case 48: + _localctx = new ShowColumnsContext(_localctx); + enterOuterAlt(_localctx, 48); + { + setState(719); + match(DESCRIBE); + setState(720); + qualifiedName(); + } + break; + case 49: + _localctx = new ShowColumnsContext(_localctx); + enterOuterAlt(_localctx, 49); + { + setState(721); + match(DESC); + setState(722); + qualifiedName(); + } + break; + case 50: + _localctx = new ShowFunctionsContext(_localctx); + enterOuterAlt(_localctx, 50); + { + setState(723); + match(SHOW); + setState(724); + match(FUNCTIONS); + setState(731); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LIKE) { + { + setState(725); + match(LIKE); + setState(726); + ((ShowFunctionsContext)_localctx).pattern = string(); + setState(729); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ESCAPE) { + { + setState(727); + match(ESCAPE); + setState(728); + ((ShowFunctionsContext)_localctx).escape = string(); + } + } + + } + } + + } + break; + case 51: + _localctx = new ShowSessionContext(_localctx); + enterOuterAlt(_localctx, 51); + { + setState(733); + match(SHOW); + setState(734); + match(SESSION); + } + break; + case 52: + _localctx = new SetSessionContext(_localctx); + enterOuterAlt(_localctx, 52); + { + setState(735); + match(SET); + setState(736); + match(SESSION); + setState(737); + qualifiedName(); + setState(738); + match(EQ); + setState(739); + expression(); + } + break; + case 53: + _localctx = new ResetSessionContext(_localctx); + enterOuterAlt(_localctx, 53); + { + setState(741); + match(RESET); + setState(742); + match(SESSION); + setState(743); + qualifiedName(); + } + break; + case 54: + _localctx = new StartTransactionContext(_localctx); + enterOuterAlt(_localctx, 54); + { + setState(744); + match(START); + setState(745); + match(TRANSACTION); + setState(754); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ISOLATION || _la==READ) { + { + setState(746); + transactionMode(); + setState(751); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__3) { + { + { + setState(747); + match(T__3); + setState(748); + transactionMode(); + } + } + setState(753); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + + } + break; + case 55: + _localctx = new CommitContext(_localctx); + enterOuterAlt(_localctx, 55); + { + setState(756); + match(COMMIT); + setState(758); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==WORK) { + { + setState(757); + match(WORK); + } + } + + } + break; + case 56: + _localctx = new RollbackContext(_localctx); + enterOuterAlt(_localctx, 56); + { + setState(760); + match(ROLLBACK); + setState(762); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==WORK) { + { + setState(761); + match(WORK); + } + } + + } + break; + case 57: + _localctx = new PrepareContext(_localctx); + enterOuterAlt(_localctx, 57); + { + setState(764); + match(PREPARE); + setState(765); + identifier(); + setState(766); + match(FROM); + setState(767); + statement(); + } + break; + case 58: + _localctx = new DeallocateContext(_localctx); + enterOuterAlt(_localctx, 58); + { + setState(769); + match(DEALLOCATE); + setState(770); + match(PREPARE); + setState(771); + identifier(); + } + break; + case 59: + _localctx = new ExecuteContext(_localctx); + enterOuterAlt(_localctx, 59); + { + setState(772); + match(EXECUTE); + setState(773); + identifier(); + setState(783); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==USING) { + { + setState(774); + match(USING); + setState(775); + expression(); + setState(780); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__3) { + { + { + setState(776); + match(T__3); + setState(777); + expression(); + } + } + setState(782); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + + } + break; + case 60: + _localctx = new DescribeInputContext(_localctx); + enterOuterAlt(_localctx, 60); + { + setState(785); + match(DESCRIBE); + setState(786); + match(INPUT); + setState(787); + identifier(); + } + break; + case 61: + _localctx = new DescribeOutputContext(_localctx); + enterOuterAlt(_localctx, 61); + { + setState(788); + match(DESCRIBE); + setState(789); + match(OUTPUT); + setState(790); + identifier(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class QueryContext extends ParserRuleContext { + public QueryNoWithContext queryNoWith() { + return getRuleContext(QueryNoWithContext.class,0); + } + public WithContext with() { + return getRuleContext(WithContext.class,0); + } + public QueryContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_query; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterQuery(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitQuery(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitQuery(this); + else return visitor.visitChildren(this); + } + } + + public final QueryContext query() throws RecognitionException { + QueryContext _localctx = new QueryContext(_ctx, getState()); + enterRule(_localctx, 8, RULE_query); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(794); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==WITH) { + { + setState(793); + with(); + } + } + + setState(796); + queryNoWith(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class WithContext extends ParserRuleContext { + public TerminalNode WITH() { return getToken(PrestoSqlParser.WITH, 0); } + public List namedQuery() { + return getRuleContexts(NamedQueryContext.class); + } + public NamedQueryContext namedQuery(int i) { + return getRuleContext(NamedQueryContext.class,i); + } + public TerminalNode RECURSIVE() { return getToken(PrestoSqlParser.RECURSIVE, 0); } + public WithContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_with; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterWith(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitWith(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitWith(this); + else return visitor.visitChildren(this); + } + } + + public final WithContext with() throws RecognitionException { + WithContext _localctx = new WithContext(_ctx, getState()); + enterRule(_localctx, 10, RULE_with); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(798); + match(WITH); + setState(800); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==RECURSIVE) { + { + setState(799); + match(RECURSIVE); + } + } + + setState(802); + namedQuery(); + setState(807); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__3) { + { + { + setState(803); + match(T__3); + setState(804); + namedQuery(); + } + } + setState(809); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class TableElementContext extends ParserRuleContext { + public ColumnDefinitionContext columnDefinition() { + return getRuleContext(ColumnDefinitionContext.class,0); + } + public LikeClauseContext likeClause() { + return getRuleContext(LikeClauseContext.class,0); + } + public TableElementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_tableElement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterTableElement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitTableElement(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitTableElement(this); + else return visitor.visitChildren(this); + } + } + + public final TableElementContext tableElement() throws RecognitionException { + TableElementContext _localctx = new TableElementContext(_ctx, getState()); + enterRule(_localctx, 12, RULE_tableElement); + try { + setState(812); + _errHandler.sync(this); + switch (_input.LA(1)) { + case ADD: + case ADMIN: + case ALL: + case ANALYZE: + case ANY: + case ARRAY: + case ASC: + case AT: + case BERNOULLI: + case CALL: + case CALLED: + case CASCADE: + case CATALOGS: + case COLUMN: + case COLUMNS: + case COMMENT: + case COMMIT: + case COMMITTED: + case CURRENT: + case CURRENT_ROLE: + case DATA: + case DATE: + case DAY: + case DEFINER: + case DESC: + case DETERMINISTIC: + case DISTRIBUTED: + case EXCLUDING: + case EXPLAIN: + case EXTERNAL: + case FILTER: + case FIRST: + case FOLLOWING: + case FORMAT: + case FUNCTION: + case FUNCTIONS: + case GRANT: + case GRANTED: + case GRANTS: + case GRAPHVIZ: + case HOUR: + case IF: + case IGNORE: + case INCLUDING: + case INPUT: + case INTERVAL: + case INVOKER: + case IO: + case ISOLATION: + case JSON: + case LANGUAGE: + case LAST: + case LATERAL: + case LEVEL: + case LIMIT: + case LOGICAL: + case MAP: + case MATERIALIZED: + case MINUTE: + case MONTH: + case NAME: + case NFC: + case NFD: + case NFKC: + case NFKD: + case NO: + case NONE: + case NULLIF: + case NULLS: + case OFFSET: + case ONLY: + case OPTION: + case ORDINALITY: + case OUTPUT: + case OVER: + case PARTITION: + case PARTITIONS: + case POSITION: + case PRECEDING: + case PRIVILEGES: + case PROPERTIES: + case RANGE: + case READ: + case REFRESH: + case RENAME: + case REPEATABLE: + case REPLACE: + case RESET: + case RESPECT: + case RESTRICT: + case RETURN: + case RETURNS: + case REVOKE: + case ROLE: + case ROLES: + case ROLLBACK: + case ROW: + case ROWS: + case SCHEMA: + case SCHEMAS: + case SECOND: + case SECURITY: + case SERIALIZABLE: + case SESSION: + case SET: + case SETS: + case SHOW: + case SOME: + case SQL: + case START: + case STATS: + case SUBSTRING: + case SYSTEM: + case TABLES: + case TABLESAMPLE: + case TEMPORARY: + case TEXT: + case TIME: + case TIMESTAMP: + case TO: + case TRANSACTION: + case TRY_CAST: + case TYPE: + case UNBOUNDED: + case UNCOMMITTED: + case USE: + case USER: + case VALIDATE: + case VERBOSE: + case VIEW: + case WORK: + case WRITE: + case YEAR: + case ZONE: + case IDENTIFIER: + case DIGIT_IDENTIFIER: + case QUOTED_IDENTIFIER: + case BACKQUOTED_IDENTIFIER: + enterOuterAlt(_localctx, 1); + { + setState(810); + columnDefinition(); + } + break; + case LIKE: + enterOuterAlt(_localctx, 2); + { + setState(811); + likeClause(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ColumnDefinitionContext extends ParserRuleContext { + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TypeContext type() { + return getRuleContext(TypeContext.class,0); + } + public TerminalNode NOT() { return getToken(PrestoSqlParser.NOT, 0); } + public TerminalNode NULL() { return getToken(PrestoSqlParser.NULL, 0); } + public TerminalNode COMMENT() { return getToken(PrestoSqlParser.COMMENT, 0); } + public StringContext string() { + return getRuleContext(StringContext.class,0); + } + public TerminalNode WITH() { return getToken(PrestoSqlParser.WITH, 0); } + public PropertiesContext properties() { + return getRuleContext(PropertiesContext.class,0); + } + public ColumnDefinitionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_columnDefinition; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterColumnDefinition(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitColumnDefinition(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitColumnDefinition(this); + else return visitor.visitChildren(this); + } + } + + public final ColumnDefinitionContext columnDefinition() throws RecognitionException { + ColumnDefinitionContext _localctx = new ColumnDefinitionContext(_ctx, getState()); + enterRule(_localctx, 14, RULE_columnDefinition); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(814); + identifier(); + setState(815); + type(0); + setState(818); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==NOT) { + { + setState(816); + match(NOT); + setState(817); + match(NULL); + } + } + + setState(822); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==COMMENT) { + { + setState(820); + match(COMMENT); + setState(821); + string(); + } + } + + setState(826); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==WITH) { + { + setState(824); + match(WITH); + setState(825); + properties(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class LikeClauseContext extends ParserRuleContext { + public Token optionType; + public TerminalNode LIKE() { return getToken(PrestoSqlParser.LIKE, 0); } + public QualifiedNameContext qualifiedName() { + return getRuleContext(QualifiedNameContext.class,0); + } + public TerminalNode PROPERTIES() { return getToken(PrestoSqlParser.PROPERTIES, 0); } + public TerminalNode INCLUDING() { return getToken(PrestoSqlParser.INCLUDING, 0); } + public TerminalNode EXCLUDING() { return getToken(PrestoSqlParser.EXCLUDING, 0); } + public LikeClauseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_likeClause; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterLikeClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitLikeClause(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitLikeClause(this); + else return visitor.visitChildren(this); + } + } + + public final LikeClauseContext likeClause() throws RecognitionException { + LikeClauseContext _localctx = new LikeClauseContext(_ctx, getState()); + enterRule(_localctx, 16, RULE_likeClause); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(828); + match(LIKE); + setState(829); + qualifiedName(); + setState(832); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==EXCLUDING || _la==INCLUDING) { + { + setState(830); + ((LikeClauseContext)_localctx).optionType = _input.LT(1); + _la = _input.LA(1); + if ( !(_la==EXCLUDING || _la==INCLUDING) ) { + ((LikeClauseContext)_localctx).optionType = (Token)_errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(831); + match(PROPERTIES); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class PropertiesContext extends ParserRuleContext { + public List property() { + return getRuleContexts(PropertyContext.class); + } + public PropertyContext property(int i) { + return getRuleContext(PropertyContext.class,i); + } + public PropertiesContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_properties; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterProperties(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitProperties(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitProperties(this); + else return visitor.visitChildren(this); + } + } + + public final PropertiesContext properties() throws RecognitionException { + PropertiesContext _localctx = new PropertiesContext(_ctx, getState()); + enterRule(_localctx, 18, RULE_properties); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(834); + match(T__1); + setState(835); + property(); + setState(840); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__3) { + { + { + setState(836); + match(T__3); + setState(837); + property(); + } + } + setState(842); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(843); + match(T__2); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class PropertyContext extends ParserRuleContext { + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode EQ() { return getToken(PrestoSqlParser.EQ, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public PropertyContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_property; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterProperty(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitProperty(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitProperty(this); + else return visitor.visitChildren(this); + } + } + + public final PropertyContext property() throws RecognitionException { + PropertyContext _localctx = new PropertyContext(_ctx, getState()); + enterRule(_localctx, 20, RULE_property); + try { + enterOuterAlt(_localctx, 1); + { + setState(845); + identifier(); + setState(846); + match(EQ); + setState(847); + expression(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class SqlParameterDeclarationContext extends ParserRuleContext { + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TypeContext type() { + return getRuleContext(TypeContext.class,0); + } + public SqlParameterDeclarationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_sqlParameterDeclaration; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterSqlParameterDeclaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitSqlParameterDeclaration(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitSqlParameterDeclaration(this); + else return visitor.visitChildren(this); + } + } + + public final SqlParameterDeclarationContext sqlParameterDeclaration() throws RecognitionException { + SqlParameterDeclarationContext _localctx = new SqlParameterDeclarationContext(_ctx, getState()); + enterRule(_localctx, 22, RULE_sqlParameterDeclaration); + try { + enterOuterAlt(_localctx, 1); + { + setState(849); + identifier(); + setState(850); + type(0); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class RoutineCharacteristicsContext extends ParserRuleContext { + public List routineCharacteristic() { + return getRuleContexts(RoutineCharacteristicContext.class); + } + public RoutineCharacteristicContext routineCharacteristic(int i) { + return getRuleContext(RoutineCharacteristicContext.class,i); + } + public RoutineCharacteristicsContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_routineCharacteristics; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterRoutineCharacteristics(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitRoutineCharacteristics(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitRoutineCharacteristics(this); + else return visitor.visitChildren(this); + } + } + + public final RoutineCharacteristicsContext routineCharacteristics() throws RecognitionException { + RoutineCharacteristicsContext _localctx = new RoutineCharacteristicsContext(_ctx, getState()); + enterRule(_localctx, 24, RULE_routineCharacteristics); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(855); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==CALLED || _la==DETERMINISTIC || ((((_la - 101)) & ~0x3f) == 0 && ((1L << (_la - 101)) & ((1L << (LANGUAGE - 101)) | (1L << (NOT - 101)) | (1L << (RETURNS - 101)))) != 0)) { + { + { + setState(852); + routineCharacteristic(); + } + } + setState(857); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class RoutineCharacteristicContext extends ParserRuleContext { + public TerminalNode LANGUAGE() { return getToken(PrestoSqlParser.LANGUAGE, 0); } + public LanguageContext language() { + return getRuleContext(LanguageContext.class,0); + } + public DeterminismContext determinism() { + return getRuleContext(DeterminismContext.class,0); + } + public NullCallClauseContext nullCallClause() { + return getRuleContext(NullCallClauseContext.class,0); + } + public RoutineCharacteristicContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_routineCharacteristic; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterRoutineCharacteristic(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitRoutineCharacteristic(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitRoutineCharacteristic(this); + else return visitor.visitChildren(this); + } + } + + public final RoutineCharacteristicContext routineCharacteristic() throws RecognitionException { + RoutineCharacteristicContext _localctx = new RoutineCharacteristicContext(_ctx, getState()); + enterRule(_localctx, 26, RULE_routineCharacteristic); + try { + setState(862); + _errHandler.sync(this); + switch (_input.LA(1)) { + case LANGUAGE: + enterOuterAlt(_localctx, 1); + { + setState(858); + match(LANGUAGE); + setState(859); + language(); + } + break; + case DETERMINISTIC: + case NOT: + enterOuterAlt(_localctx, 2); + { + setState(860); + determinism(); + } + break; + case CALLED: + case RETURNS: + enterOuterAlt(_localctx, 3); + { + setState(861); + nullCallClause(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class AlterRoutineCharacteristicsContext extends ParserRuleContext { + public List alterRoutineCharacteristic() { + return getRuleContexts(AlterRoutineCharacteristicContext.class); + } + public AlterRoutineCharacteristicContext alterRoutineCharacteristic(int i) { + return getRuleContext(AlterRoutineCharacteristicContext.class,i); + } + public AlterRoutineCharacteristicsContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_alterRoutineCharacteristics; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterAlterRoutineCharacteristics(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitAlterRoutineCharacteristics(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitAlterRoutineCharacteristics(this); + else return visitor.visitChildren(this); + } + } + + public final AlterRoutineCharacteristicsContext alterRoutineCharacteristics() throws RecognitionException { + AlterRoutineCharacteristicsContext _localctx = new AlterRoutineCharacteristicsContext(_ctx, getState()); + enterRule(_localctx, 28, RULE_alterRoutineCharacteristics); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(867); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==CALLED || _la==RETURNS) { + { + { + setState(864); + alterRoutineCharacteristic(); + } + } + setState(869); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class AlterRoutineCharacteristicContext extends ParserRuleContext { + public NullCallClauseContext nullCallClause() { + return getRuleContext(NullCallClauseContext.class,0); + } + public AlterRoutineCharacteristicContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_alterRoutineCharacteristic; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterAlterRoutineCharacteristic(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitAlterRoutineCharacteristic(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitAlterRoutineCharacteristic(this); + else return visitor.visitChildren(this); + } + } + + public final AlterRoutineCharacteristicContext alterRoutineCharacteristic() throws RecognitionException { + AlterRoutineCharacteristicContext _localctx = new AlterRoutineCharacteristicContext(_ctx, getState()); + enterRule(_localctx, 30, RULE_alterRoutineCharacteristic); + try { + enterOuterAlt(_localctx, 1); + { + setState(870); + nullCallClause(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class RoutineBodyContext extends ParserRuleContext { + public ReturnStatementContext returnStatement() { + return getRuleContext(ReturnStatementContext.class,0); + } + public ExternalBodyReferenceContext externalBodyReference() { + return getRuleContext(ExternalBodyReferenceContext.class,0); + } + public RoutineBodyContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_routineBody; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterRoutineBody(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitRoutineBody(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitRoutineBody(this); + else return visitor.visitChildren(this); + } + } + + public final RoutineBodyContext routineBody() throws RecognitionException { + RoutineBodyContext _localctx = new RoutineBodyContext(_ctx, getState()); + enterRule(_localctx, 32, RULE_routineBody); + try { + setState(874); + _errHandler.sync(this); + switch (_input.LA(1)) { + case RETURN: + enterOuterAlt(_localctx, 1); + { + setState(872); + returnStatement(); + } + break; + case EXTERNAL: + enterOuterAlt(_localctx, 2); + { + setState(873); + externalBodyReference(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ReturnStatementContext extends ParserRuleContext { + public TerminalNode RETURN() { return getToken(PrestoSqlParser.RETURN, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public ReturnStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_returnStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterReturnStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitReturnStatement(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitReturnStatement(this); + else return visitor.visitChildren(this); + } + } + + public final ReturnStatementContext returnStatement() throws RecognitionException { + ReturnStatementContext _localctx = new ReturnStatementContext(_ctx, getState()); + enterRule(_localctx, 34, RULE_returnStatement); + try { + enterOuterAlt(_localctx, 1); + { + setState(876); + match(RETURN); + setState(877); + expression(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ExternalBodyReferenceContext extends ParserRuleContext { + public TerminalNode EXTERNAL() { return getToken(PrestoSqlParser.EXTERNAL, 0); } + public TerminalNode NAME() { return getToken(PrestoSqlParser.NAME, 0); } + public ExternalRoutineNameContext externalRoutineName() { + return getRuleContext(ExternalRoutineNameContext.class,0); + } + public ExternalBodyReferenceContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_externalBodyReference; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterExternalBodyReference(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitExternalBodyReference(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitExternalBodyReference(this); + else return visitor.visitChildren(this); + } + } + + public final ExternalBodyReferenceContext externalBodyReference() throws RecognitionException { + ExternalBodyReferenceContext _localctx = new ExternalBodyReferenceContext(_ctx, getState()); + enterRule(_localctx, 36, RULE_externalBodyReference); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(879); + match(EXTERNAL); + setState(882); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==NAME) { + { + setState(880); + match(NAME); + setState(881); + externalRoutineName(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class LanguageContext extends ParserRuleContext { + public TerminalNode SQL() { return getToken(PrestoSqlParser.SQL, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public LanguageContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_language; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterLanguage(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitLanguage(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitLanguage(this); + else return visitor.visitChildren(this); + } + } + + public final LanguageContext language() throws RecognitionException { + LanguageContext _localctx = new LanguageContext(_ctx, getState()); + enterRule(_localctx, 38, RULE_language); + try { + setState(886); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,103,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(884); + match(SQL); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(885); + identifier(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class DeterminismContext extends ParserRuleContext { + public TerminalNode DETERMINISTIC() { return getToken(PrestoSqlParser.DETERMINISTIC, 0); } + public TerminalNode NOT() { return getToken(PrestoSqlParser.NOT, 0); } + public DeterminismContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_determinism; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterDeterminism(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitDeterminism(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitDeterminism(this); + else return visitor.visitChildren(this); + } + } + + public final DeterminismContext determinism() throws RecognitionException { + DeterminismContext _localctx = new DeterminismContext(_ctx, getState()); + enterRule(_localctx, 40, RULE_determinism); + try { + setState(891); + _errHandler.sync(this); + switch (_input.LA(1)) { + case DETERMINISTIC: + enterOuterAlt(_localctx, 1); + { + setState(888); + match(DETERMINISTIC); + } + break; + case NOT: + enterOuterAlt(_localctx, 2); + { + setState(889); + match(NOT); + setState(890); + match(DETERMINISTIC); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class NullCallClauseContext extends ParserRuleContext { + public TerminalNode RETURNS() { return getToken(PrestoSqlParser.RETURNS, 0); } + public List NULL() { return getTokens(PrestoSqlParser.NULL); } + public TerminalNode NULL(int i) { + return getToken(PrestoSqlParser.NULL, i); + } + public TerminalNode ON() { return getToken(PrestoSqlParser.ON, 0); } + public TerminalNode INPUT() { return getToken(PrestoSqlParser.INPUT, 0); } + public TerminalNode CALLED() { return getToken(PrestoSqlParser.CALLED, 0); } + public NullCallClauseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_nullCallClause; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterNullCallClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitNullCallClause(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitNullCallClause(this); + else return visitor.visitChildren(this); + } + } + + public final NullCallClauseContext nullCallClause() throws RecognitionException { + NullCallClauseContext _localctx = new NullCallClauseContext(_ctx, getState()); + enterRule(_localctx, 42, RULE_nullCallClause); + try { + setState(902); + _errHandler.sync(this); + switch (_input.LA(1)) { + case RETURNS: + enterOuterAlt(_localctx, 1); + { + setState(893); + match(RETURNS); + setState(894); + match(NULL); + setState(895); + match(ON); + setState(896); + match(NULL); + setState(897); + match(INPUT); + } + break; + case CALLED: + enterOuterAlt(_localctx, 2); + { + setState(898); + match(CALLED); + setState(899); + match(ON); + setState(900); + match(NULL); + setState(901); + match(INPUT); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ExternalRoutineNameContext extends ParserRuleContext { + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public ExternalRoutineNameContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_externalRoutineName; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterExternalRoutineName(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitExternalRoutineName(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitExternalRoutineName(this); + else return visitor.visitChildren(this); + } + } + + public final ExternalRoutineNameContext externalRoutineName() throws RecognitionException { + ExternalRoutineNameContext _localctx = new ExternalRoutineNameContext(_ctx, getState()); + enterRule(_localctx, 44, RULE_externalRoutineName); + try { + enterOuterAlt(_localctx, 1); + { + setState(904); + identifier(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class QueryNoWithContext extends ParserRuleContext { + public Token offset; + public Token limit; + public QueryTermContext queryTerm() { + return getRuleContext(QueryTermContext.class,0); + } + public TerminalNode ORDER() { return getToken(PrestoSqlParser.ORDER, 0); } + public TerminalNode BY() { return getToken(PrestoSqlParser.BY, 0); } + public List sortItem() { + return getRuleContexts(SortItemContext.class); + } + public SortItemContext sortItem(int i) { + return getRuleContext(SortItemContext.class,i); + } + public TerminalNode OFFSET() { return getToken(PrestoSqlParser.OFFSET, 0); } + public TerminalNode LIMIT() { return getToken(PrestoSqlParser.LIMIT, 0); } + public List INTEGER_VALUE() { return getTokens(PrestoSqlParser.INTEGER_VALUE); } + public TerminalNode INTEGER_VALUE(int i) { + return getToken(PrestoSqlParser.INTEGER_VALUE, i); + } + public TerminalNode ALL() { return getToken(PrestoSqlParser.ALL, 0); } + public TerminalNode ROW() { return getToken(PrestoSqlParser.ROW, 0); } + public TerminalNode ROWS() { return getToken(PrestoSqlParser.ROWS, 0); } + public QueryNoWithContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_queryNoWith; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterQueryNoWith(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitQueryNoWith(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitQueryNoWith(this); + else return visitor.visitChildren(this); + } + } + + public final QueryNoWithContext queryNoWith() throws RecognitionException { + QueryNoWithContext _localctx = new QueryNoWithContext(_ctx, getState()); + enterRule(_localctx, 46, RULE_queryNoWith); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(906); + queryTerm(0); + setState(917); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ORDER) { + { + setState(907); + match(ORDER); + setState(908); + match(BY); + setState(909); + sortItem(); + setState(914); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__3) { + { + { + setState(910); + match(T__3); + setState(911); + sortItem(); + } + } + setState(916); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + + setState(924); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==OFFSET) { + { + setState(919); + match(OFFSET); + setState(920); + ((QueryNoWithContext)_localctx).offset = match(INTEGER_VALUE); + setState(922); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ROW || _la==ROWS) { + { + setState(921); + _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(928); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LIMIT) { + { + setState(926); + match(LIMIT); + setState(927); + ((QueryNoWithContext)_localctx).limit = _input.LT(1); + _la = _input.LA(1); + if ( !(_la==ALL || _la==INTEGER_VALUE) ) { + ((QueryNoWithContext)_localctx).limit = (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; + } + + public static class QueryTermContext extends ParserRuleContext { + public QueryTermContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_queryTerm; } + + public QueryTermContext() { } + public void copyFrom(QueryTermContext ctx) { + super.copyFrom(ctx); + } + } + public static class QueryTermDefaultContext extends QueryTermContext { + public QueryPrimaryContext queryPrimary() { + return getRuleContext(QueryPrimaryContext.class,0); + } + public QueryTermDefaultContext(QueryTermContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterQueryTermDefault(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitQueryTermDefault(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitQueryTermDefault(this); + else return visitor.visitChildren(this); + } + } + public static class SetOperationContext extends QueryTermContext { + public QueryTermContext left; + public Token operator; + public QueryTermContext right; + public List queryTerm() { + return getRuleContexts(QueryTermContext.class); + } + public QueryTermContext queryTerm(int i) { + return getRuleContext(QueryTermContext.class,i); + } + public TerminalNode INTERSECT() { return getToken(PrestoSqlParser.INTERSECT, 0); } + public SetQuantifierContext setQuantifier() { + return getRuleContext(SetQuantifierContext.class,0); + } + public TerminalNode UNION() { return getToken(PrestoSqlParser.UNION, 0); } + public TerminalNode EXCEPT() { return getToken(PrestoSqlParser.EXCEPT, 0); } + public SetOperationContext(QueryTermContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterSetOperation(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitSetOperation(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitSetOperation(this); + else return visitor.visitChildren(this); + } + } + + public final QueryTermContext queryTerm() throws RecognitionException { + return queryTerm(0); + } + + private QueryTermContext queryTerm(int _p) throws RecognitionException { + ParserRuleContext _parentctx = _ctx; + int _parentState = getState(); + QueryTermContext _localctx = new QueryTermContext(_ctx, _parentState); + QueryTermContext _prevctx = _localctx; + int _startState = 48; + enterRecursionRule(_localctx, 48, RULE_queryTerm, _p); + int _la; + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + { + _localctx = new QueryTermDefaultContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + + setState(931); + queryPrimary(); + } + _ctx.stop = _input.LT(-1); + setState(947); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,114,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + if ( _parseListeners!=null ) triggerExitRuleEvent(); + _prevctx = _localctx; + { + setState(945); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,113,_ctx) ) { + case 1: + { + _localctx = new SetOperationContext(new QueryTermContext(_parentctx, _parentState)); + ((SetOperationContext)_localctx).left = _prevctx; + pushNewRecursionContext(_localctx, _startState, RULE_queryTerm); + setState(933); + if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)"); + setState(934); + ((SetOperationContext)_localctx).operator = match(INTERSECT); + setState(936); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ALL || _la==DISTINCT) { + { + setState(935); + setQuantifier(); + } + } + + setState(938); + ((SetOperationContext)_localctx).right = queryTerm(3); + } + break; + case 2: + { + _localctx = new SetOperationContext(new QueryTermContext(_parentctx, _parentState)); + ((SetOperationContext)_localctx).left = _prevctx; + pushNewRecursionContext(_localctx, _startState, RULE_queryTerm); + setState(939); + if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); + setState(940); + ((SetOperationContext)_localctx).operator = _input.LT(1); + _la = _input.LA(1); + if ( !(_la==EXCEPT || _la==UNION) ) { + ((SetOperationContext)_localctx).operator = (Token)_errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(942); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ALL || _la==DISTINCT) { + { + setState(941); + setQuantifier(); + } + } + + setState(944); + ((SetOperationContext)_localctx).right = queryTerm(2); + } + break; + } + } + } + setState(949); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,114,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + unrollRecursionContexts(_parentctx); + } + return _localctx; + } + + public static class QueryPrimaryContext extends ParserRuleContext { + public QueryPrimaryContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_queryPrimary; } + + public QueryPrimaryContext() { } + public void copyFrom(QueryPrimaryContext ctx) { + super.copyFrom(ctx); + } + } + public static class SubqueryContext extends QueryPrimaryContext { + public QueryNoWithContext queryNoWith() { + return getRuleContext(QueryNoWithContext.class,0); + } + public SubqueryContext(QueryPrimaryContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterSubquery(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitSubquery(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitSubquery(this); + else return visitor.visitChildren(this); + } + } + public static class QueryPrimaryDefaultContext extends QueryPrimaryContext { + public QuerySpecificationContext querySpecification() { + return getRuleContext(QuerySpecificationContext.class,0); + } + public QueryPrimaryDefaultContext(QueryPrimaryContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterQueryPrimaryDefault(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitQueryPrimaryDefault(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitQueryPrimaryDefault(this); + else return visitor.visitChildren(this); + } + } + public static class TableContext extends QueryPrimaryContext { + public TerminalNode TABLE() { return getToken(PrestoSqlParser.TABLE, 0); } + public QualifiedNameContext qualifiedName() { + return getRuleContext(QualifiedNameContext.class,0); + } + public TableContext(QueryPrimaryContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterTable(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitTable(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitTable(this); + else return visitor.visitChildren(this); + } + } + public static class InlineTableContext extends QueryPrimaryContext { + public TerminalNode VALUES() { return getToken(PrestoSqlParser.VALUES, 0); } + public List expression() { + return getRuleContexts(ExpressionContext.class); + } + public ExpressionContext expression(int i) { + return getRuleContext(ExpressionContext.class,i); + } + public InlineTableContext(QueryPrimaryContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterInlineTable(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitInlineTable(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitInlineTable(this); + else return visitor.visitChildren(this); + } + } + + public final QueryPrimaryContext queryPrimary() throws RecognitionException { + QueryPrimaryContext _localctx = new QueryPrimaryContext(_ctx, getState()); + enterRule(_localctx, 50, RULE_queryPrimary); + try { + int _alt; + setState(966); + _errHandler.sync(this); + switch (_input.LA(1)) { + case SELECT: + _localctx = new QueryPrimaryDefaultContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(950); + querySpecification(); + } + break; + case TABLE: + _localctx = new TableContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(951); + match(TABLE); + setState(952); + qualifiedName(); + } + break; + case VALUES: + _localctx = new InlineTableContext(_localctx); + enterOuterAlt(_localctx, 3); + { + setState(953); + match(VALUES); + setState(954); + expression(); + setState(959); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,115,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(955); + match(T__3); + setState(956); + expression(); + } + } + } + setState(961); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,115,_ctx); + } + } + break; + case T__1: + _localctx = new SubqueryContext(_localctx); + enterOuterAlt(_localctx, 4); + { + setState(962); + match(T__1); + setState(963); + queryNoWith(); + setState(964); + 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; + } + + public static class SortItemContext extends ParserRuleContext { + public Token ordering; + public Token nullOrdering; + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public TerminalNode NULLS() { return getToken(PrestoSqlParser.NULLS, 0); } + public TerminalNode ASC() { return getToken(PrestoSqlParser.ASC, 0); } + public TerminalNode DESC() { return getToken(PrestoSqlParser.DESC, 0); } + public TerminalNode FIRST() { return getToken(PrestoSqlParser.FIRST, 0); } + public TerminalNode LAST() { return getToken(PrestoSqlParser.LAST, 0); } + public SortItemContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_sortItem; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterSortItem(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitSortItem(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitSortItem(this); + else return visitor.visitChildren(this); + } + } + + public final SortItemContext sortItem() throws RecognitionException { + SortItemContext _localctx = new SortItemContext(_ctx, getState()); + enterRule(_localctx, 52, RULE_sortItem); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(968); + expression(); + setState(970); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ASC || _la==DESC) { + { + setState(969); + ((SortItemContext)_localctx).ordering = _input.LT(1); + _la = _input.LA(1); + if ( !(_la==ASC || _la==DESC) ) { + ((SortItemContext)_localctx).ordering = (Token)_errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + } + + setState(974); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==NULLS) { + { + setState(972); + match(NULLS); + setState(973); + ((SortItemContext)_localctx).nullOrdering = _input.LT(1); + _la = _input.LA(1); + if ( !(_la==FIRST || _la==LAST) ) { + ((SortItemContext)_localctx).nullOrdering = (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; + } + + public static class QuerySpecificationContext extends ParserRuleContext { + public BooleanExpressionContext where; + public BooleanExpressionContext having; + public TerminalNode SELECT() { return getToken(PrestoSqlParser.SELECT, 0); } + public List selectItem() { + return getRuleContexts(SelectItemContext.class); + } + public SelectItemContext selectItem(int i) { + return getRuleContext(SelectItemContext.class,i); + } + public SetQuantifierContext setQuantifier() { + return getRuleContext(SetQuantifierContext.class,0); + } + public TerminalNode FROM() { return getToken(PrestoSqlParser.FROM, 0); } + public List relation() { + return getRuleContexts(RelationContext.class); + } + public RelationContext relation(int i) { + return getRuleContext(RelationContext.class,i); + } + public TerminalNode WHERE() { return getToken(PrestoSqlParser.WHERE, 0); } + public TerminalNode GROUP() { return getToken(PrestoSqlParser.GROUP, 0); } + public TerminalNode BY() { return getToken(PrestoSqlParser.BY, 0); } + public GroupByContext groupBy() { + return getRuleContext(GroupByContext.class,0); + } + public TerminalNode HAVING() { return getToken(PrestoSqlParser.HAVING, 0); } + public List booleanExpression() { + return getRuleContexts(BooleanExpressionContext.class); + } + public BooleanExpressionContext booleanExpression(int i) { + return getRuleContext(BooleanExpressionContext.class,i); + } + public QuerySpecificationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_querySpecification; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterQuerySpecification(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitQuerySpecification(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitQuerySpecification(this); + else return visitor.visitChildren(this); + } + } + + public final QuerySpecificationContext querySpecification() throws RecognitionException { + QuerySpecificationContext _localctx = new QuerySpecificationContext(_ctx, getState()); + enterRule(_localctx, 54, RULE_querySpecification); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(976); + match(SELECT); + setState(978); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,119,_ctx) ) { + case 1: + { + setState(977); + setQuantifier(); + } + break; + } + setState(980); + selectItem(); + setState(985); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,120,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(981); + match(T__3); + setState(982); + selectItem(); + } + } + } + setState(987); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,120,_ctx); + } + setState(997); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,122,_ctx) ) { + case 1: + { + setState(988); + match(FROM); + setState(989); + relation(0); + setState(994); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,121,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(990); + match(T__3); + setState(991); + relation(0); + } + } + } + setState(996); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,121,_ctx); + } + } + break; + } + setState(1001); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,123,_ctx) ) { + case 1: + { + setState(999); + match(WHERE); + setState(1000); + ((QuerySpecificationContext)_localctx).where = booleanExpression(0); + } + break; + } + setState(1006); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,124,_ctx) ) { + case 1: + { + setState(1003); + match(GROUP); + setState(1004); + match(BY); + setState(1005); + groupBy(); + } + break; + } + setState(1010); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,125,_ctx) ) { + case 1: + { + setState(1008); + match(HAVING); + setState(1009); + ((QuerySpecificationContext)_localctx).having = booleanExpression(0); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class GroupByContext extends ParserRuleContext { + public List groupingElement() { + return getRuleContexts(GroupingElementContext.class); + } + public GroupingElementContext groupingElement(int i) { + return getRuleContext(GroupingElementContext.class,i); + } + public SetQuantifierContext setQuantifier() { + return getRuleContext(SetQuantifierContext.class,0); + } + public GroupByContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_groupBy; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterGroupBy(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitGroupBy(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitGroupBy(this); + else return visitor.visitChildren(this); + } + } + + public final GroupByContext groupBy() throws RecognitionException { + GroupByContext _localctx = new GroupByContext(_ctx, getState()); + enterRule(_localctx, 56, RULE_groupBy); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(1013); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,126,_ctx) ) { + case 1: + { + setState(1012); + setQuantifier(); + } + break; + } + setState(1015); + groupingElement(); + setState(1020); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,127,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(1016); + match(T__3); + setState(1017); + groupingElement(); + } + } + } + setState(1022); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,127,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class GroupingElementContext extends ParserRuleContext { + public GroupingElementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_groupingElement; } + + public GroupingElementContext() { } + public void copyFrom(GroupingElementContext ctx) { + super.copyFrom(ctx); + } + } + public static class MultipleGroupingSetsContext extends GroupingElementContext { + public TerminalNode GROUPING() { return getToken(PrestoSqlParser.GROUPING, 0); } + public TerminalNode SETS() { return getToken(PrestoSqlParser.SETS, 0); } + public List groupingSet() { + return getRuleContexts(GroupingSetContext.class); + } + public GroupingSetContext groupingSet(int i) { + return getRuleContext(GroupingSetContext.class,i); + } + public MultipleGroupingSetsContext(GroupingElementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterMultipleGroupingSets(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitMultipleGroupingSets(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitMultipleGroupingSets(this); + else return visitor.visitChildren(this); + } + } + public static class SingleGroupingSetContext extends GroupingElementContext { + public GroupingSetContext groupingSet() { + return getRuleContext(GroupingSetContext.class,0); + } + public SingleGroupingSetContext(GroupingElementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterSingleGroupingSet(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitSingleGroupingSet(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitSingleGroupingSet(this); + else return visitor.visitChildren(this); + } + } + public static class CubeContext extends GroupingElementContext { + public TerminalNode CUBE() { return getToken(PrestoSqlParser.CUBE, 0); } + public List expression() { + return getRuleContexts(ExpressionContext.class); + } + public ExpressionContext expression(int i) { + return getRuleContext(ExpressionContext.class,i); + } + public CubeContext(GroupingElementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterCube(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitCube(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitCube(this); + else return visitor.visitChildren(this); + } + } + public static class RollupContext extends GroupingElementContext { + public TerminalNode ROLLUP() { return getToken(PrestoSqlParser.ROLLUP, 0); } + public List expression() { + return getRuleContexts(ExpressionContext.class); + } + public ExpressionContext expression(int i) { + return getRuleContext(ExpressionContext.class,i); + } + public RollupContext(GroupingElementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterRollup(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitRollup(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitRollup(this); + else return visitor.visitChildren(this); + } + } + + public final GroupingElementContext groupingElement() throws RecognitionException { + GroupingElementContext _localctx = new GroupingElementContext(_ctx, getState()); + enterRule(_localctx, 58, RULE_groupingElement); + int _la; + try { + setState(1063); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,133,_ctx) ) { + case 1: + _localctx = new SingleGroupingSetContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(1023); + groupingSet(); + } + break; + case 2: + _localctx = new RollupContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(1024); + match(ROLLUP); + setState(1025); + match(T__1); + setState(1034); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__1) | (1L << T__4) | (1L << ADD) | (1L << ADMIN) | (1L << ALL) | (1L << ANALYZE) | (1L << ANY) | (1L << ARRAY) | (1L << ASC) | (1L << AT) | (1L << BERNOULLI) | (1L << CALL) | (1L << CALLED) | (1L << CASCADE) | (1L << CASE) | (1L << CAST) | (1L << CATALOGS) | (1L << COLUMN) | (1L << COLUMNS) | (1L << COMMENT) | (1L << COMMIT) | (1L << COMMITTED) | (1L << CURRENT) | (1L << CURRENT_DATE) | (1L << CURRENT_ROLE) | (1L << CURRENT_TIME) | (1L << CURRENT_TIMESTAMP) | (1L << CURRENT_USER) | (1L << DATA) | (1L << DATE) | (1L << DAY) | (1L << DEFINER) | (1L << DESC) | (1L << DETERMINISTIC) | (1L << DISTRIBUTED) | (1L << EXCLUDING) | (1L << EXISTS))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (EXPLAIN - 64)) | (1L << (EXTRACT - 64)) | (1L << (EXTERNAL - 64)) | (1L << (FALSE - 64)) | (1L << (FILTER - 64)) | (1L << (FIRST - 64)) | (1L << (FOLLOWING - 64)) | (1L << (FORMAT - 64)) | (1L << (FUNCTION - 64)) | (1L << (FUNCTIONS - 64)) | (1L << (GRANT - 64)) | (1L << (GRANTED - 64)) | (1L << (GRANTS - 64)) | (1L << (GRAPHVIZ - 64)) | (1L << (GROUPING - 64)) | (1L << (HOUR - 64)) | (1L << (IF - 64)) | (1L << (IGNORE - 64)) | (1L << (INCLUDING - 64)) | (1L << (INPUT - 64)) | (1L << (INTERVAL - 64)) | (1L << (INVOKER - 64)) | (1L << (IO - 64)) | (1L << (ISOLATION - 64)) | (1L << (JSON - 64)) | (1L << (LANGUAGE - 64)) | (1L << (LAST - 64)) | (1L << (LATERAL - 64)) | (1L << (LEVEL - 64)) | (1L << (LIMIT - 64)) | (1L << (LOCALTIME - 64)) | (1L << (LOCALTIMESTAMP - 64)) | (1L << (LOGICAL - 64)) | (1L << (MAP - 64)) | (1L << (MATERIALIZED - 64)) | (1L << (MINUTE - 64)) | (1L << (MONTH - 64)) | (1L << (NAME - 64)) | (1L << (NFC - 64)) | (1L << (NFD - 64)) | (1L << (NFKC - 64)) | (1L << (NFKD - 64)) | (1L << (NO - 64)) | (1L << (NONE - 64)) | (1L << (NORMALIZE - 64)) | (1L << (NOT - 64)) | (1L << (NULL - 64)) | (1L << (NULLIF - 64)) | (1L << (NULLS - 64)))) != 0) || ((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & ((1L << (OFFSET - 128)) | (1L << (ONLY - 128)) | (1L << (OPTION - 128)) | (1L << (ORDINALITY - 128)) | (1L << (OUTPUT - 128)) | (1L << (OVER - 128)) | (1L << (PARTITION - 128)) | (1L << (PARTITIONS - 128)) | (1L << (POSITION - 128)) | (1L << (PRECEDING - 128)) | (1L << (PRIVILEGES - 128)) | (1L << (PROPERTIES - 128)) | (1L << (RANGE - 128)) | (1L << (READ - 128)) | (1L << (REFRESH - 128)) | (1L << (RENAME - 128)) | (1L << (REPEATABLE - 128)) | (1L << (REPLACE - 128)) | (1L << (RESET - 128)) | (1L << (RESPECT - 128)) | (1L << (RESTRICT - 128)) | (1L << (RETURN - 128)) | (1L << (RETURNS - 128)) | (1L << (REVOKE - 128)) | (1L << (ROLE - 128)) | (1L << (ROLES - 128)) | (1L << (ROLLBACK - 128)) | (1L << (ROW - 128)) | (1L << (ROWS - 128)) | (1L << (SCHEMA - 128)) | (1L << (SCHEMAS - 128)) | (1L << (SECOND - 128)) | (1L << (SECURITY - 128)) | (1L << (SERIALIZABLE - 128)) | (1L << (SESSION - 128)) | (1L << (SET - 128)) | (1L << (SETS - 128)) | (1L << (SHOW - 128)) | (1L << (SOME - 128)) | (1L << (SQL - 128)) | (1L << (START - 128)) | (1L << (STATS - 128)) | (1L << (SUBSTRING - 128)) | (1L << (SYSTEM - 128)) | (1L << (TABLES - 128)) | (1L << (TABLESAMPLE - 128)) | (1L << (TEMPORARY - 128)) | (1L << (TEXT - 128)) | (1L << (TIME - 128)) | (1L << (TIMESTAMP - 128)) | (1L << (TO - 128)) | (1L << (TRANSACTION - 128)) | (1L << (TRUE - 128)))) != 0) || ((((_la - 192)) & ~0x3f) == 0 && ((1L << (_la - 192)) & ((1L << (TRY_CAST - 192)) | (1L << (TYPE - 192)) | (1L << (UNBOUNDED - 192)) | (1L << (UNCOMMITTED - 192)) | (1L << (USE - 192)) | (1L << (USER - 192)) | (1L << (VALIDATE - 192)) | (1L << (VERBOSE - 192)) | (1L << (VIEW - 192)) | (1L << (WORK - 192)) | (1L << (WRITE - 192)) | (1L << (YEAR - 192)) | (1L << (ZONE - 192)) | (1L << (PLUS - 192)) | (1L << (MINUS - 192)) | (1L << (STRING - 192)) | (1L << (UNICODE_STRING - 192)) | (1L << (BINARY_LITERAL - 192)) | (1L << (INTEGER_VALUE - 192)) | (1L << (DECIMAL_VALUE - 192)) | (1L << (DOUBLE_VALUE - 192)) | (1L << (IDENTIFIER - 192)) | (1L << (DIGIT_IDENTIFIER - 192)) | (1L << (QUOTED_IDENTIFIER - 192)) | (1L << (BACKQUOTED_IDENTIFIER - 192)) | (1L << (DOUBLE_PRECISION - 192)))) != 0)) { + { + setState(1026); + expression(); + setState(1031); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__3) { + { + { + setState(1027); + match(T__3); + setState(1028); + expression(); + } + } + setState(1033); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + + setState(1036); + match(T__2); + } + break; + case 3: + _localctx = new CubeContext(_localctx); + enterOuterAlt(_localctx, 3); + { + setState(1037); + match(CUBE); + setState(1038); + match(T__1); + setState(1047); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__1) | (1L << T__4) | (1L << ADD) | (1L << ADMIN) | (1L << ALL) | (1L << ANALYZE) | (1L << ANY) | (1L << ARRAY) | (1L << ASC) | (1L << AT) | (1L << BERNOULLI) | (1L << CALL) | (1L << CALLED) | (1L << CASCADE) | (1L << CASE) | (1L << CAST) | (1L << CATALOGS) | (1L << COLUMN) | (1L << COLUMNS) | (1L << COMMENT) | (1L << COMMIT) | (1L << COMMITTED) | (1L << CURRENT) | (1L << CURRENT_DATE) | (1L << CURRENT_ROLE) | (1L << CURRENT_TIME) | (1L << CURRENT_TIMESTAMP) | (1L << CURRENT_USER) | (1L << DATA) | (1L << DATE) | (1L << DAY) | (1L << DEFINER) | (1L << DESC) | (1L << DETERMINISTIC) | (1L << DISTRIBUTED) | (1L << EXCLUDING) | (1L << EXISTS))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (EXPLAIN - 64)) | (1L << (EXTRACT - 64)) | (1L << (EXTERNAL - 64)) | (1L << (FALSE - 64)) | (1L << (FILTER - 64)) | (1L << (FIRST - 64)) | (1L << (FOLLOWING - 64)) | (1L << (FORMAT - 64)) | (1L << (FUNCTION - 64)) | (1L << (FUNCTIONS - 64)) | (1L << (GRANT - 64)) | (1L << (GRANTED - 64)) | (1L << (GRANTS - 64)) | (1L << (GRAPHVIZ - 64)) | (1L << (GROUPING - 64)) | (1L << (HOUR - 64)) | (1L << (IF - 64)) | (1L << (IGNORE - 64)) | (1L << (INCLUDING - 64)) | (1L << (INPUT - 64)) | (1L << (INTERVAL - 64)) | (1L << (INVOKER - 64)) | (1L << (IO - 64)) | (1L << (ISOLATION - 64)) | (1L << (JSON - 64)) | (1L << (LANGUAGE - 64)) | (1L << (LAST - 64)) | (1L << (LATERAL - 64)) | (1L << (LEVEL - 64)) | (1L << (LIMIT - 64)) | (1L << (LOCALTIME - 64)) | (1L << (LOCALTIMESTAMP - 64)) | (1L << (LOGICAL - 64)) | (1L << (MAP - 64)) | (1L << (MATERIALIZED - 64)) | (1L << (MINUTE - 64)) | (1L << (MONTH - 64)) | (1L << (NAME - 64)) | (1L << (NFC - 64)) | (1L << (NFD - 64)) | (1L << (NFKC - 64)) | (1L << (NFKD - 64)) | (1L << (NO - 64)) | (1L << (NONE - 64)) | (1L << (NORMALIZE - 64)) | (1L << (NOT - 64)) | (1L << (NULL - 64)) | (1L << (NULLIF - 64)) | (1L << (NULLS - 64)))) != 0) || ((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & ((1L << (OFFSET - 128)) | (1L << (ONLY - 128)) | (1L << (OPTION - 128)) | (1L << (ORDINALITY - 128)) | (1L << (OUTPUT - 128)) | (1L << (OVER - 128)) | (1L << (PARTITION - 128)) | (1L << (PARTITIONS - 128)) | (1L << (POSITION - 128)) | (1L << (PRECEDING - 128)) | (1L << (PRIVILEGES - 128)) | (1L << (PROPERTIES - 128)) | (1L << (RANGE - 128)) | (1L << (READ - 128)) | (1L << (REFRESH - 128)) | (1L << (RENAME - 128)) | (1L << (REPEATABLE - 128)) | (1L << (REPLACE - 128)) | (1L << (RESET - 128)) | (1L << (RESPECT - 128)) | (1L << (RESTRICT - 128)) | (1L << (RETURN - 128)) | (1L << (RETURNS - 128)) | (1L << (REVOKE - 128)) | (1L << (ROLE - 128)) | (1L << (ROLES - 128)) | (1L << (ROLLBACK - 128)) | (1L << (ROW - 128)) | (1L << (ROWS - 128)) | (1L << (SCHEMA - 128)) | (1L << (SCHEMAS - 128)) | (1L << (SECOND - 128)) | (1L << (SECURITY - 128)) | (1L << (SERIALIZABLE - 128)) | (1L << (SESSION - 128)) | (1L << (SET - 128)) | (1L << (SETS - 128)) | (1L << (SHOW - 128)) | (1L << (SOME - 128)) | (1L << (SQL - 128)) | (1L << (START - 128)) | (1L << (STATS - 128)) | (1L << (SUBSTRING - 128)) | (1L << (SYSTEM - 128)) | (1L << (TABLES - 128)) | (1L << (TABLESAMPLE - 128)) | (1L << (TEMPORARY - 128)) | (1L << (TEXT - 128)) | (1L << (TIME - 128)) | (1L << (TIMESTAMP - 128)) | (1L << (TO - 128)) | (1L << (TRANSACTION - 128)) | (1L << (TRUE - 128)))) != 0) || ((((_la - 192)) & ~0x3f) == 0 && ((1L << (_la - 192)) & ((1L << (TRY_CAST - 192)) | (1L << (TYPE - 192)) | (1L << (UNBOUNDED - 192)) | (1L << (UNCOMMITTED - 192)) | (1L << (USE - 192)) | (1L << (USER - 192)) | (1L << (VALIDATE - 192)) | (1L << (VERBOSE - 192)) | (1L << (VIEW - 192)) | (1L << (WORK - 192)) | (1L << (WRITE - 192)) | (1L << (YEAR - 192)) | (1L << (ZONE - 192)) | (1L << (PLUS - 192)) | (1L << (MINUS - 192)) | (1L << (STRING - 192)) | (1L << (UNICODE_STRING - 192)) | (1L << (BINARY_LITERAL - 192)) | (1L << (INTEGER_VALUE - 192)) | (1L << (DECIMAL_VALUE - 192)) | (1L << (DOUBLE_VALUE - 192)) | (1L << (IDENTIFIER - 192)) | (1L << (DIGIT_IDENTIFIER - 192)) | (1L << (QUOTED_IDENTIFIER - 192)) | (1L << (BACKQUOTED_IDENTIFIER - 192)) | (1L << (DOUBLE_PRECISION - 192)))) != 0)) { + { + setState(1039); + expression(); + setState(1044); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__3) { + { + { + setState(1040); + match(T__3); + setState(1041); + expression(); + } + } + setState(1046); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + + setState(1049); + match(T__2); + } + break; + case 4: + _localctx = new MultipleGroupingSetsContext(_localctx); + enterOuterAlt(_localctx, 4); + { + setState(1050); + match(GROUPING); + setState(1051); + match(SETS); + setState(1052); + match(T__1); + setState(1053); + groupingSet(); + setState(1058); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__3) { + { + { + setState(1054); + match(T__3); + setState(1055); + groupingSet(); + } + } + setState(1060); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1061); + match(T__2); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class GroupingSetContext extends ParserRuleContext { + public List expression() { + return getRuleContexts(ExpressionContext.class); + } + public ExpressionContext expression(int i) { + return getRuleContext(ExpressionContext.class,i); + } + public GroupingSetContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_groupingSet; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterGroupingSet(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitGroupingSet(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitGroupingSet(this); + else return visitor.visitChildren(this); + } + } + + public final GroupingSetContext groupingSet() throws RecognitionException { + GroupingSetContext _localctx = new GroupingSetContext(_ctx, getState()); + enterRule(_localctx, 60, RULE_groupingSet); + int _la; + try { + setState(1078); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,136,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1065); + match(T__1); + setState(1074); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__1) | (1L << T__4) | (1L << ADD) | (1L << ADMIN) | (1L << ALL) | (1L << ANALYZE) | (1L << ANY) | (1L << ARRAY) | (1L << ASC) | (1L << AT) | (1L << BERNOULLI) | (1L << CALL) | (1L << CALLED) | (1L << CASCADE) | (1L << CASE) | (1L << CAST) | (1L << CATALOGS) | (1L << COLUMN) | (1L << COLUMNS) | (1L << COMMENT) | (1L << COMMIT) | (1L << COMMITTED) | (1L << CURRENT) | (1L << CURRENT_DATE) | (1L << CURRENT_ROLE) | (1L << CURRENT_TIME) | (1L << CURRENT_TIMESTAMP) | (1L << CURRENT_USER) | (1L << DATA) | (1L << DATE) | (1L << DAY) | (1L << DEFINER) | (1L << DESC) | (1L << DETERMINISTIC) | (1L << DISTRIBUTED) | (1L << EXCLUDING) | (1L << EXISTS))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (EXPLAIN - 64)) | (1L << (EXTRACT - 64)) | (1L << (EXTERNAL - 64)) | (1L << (FALSE - 64)) | (1L << (FILTER - 64)) | (1L << (FIRST - 64)) | (1L << (FOLLOWING - 64)) | (1L << (FORMAT - 64)) | (1L << (FUNCTION - 64)) | (1L << (FUNCTIONS - 64)) | (1L << (GRANT - 64)) | (1L << (GRANTED - 64)) | (1L << (GRANTS - 64)) | (1L << (GRAPHVIZ - 64)) | (1L << (GROUPING - 64)) | (1L << (HOUR - 64)) | (1L << (IF - 64)) | (1L << (IGNORE - 64)) | (1L << (INCLUDING - 64)) | (1L << (INPUT - 64)) | (1L << (INTERVAL - 64)) | (1L << (INVOKER - 64)) | (1L << (IO - 64)) | (1L << (ISOLATION - 64)) | (1L << (JSON - 64)) | (1L << (LANGUAGE - 64)) | (1L << (LAST - 64)) | (1L << (LATERAL - 64)) | (1L << (LEVEL - 64)) | (1L << (LIMIT - 64)) | (1L << (LOCALTIME - 64)) | (1L << (LOCALTIMESTAMP - 64)) | (1L << (LOGICAL - 64)) | (1L << (MAP - 64)) | (1L << (MATERIALIZED - 64)) | (1L << (MINUTE - 64)) | (1L << (MONTH - 64)) | (1L << (NAME - 64)) | (1L << (NFC - 64)) | (1L << (NFD - 64)) | (1L << (NFKC - 64)) | (1L << (NFKD - 64)) | (1L << (NO - 64)) | (1L << (NONE - 64)) | (1L << (NORMALIZE - 64)) | (1L << (NOT - 64)) | (1L << (NULL - 64)) | (1L << (NULLIF - 64)) | (1L << (NULLS - 64)))) != 0) || ((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & ((1L << (OFFSET - 128)) | (1L << (ONLY - 128)) | (1L << (OPTION - 128)) | (1L << (ORDINALITY - 128)) | (1L << (OUTPUT - 128)) | (1L << (OVER - 128)) | (1L << (PARTITION - 128)) | (1L << (PARTITIONS - 128)) | (1L << (POSITION - 128)) | (1L << (PRECEDING - 128)) | (1L << (PRIVILEGES - 128)) | (1L << (PROPERTIES - 128)) | (1L << (RANGE - 128)) | (1L << (READ - 128)) | (1L << (REFRESH - 128)) | (1L << (RENAME - 128)) | (1L << (REPEATABLE - 128)) | (1L << (REPLACE - 128)) | (1L << (RESET - 128)) | (1L << (RESPECT - 128)) | (1L << (RESTRICT - 128)) | (1L << (RETURN - 128)) | (1L << (RETURNS - 128)) | (1L << (REVOKE - 128)) | (1L << (ROLE - 128)) | (1L << (ROLES - 128)) | (1L << (ROLLBACK - 128)) | (1L << (ROW - 128)) | (1L << (ROWS - 128)) | (1L << (SCHEMA - 128)) | (1L << (SCHEMAS - 128)) | (1L << (SECOND - 128)) | (1L << (SECURITY - 128)) | (1L << (SERIALIZABLE - 128)) | (1L << (SESSION - 128)) | (1L << (SET - 128)) | (1L << (SETS - 128)) | (1L << (SHOW - 128)) | (1L << (SOME - 128)) | (1L << (SQL - 128)) | (1L << (START - 128)) | (1L << (STATS - 128)) | (1L << (SUBSTRING - 128)) | (1L << (SYSTEM - 128)) | (1L << (TABLES - 128)) | (1L << (TABLESAMPLE - 128)) | (1L << (TEMPORARY - 128)) | (1L << (TEXT - 128)) | (1L << (TIME - 128)) | (1L << (TIMESTAMP - 128)) | (1L << (TO - 128)) | (1L << (TRANSACTION - 128)) | (1L << (TRUE - 128)))) != 0) || ((((_la - 192)) & ~0x3f) == 0 && ((1L << (_la - 192)) & ((1L << (TRY_CAST - 192)) | (1L << (TYPE - 192)) | (1L << (UNBOUNDED - 192)) | (1L << (UNCOMMITTED - 192)) | (1L << (USE - 192)) | (1L << (USER - 192)) | (1L << (VALIDATE - 192)) | (1L << (VERBOSE - 192)) | (1L << (VIEW - 192)) | (1L << (WORK - 192)) | (1L << (WRITE - 192)) | (1L << (YEAR - 192)) | (1L << (ZONE - 192)) | (1L << (PLUS - 192)) | (1L << (MINUS - 192)) | (1L << (STRING - 192)) | (1L << (UNICODE_STRING - 192)) | (1L << (BINARY_LITERAL - 192)) | (1L << (INTEGER_VALUE - 192)) | (1L << (DECIMAL_VALUE - 192)) | (1L << (DOUBLE_VALUE - 192)) | (1L << (IDENTIFIER - 192)) | (1L << (DIGIT_IDENTIFIER - 192)) | (1L << (QUOTED_IDENTIFIER - 192)) | (1L << (BACKQUOTED_IDENTIFIER - 192)) | (1L << (DOUBLE_PRECISION - 192)))) != 0)) { + { + setState(1066); + expression(); + setState(1071); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__3) { + { + { + setState(1067); + match(T__3); + setState(1068); + expression(); + } + } + setState(1073); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + + setState(1076); + match(T__2); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1077); + expression(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class NamedQueryContext extends ParserRuleContext { + public IdentifierContext name; + public TerminalNode AS() { return getToken(PrestoSqlParser.AS, 0); } + public QueryContext query() { + return getRuleContext(QueryContext.class,0); + } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public ColumnAliasesContext columnAliases() { + return getRuleContext(ColumnAliasesContext.class,0); + } + public NamedQueryContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_namedQuery; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterNamedQuery(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitNamedQuery(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitNamedQuery(this); + else return visitor.visitChildren(this); + } + } + + public final NamedQueryContext namedQuery() throws RecognitionException { + NamedQueryContext _localctx = new NamedQueryContext(_ctx, getState()); + enterRule(_localctx, 62, RULE_namedQuery); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1080); + ((NamedQueryContext)_localctx).name = identifier(); + setState(1082); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==T__1) { + { + setState(1081); + columnAliases(); + } + } + + setState(1084); + match(AS); + setState(1085); + match(T__1); + setState(1086); + query(); + setState(1087); + match(T__2); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class SetQuantifierContext extends ParserRuleContext { + public TerminalNode DISTINCT() { return getToken(PrestoSqlParser.DISTINCT, 0); } + public TerminalNode ALL() { return getToken(PrestoSqlParser.ALL, 0); } + public SetQuantifierContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_setQuantifier; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterSetQuantifier(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitSetQuantifier(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitSetQuantifier(this); + else return visitor.visitChildren(this); + } + } + + public final SetQuantifierContext setQuantifier() throws RecognitionException { + SetQuantifierContext _localctx = new SetQuantifierContext(_ctx, getState()); + enterRule(_localctx, 64, RULE_setQuantifier); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1089); + _la = _input.LA(1); + if ( !(_la==ALL || _la==DISTINCT) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class SelectItemContext extends ParserRuleContext { + public SelectItemContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_selectItem; } + + public SelectItemContext() { } + public void copyFrom(SelectItemContext ctx) { + super.copyFrom(ctx); + } + } + public static class SelectAllContext extends SelectItemContext { + public QualifiedNameContext qualifiedName() { + return getRuleContext(QualifiedNameContext.class,0); + } + public TerminalNode ASTERISK() { return getToken(PrestoSqlParser.ASTERISK, 0); } + public SelectAllContext(SelectItemContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterSelectAll(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitSelectAll(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitSelectAll(this); + else return visitor.visitChildren(this); + } + } + public static class SelectSingleContext extends SelectItemContext { + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode AS() { return getToken(PrestoSqlParser.AS, 0); } + public SelectSingleContext(SelectItemContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterSelectSingle(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitSelectSingle(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitSelectSingle(this); + else return visitor.visitChildren(this); + } + } + + public final SelectItemContext selectItem() throws RecognitionException { + SelectItemContext _localctx = new SelectItemContext(_ctx, getState()); + enterRule(_localctx, 66, RULE_selectItem); + int _la; + try { + setState(1103); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,140,_ctx) ) { + case 1: + _localctx = new SelectSingleContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(1091); + expression(); + setState(1096); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,139,_ctx) ) { + case 1: + { + setState(1093); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==AS) { + { + setState(1092); + match(AS); + } + } + + setState(1095); + identifier(); + } + break; + } + } + break; + case 2: + _localctx = new SelectAllContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(1098); + qualifiedName(); + setState(1099); + match(T__0); + setState(1100); + match(ASTERISK); + } + break; + case 3: + _localctx = new SelectAllContext(_localctx); + enterOuterAlt(_localctx, 3); + { + setState(1102); + match(ASTERISK); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class RelationContext extends ParserRuleContext { + public RelationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_relation; } + + public RelationContext() { } + public void copyFrom(RelationContext ctx) { + super.copyFrom(ctx); + } + } + public static class RelationDefaultContext extends RelationContext { + public SampledRelationContext sampledRelation() { + return getRuleContext(SampledRelationContext.class,0); + } + public RelationDefaultContext(RelationContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterRelationDefault(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitRelationDefault(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitRelationDefault(this); + else return visitor.visitChildren(this); + } + } + public static class JoinRelationContext extends RelationContext { + public RelationContext left; + public SampledRelationContext right; + public RelationContext rightRelation; + public List relation() { + return getRuleContexts(RelationContext.class); + } + public RelationContext relation(int i) { + return getRuleContext(RelationContext.class,i); + } + public TerminalNode CROSS() { return getToken(PrestoSqlParser.CROSS, 0); } + public TerminalNode JOIN() { return getToken(PrestoSqlParser.JOIN, 0); } + public JoinTypeContext joinType() { + return getRuleContext(JoinTypeContext.class,0); + } + public JoinCriteriaContext joinCriteria() { + return getRuleContext(JoinCriteriaContext.class,0); + } + public TerminalNode NATURAL() { return getToken(PrestoSqlParser.NATURAL, 0); } + public SampledRelationContext sampledRelation() { + return getRuleContext(SampledRelationContext.class,0); + } + public JoinRelationContext(RelationContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterJoinRelation(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitJoinRelation(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitJoinRelation(this); + else return visitor.visitChildren(this); + } + } + + public final RelationContext relation() throws RecognitionException { + return relation(0); + } + + private RelationContext relation(int _p) throws RecognitionException { + ParserRuleContext _parentctx = _ctx; + int _parentState = getState(); + RelationContext _localctx = new RelationContext(_ctx, _parentState); + RelationContext _prevctx = _localctx; + int _startState = 68; + enterRecursionRule(_localctx, 68, RULE_relation, _p); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + { + _localctx = new RelationDefaultContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + + setState(1106); + sampledRelation(); + } + _ctx.stop = _input.LT(-1); + setState(1126); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,142,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + if ( _parseListeners!=null ) triggerExitRuleEvent(); + _prevctx = _localctx; + { + { + _localctx = new JoinRelationContext(new RelationContext(_parentctx, _parentState)); + ((JoinRelationContext)_localctx).left = _prevctx; + pushNewRecursionContext(_localctx, _startState, RULE_relation); + setState(1108); + if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)"); + setState(1122); + _errHandler.sync(this); + switch (_input.LA(1)) { + case CROSS: + { + setState(1109); + match(CROSS); + setState(1110); + match(JOIN); + setState(1111); + ((JoinRelationContext)_localctx).right = sampledRelation(); + } + break; + case FULL: + case INNER: + case JOIN: + case LEFT: + case RIGHT: + { + setState(1112); + joinType(); + setState(1113); + match(JOIN); + setState(1114); + ((JoinRelationContext)_localctx).rightRelation = relation(0); + setState(1115); + joinCriteria(); + } + break; + case NATURAL: + { + setState(1117); + match(NATURAL); + setState(1118); + joinType(); + setState(1119); + match(JOIN); + setState(1120); + ((JoinRelationContext)_localctx).right = sampledRelation(); + } + break; + default: + throw new NoViableAltException(this); + } + } + } + } + setState(1128); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,142,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + unrollRecursionContexts(_parentctx); + } + return _localctx; + } + + public static class JoinTypeContext extends ParserRuleContext { + public TerminalNode INNER() { return getToken(PrestoSqlParser.INNER, 0); } + public TerminalNode LEFT() { return getToken(PrestoSqlParser.LEFT, 0); } + public TerminalNode OUTER() { return getToken(PrestoSqlParser.OUTER, 0); } + public TerminalNode RIGHT() { return getToken(PrestoSqlParser.RIGHT, 0); } + public TerminalNode FULL() { return getToken(PrestoSqlParser.FULL, 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 PrestoSqlListener ) ((PrestoSqlListener)listener).enterJoinType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitJoinType(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitJoinType(this); + else return visitor.visitChildren(this); + } + } + + public final JoinTypeContext joinType() throws RecognitionException { + JoinTypeContext _localctx = new JoinTypeContext(_ctx, getState()); + enterRule(_localctx, 70, RULE_joinType); + int _la; + try { + setState(1144); + _errHandler.sync(this); + switch (_input.LA(1)) { + case INNER: + case JOIN: + enterOuterAlt(_localctx, 1); + { + setState(1130); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==INNER) { + { + setState(1129); + match(INNER); + } + } + + } + break; + case LEFT: + enterOuterAlt(_localctx, 2); + { + setState(1132); + match(LEFT); + setState(1134); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==OUTER) { + { + setState(1133); + match(OUTER); + } + } + + } + break; + case RIGHT: + enterOuterAlt(_localctx, 3); + { + setState(1136); + match(RIGHT); + setState(1138); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==OUTER) { + { + setState(1137); + match(OUTER); + } + } + + } + break; + case FULL: + enterOuterAlt(_localctx, 4); + { + setState(1140); + match(FULL); + setState(1142); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==OUTER) { + { + setState(1141); + match(OUTER); + } + } + + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class JoinCriteriaContext extends ParserRuleContext { + public TerminalNode ON() { return getToken(PrestoSqlParser.ON, 0); } + public BooleanExpressionContext booleanExpression() { + return getRuleContext(BooleanExpressionContext.class,0); + } + public TerminalNode USING() { return getToken(PrestoSqlParser.USING, 0); } + public List identifier() { + return getRuleContexts(IdentifierContext.class); + } + public IdentifierContext identifier(int i) { + return getRuleContext(IdentifierContext.class,i); + } + public JoinCriteriaContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_joinCriteria; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterJoinCriteria(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitJoinCriteria(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitJoinCriteria(this); + else return visitor.visitChildren(this); + } + } + + public final JoinCriteriaContext joinCriteria() throws RecognitionException { + JoinCriteriaContext _localctx = new JoinCriteriaContext(_ctx, getState()); + enterRule(_localctx, 72, RULE_joinCriteria); + int _la; + try { + setState(1160); + _errHandler.sync(this); + switch (_input.LA(1)) { + case ON: + enterOuterAlt(_localctx, 1); + { + setState(1146); + match(ON); + setState(1147); + booleanExpression(0); + } + break; + case USING: + enterOuterAlt(_localctx, 2); + { + setState(1148); + match(USING); + setState(1149); + match(T__1); + setState(1150); + identifier(); + setState(1155); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__3) { + { + { + setState(1151); + match(T__3); + setState(1152); + identifier(); + } + } + setState(1157); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1158); + 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; + } + + public static class SampledRelationContext extends ParserRuleContext { + public ExpressionContext percentage; + public AliasedRelationContext aliasedRelation() { + return getRuleContext(AliasedRelationContext.class,0); + } + public TerminalNode TABLESAMPLE() { return getToken(PrestoSqlParser.TABLESAMPLE, 0); } + public SampleTypeContext sampleType() { + return getRuleContext(SampleTypeContext.class,0); + } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public SampledRelationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_sampledRelation; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterSampledRelation(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitSampledRelation(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitSampledRelation(this); + else return visitor.visitChildren(this); + } + } + + public final SampledRelationContext sampledRelation() throws RecognitionException { + SampledRelationContext _localctx = new SampledRelationContext(_ctx, getState()); + enterRule(_localctx, 74, RULE_sampledRelation); + try { + enterOuterAlt(_localctx, 1); + { + setState(1162); + aliasedRelation(); + setState(1169); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,150,_ctx) ) { + case 1: + { + setState(1163); + match(TABLESAMPLE); + setState(1164); + sampleType(); + setState(1165); + match(T__1); + setState(1166); + ((SampledRelationContext)_localctx).percentage = expression(); + setState(1167); + match(T__2); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class SampleTypeContext extends ParserRuleContext { + public TerminalNode BERNOULLI() { return getToken(PrestoSqlParser.BERNOULLI, 0); } + public TerminalNode SYSTEM() { return getToken(PrestoSqlParser.SYSTEM, 0); } + public SampleTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_sampleType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterSampleType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitSampleType(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitSampleType(this); + else return visitor.visitChildren(this); + } + } + + public final SampleTypeContext sampleType() throws RecognitionException { + SampleTypeContext _localctx = new SampleTypeContext(_ctx, getState()); + enterRule(_localctx, 76, RULE_sampleType); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1171); + _la = _input.LA(1); + if ( !(_la==BERNOULLI || _la==SYSTEM) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class AliasedRelationContext extends ParserRuleContext { + public RelationPrimaryContext relationPrimary() { + return getRuleContext(RelationPrimaryContext.class,0); + } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode AS() { return getToken(PrestoSqlParser.AS, 0); } + public ColumnAliasesContext columnAliases() { + return getRuleContext(ColumnAliasesContext.class,0); + } + public AliasedRelationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_aliasedRelation; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterAliasedRelation(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitAliasedRelation(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitAliasedRelation(this); + else return visitor.visitChildren(this); + } + } + + public final AliasedRelationContext aliasedRelation() throws RecognitionException { + AliasedRelationContext _localctx = new AliasedRelationContext(_ctx, getState()); + enterRule(_localctx, 78, RULE_aliasedRelation); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1173); + relationPrimary(); + setState(1181); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,153,_ctx) ) { + case 1: + { + setState(1175); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==AS) { + { + setState(1174); + match(AS); + } + } + + setState(1177); + identifier(); + setState(1179); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,152,_ctx) ) { + case 1: + { + setState(1178); + columnAliases(); + } + break; + } + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ColumnAliasesContext extends ParserRuleContext { + public List identifier() { + return getRuleContexts(IdentifierContext.class); + } + public IdentifierContext identifier(int i) { + return getRuleContext(IdentifierContext.class,i); + } + public ColumnAliasesContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_columnAliases; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterColumnAliases(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitColumnAliases(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitColumnAliases(this); + else return visitor.visitChildren(this); + } + } + + public final ColumnAliasesContext columnAliases() throws RecognitionException { + ColumnAliasesContext _localctx = new ColumnAliasesContext(_ctx, getState()); + enterRule(_localctx, 80, RULE_columnAliases); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1183); + match(T__1); + setState(1184); + identifier(); + setState(1189); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__3) { + { + { + setState(1185); + match(T__3); + setState(1186); + identifier(); + } + } + setState(1191); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1192); + match(T__2); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class RelationPrimaryContext extends ParserRuleContext { + public RelationPrimaryContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_relationPrimary; } + + public RelationPrimaryContext() { } + public void copyFrom(RelationPrimaryContext ctx) { + super.copyFrom(ctx); + } + } + public static class SubqueryRelationContext extends RelationPrimaryContext { + public QueryContext query() { + return getRuleContext(QueryContext.class,0); + } + public SubqueryRelationContext(RelationPrimaryContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterSubqueryRelation(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitSubqueryRelation(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitSubqueryRelation(this); + else return visitor.visitChildren(this); + } + } + public static class ParenthesizedRelationContext extends RelationPrimaryContext { + public RelationContext relation() { + return getRuleContext(RelationContext.class,0); + } + public ParenthesizedRelationContext(RelationPrimaryContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterParenthesizedRelation(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitParenthesizedRelation(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitParenthesizedRelation(this); + else return visitor.visitChildren(this); + } + } + public static class UnnestContext extends RelationPrimaryContext { + public TerminalNode UNNEST() { return getToken(PrestoSqlParser.UNNEST, 0); } + public List expression() { + return getRuleContexts(ExpressionContext.class); + } + public ExpressionContext expression(int i) { + return getRuleContext(ExpressionContext.class,i); + } + public TerminalNode WITH() { return getToken(PrestoSqlParser.WITH, 0); } + public TerminalNode ORDINALITY() { return getToken(PrestoSqlParser.ORDINALITY, 0); } + public UnnestContext(RelationPrimaryContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterUnnest(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitUnnest(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitUnnest(this); + else return visitor.visitChildren(this); + } + } + public static class LateralContext extends RelationPrimaryContext { + public TerminalNode LATERAL() { return getToken(PrestoSqlParser.LATERAL, 0); } + public QueryContext query() { + return getRuleContext(QueryContext.class,0); + } + public LateralContext(RelationPrimaryContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterLateral(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitLateral(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitLateral(this); + else return visitor.visitChildren(this); + } + } + public static class TableNameContext extends RelationPrimaryContext { + public QualifiedNameContext qualifiedName() { + return getRuleContext(QualifiedNameContext.class,0); + } + public TableNameContext(RelationPrimaryContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterTableName(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitTableName(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitTableName(this); + else return visitor.visitChildren(this); + } + } + + public final RelationPrimaryContext relationPrimary() throws RecognitionException { + RelationPrimaryContext _localctx = new RelationPrimaryContext(_ctx, getState()); + enterRule(_localctx, 82, RULE_relationPrimary); + int _la; + try { + setState(1223); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,157,_ctx) ) { + case 1: + _localctx = new TableNameContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(1194); + qualifiedName(); + } + break; + case 2: + _localctx = new SubqueryRelationContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(1195); + match(T__1); + setState(1196); + query(); + setState(1197); + match(T__2); + } + break; + case 3: + _localctx = new UnnestContext(_localctx); + enterOuterAlt(_localctx, 3); + { + setState(1199); + match(UNNEST); + setState(1200); + match(T__1); + setState(1201); + expression(); + setState(1206); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__3) { + { + { + setState(1202); + match(T__3); + setState(1203); + expression(); + } + } + setState(1208); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1209); + match(T__2); + setState(1212); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,156,_ctx) ) { + case 1: + { + setState(1210); + match(WITH); + setState(1211); + match(ORDINALITY); + } + break; + } + } + break; + case 4: + _localctx = new LateralContext(_localctx); + enterOuterAlt(_localctx, 4); + { + setState(1214); + match(LATERAL); + setState(1215); + match(T__1); + setState(1216); + query(); + setState(1217); + match(T__2); + } + break; + case 5: + _localctx = new ParenthesizedRelationContext(_localctx); + enterOuterAlt(_localctx, 5); + { + setState(1219); + match(T__1); + setState(1220); + relation(0); + setState(1221); + match(T__2); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ExpressionContext extends ParserRuleContext { + public BooleanExpressionContext booleanExpression() { + return getRuleContext(BooleanExpressionContext.class,0); + } + public ExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_expression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitExpression(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitExpression(this); + else return visitor.visitChildren(this); + } + } + + public final ExpressionContext expression() throws RecognitionException { + ExpressionContext _localctx = new ExpressionContext(_ctx, getState()); + enterRule(_localctx, 84, RULE_expression); + try { + enterOuterAlt(_localctx, 1); + { + setState(1225); + booleanExpression(0); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class BooleanExpressionContext extends ParserRuleContext { + public BooleanExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_booleanExpression; } + + public BooleanExpressionContext() { } + public void copyFrom(BooleanExpressionContext ctx) { + super.copyFrom(ctx); + } + } + public static class LogicalNotContext extends BooleanExpressionContext { + public TerminalNode NOT() { return getToken(PrestoSqlParser.NOT, 0); } + public BooleanExpressionContext booleanExpression() { + return getRuleContext(BooleanExpressionContext.class,0); + } + public LogicalNotContext(BooleanExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterLogicalNot(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitLogicalNot(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitLogicalNot(this); + else return visitor.visitChildren(this); + } + } + public static class PredicatedContext extends BooleanExpressionContext { + public ValueExpressionContext valueExpression; + public ValueExpressionContext valueExpression() { + return getRuleContext(ValueExpressionContext.class,0); + } + public PredicateContext predicate() { + return getRuleContext(PredicateContext.class,0); + } + public PredicatedContext(BooleanExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterPredicated(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitPredicated(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitPredicated(this); + else return visitor.visitChildren(this); + } + } + public static class LogicalBinaryContext extends BooleanExpressionContext { + public BooleanExpressionContext left; + public Token operator; + public BooleanExpressionContext right; + public List booleanExpression() { + return getRuleContexts(BooleanExpressionContext.class); + } + public BooleanExpressionContext booleanExpression(int i) { + return getRuleContext(BooleanExpressionContext.class,i); + } + public TerminalNode AND() { return getToken(PrestoSqlParser.AND, 0); } + public TerminalNode OR() { return getToken(PrestoSqlParser.OR, 0); } + public LogicalBinaryContext(BooleanExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterLogicalBinary(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitLogicalBinary(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitLogicalBinary(this); + else return visitor.visitChildren(this); + } + } + + public final BooleanExpressionContext booleanExpression() throws RecognitionException { + return booleanExpression(0); + } + + private BooleanExpressionContext booleanExpression(int _p) throws RecognitionException { + ParserRuleContext _parentctx = _ctx; + int _parentState = getState(); + BooleanExpressionContext _localctx = new BooleanExpressionContext(_ctx, _parentState); + BooleanExpressionContext _prevctx = _localctx; + int _startState = 86; + enterRecursionRule(_localctx, 86, RULE_booleanExpression, _p); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(1234); + _errHandler.sync(this); + switch (_input.LA(1)) { + case T__1: + case T__4: + case ADD: + case ADMIN: + case ALL: + case ANALYZE: + case ANY: + case ARRAY: + case ASC: + case AT: + case BERNOULLI: + case CALL: + case CALLED: + case CASCADE: + case CASE: + case CAST: + case CATALOGS: + case COLUMN: + case COLUMNS: + case COMMENT: + case COMMIT: + case COMMITTED: + case CURRENT: + case CURRENT_DATE: + case CURRENT_ROLE: + case CURRENT_TIME: + case CURRENT_TIMESTAMP: + case CURRENT_USER: + case DATA: + case DATE: + case DAY: + case DEFINER: + case DESC: + case DETERMINISTIC: + case DISTRIBUTED: + case EXCLUDING: + case EXISTS: + case EXPLAIN: + case EXTRACT: + case EXTERNAL: + case FALSE: + case FILTER: + case FIRST: + case FOLLOWING: + case FORMAT: + case FUNCTION: + case FUNCTIONS: + case GRANT: + case GRANTED: + case GRANTS: + case GRAPHVIZ: + case GROUPING: + case HOUR: + case IF: + case IGNORE: + case INCLUDING: + case INPUT: + case INTERVAL: + case INVOKER: + case IO: + case ISOLATION: + case JSON: + case LANGUAGE: + case LAST: + case LATERAL: + case LEVEL: + case LIMIT: + case LOCALTIME: + case LOCALTIMESTAMP: + case LOGICAL: + case MAP: + case MATERIALIZED: + case MINUTE: + case MONTH: + case NAME: + case NFC: + case NFD: + case NFKC: + case NFKD: + case NO: + case NONE: + case NORMALIZE: + case NULL: + case NULLIF: + case NULLS: + case OFFSET: + case ONLY: + case OPTION: + case ORDINALITY: + case OUTPUT: + case OVER: + case PARTITION: + case PARTITIONS: + case POSITION: + case PRECEDING: + case PRIVILEGES: + case PROPERTIES: + case RANGE: + case READ: + case REFRESH: + case RENAME: + case REPEATABLE: + case REPLACE: + case RESET: + case RESPECT: + case RESTRICT: + case RETURN: + case RETURNS: + case REVOKE: + case ROLE: + case ROLES: + case ROLLBACK: + case ROW: + case ROWS: + case SCHEMA: + case SCHEMAS: + case SECOND: + case SECURITY: + case SERIALIZABLE: + case SESSION: + case SET: + case SETS: + case SHOW: + case SOME: + case SQL: + case START: + case STATS: + case SUBSTRING: + case SYSTEM: + case TABLES: + case TABLESAMPLE: + case TEMPORARY: + case TEXT: + case TIME: + case TIMESTAMP: + case TO: + case TRANSACTION: + case TRUE: + case TRY_CAST: + case TYPE: + case UNBOUNDED: + case UNCOMMITTED: + case USE: + case USER: + case VALIDATE: + case VERBOSE: + case VIEW: + case WORK: + case WRITE: + case YEAR: + case ZONE: + case PLUS: + case MINUS: + case STRING: + case UNICODE_STRING: + case BINARY_LITERAL: + case INTEGER_VALUE: + case DECIMAL_VALUE: + case DOUBLE_VALUE: + case IDENTIFIER: + case DIGIT_IDENTIFIER: + case QUOTED_IDENTIFIER: + case BACKQUOTED_IDENTIFIER: + case DOUBLE_PRECISION: + { + _localctx = new PredicatedContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + + setState(1228); + ((PredicatedContext)_localctx).valueExpression = valueExpression(0); + setState(1230); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,158,_ctx) ) { + case 1: + { + setState(1229); + predicate(((PredicatedContext)_localctx).valueExpression); + } + break; + } + } + break; + case NOT: + { + _localctx = new LogicalNotContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(1232); + match(NOT); + setState(1233); + booleanExpression(3); + } + break; + default: + throw new NoViableAltException(this); + } + _ctx.stop = _input.LT(-1); + setState(1244); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,161,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + if ( _parseListeners!=null ) triggerExitRuleEvent(); + _prevctx = _localctx; + { + setState(1242); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,160,_ctx) ) { + case 1: + { + _localctx = new LogicalBinaryContext(new BooleanExpressionContext(_parentctx, _parentState)); + ((LogicalBinaryContext)_localctx).left = _prevctx; + pushNewRecursionContext(_localctx, _startState, RULE_booleanExpression); + setState(1236); + if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)"); + setState(1237); + ((LogicalBinaryContext)_localctx).operator = match(AND); + setState(1238); + ((LogicalBinaryContext)_localctx).right = booleanExpression(3); + } + break; + case 2: + { + _localctx = new LogicalBinaryContext(new BooleanExpressionContext(_parentctx, _parentState)); + ((LogicalBinaryContext)_localctx).left = _prevctx; + pushNewRecursionContext(_localctx, _startState, RULE_booleanExpression); + setState(1239); + if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); + setState(1240); + ((LogicalBinaryContext)_localctx).operator = match(OR); + setState(1241); + ((LogicalBinaryContext)_localctx).right = booleanExpression(2); + } + break; + } + } + } + setState(1246); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,161,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + unrollRecursionContexts(_parentctx); + } + return _localctx; + } + + public static class PredicateContext extends ParserRuleContext { + public ParserRuleContext value; + public PredicateContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } + public PredicateContext(ParserRuleContext parent, int invokingState, ParserRuleContext value) { + super(parent, invokingState); + this.value = value; + } + @Override public int getRuleIndex() { return RULE_predicate; } + + public PredicateContext() { } + public void copyFrom(PredicateContext ctx) { + super.copyFrom(ctx); + this.value = ctx.value; + } + } + public static class ComparisonContext extends PredicateContext { + public ValueExpressionContext right; + public ComparisonOperatorContext comparisonOperator() { + return getRuleContext(ComparisonOperatorContext.class,0); + } + public ValueExpressionContext valueExpression() { + return getRuleContext(ValueExpressionContext.class,0); + } + public ComparisonContext(PredicateContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterComparison(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitComparison(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitComparison(this); + else return visitor.visitChildren(this); + } + } + public static class LikeContext extends PredicateContext { + public ValueExpressionContext pattern; + public ValueExpressionContext escape; + public TerminalNode LIKE() { return getToken(PrestoSqlParser.LIKE, 0); } + public List valueExpression() { + return getRuleContexts(ValueExpressionContext.class); + } + public ValueExpressionContext valueExpression(int i) { + return getRuleContext(ValueExpressionContext.class,i); + } + public TerminalNode NOT() { return getToken(PrestoSqlParser.NOT, 0); } + public TerminalNode ESCAPE() { return getToken(PrestoSqlParser.ESCAPE, 0); } + public LikeContext(PredicateContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterLike(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitLike(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitLike(this); + else return visitor.visitChildren(this); + } + } + public static class InSubqueryContext extends PredicateContext { + public TerminalNode IN() { return getToken(PrestoSqlParser.IN, 0); } + public QueryContext query() { + return getRuleContext(QueryContext.class,0); + } + public TerminalNode NOT() { return getToken(PrestoSqlParser.NOT, 0); } + public InSubqueryContext(PredicateContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterInSubquery(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitInSubquery(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitInSubquery(this); + else return visitor.visitChildren(this); + } + } + public static class DistinctFromContext extends PredicateContext { + public ValueExpressionContext right; + public TerminalNode IS() { return getToken(PrestoSqlParser.IS, 0); } + public TerminalNode DISTINCT() { return getToken(PrestoSqlParser.DISTINCT, 0); } + public TerminalNode FROM() { return getToken(PrestoSqlParser.FROM, 0); } + public ValueExpressionContext valueExpression() { + return getRuleContext(ValueExpressionContext.class,0); + } + public TerminalNode NOT() { return getToken(PrestoSqlParser.NOT, 0); } + public DistinctFromContext(PredicateContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterDistinctFrom(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitDistinctFrom(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitDistinctFrom(this); + else return visitor.visitChildren(this); + } + } + public static class InListContext extends PredicateContext { + public TerminalNode IN() { return getToken(PrestoSqlParser.IN, 0); } + public List expression() { + return getRuleContexts(ExpressionContext.class); + } + public ExpressionContext expression(int i) { + return getRuleContext(ExpressionContext.class,i); + } + public TerminalNode NOT() { return getToken(PrestoSqlParser.NOT, 0); } + public InListContext(PredicateContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterInList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitInList(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitInList(this); + else return visitor.visitChildren(this); + } + } + public static class NullPredicateContext extends PredicateContext { + public TerminalNode IS() { return getToken(PrestoSqlParser.IS, 0); } + public TerminalNode NULL() { return getToken(PrestoSqlParser.NULL, 0); } + public TerminalNode NOT() { return getToken(PrestoSqlParser.NOT, 0); } + public NullPredicateContext(PredicateContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterNullPredicate(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitNullPredicate(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitNullPredicate(this); + else return visitor.visitChildren(this); + } + } + public static class BetweenContext extends PredicateContext { + public ValueExpressionContext lower; + public ValueExpressionContext upper; + public TerminalNode BETWEEN() { return getToken(PrestoSqlParser.BETWEEN, 0); } + public TerminalNode AND() { return getToken(PrestoSqlParser.AND, 0); } + public List valueExpression() { + return getRuleContexts(ValueExpressionContext.class); + } + public ValueExpressionContext valueExpression(int i) { + return getRuleContext(ValueExpressionContext.class,i); + } + public TerminalNode NOT() { return getToken(PrestoSqlParser.NOT, 0); } + public BetweenContext(PredicateContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterBetween(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitBetween(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitBetween(this); + else return visitor.visitChildren(this); + } + } + public static class QuantifiedComparisonContext extends PredicateContext { + public ComparisonOperatorContext comparisonOperator() { + return getRuleContext(ComparisonOperatorContext.class,0); + } + public ComparisonQuantifierContext comparisonQuantifier() { + return getRuleContext(ComparisonQuantifierContext.class,0); + } + public QueryContext query() { + return getRuleContext(QueryContext.class,0); + } + public QuantifiedComparisonContext(PredicateContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterQuantifiedComparison(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitQuantifiedComparison(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitQuantifiedComparison(this); + else return visitor.visitChildren(this); + } + } + + public final PredicateContext predicate(ParserRuleContext value) throws RecognitionException { + PredicateContext _localctx = new PredicateContext(_ctx, getState(), value); + enterRule(_localctx, 88, RULE_predicate); + int _la; + try { + setState(1308); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,170,_ctx) ) { + case 1: + _localctx = new ComparisonContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(1247); + comparisonOperator(); + setState(1248); + ((ComparisonContext)_localctx).right = valueExpression(0); + } + break; + case 2: + _localctx = new QuantifiedComparisonContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(1250); + comparisonOperator(); + setState(1251); + comparisonQuantifier(); + setState(1252); + match(T__1); + setState(1253); + query(); + setState(1254); + match(T__2); + } + break; + case 3: + _localctx = new BetweenContext(_localctx); + enterOuterAlt(_localctx, 3); + { + setState(1257); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==NOT) { + { + setState(1256); + match(NOT); + } + } + + setState(1259); + match(BETWEEN); + setState(1260); + ((BetweenContext)_localctx).lower = valueExpression(0); + setState(1261); + match(AND); + setState(1262); + ((BetweenContext)_localctx).upper = valueExpression(0); + } + break; + case 4: + _localctx = new InListContext(_localctx); + enterOuterAlt(_localctx, 4); + { + setState(1265); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==NOT) { + { + setState(1264); + match(NOT); + } + } + + setState(1267); + match(IN); + setState(1268); + match(T__1); + setState(1269); + expression(); + setState(1274); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__3) { + { + { + setState(1270); + match(T__3); + setState(1271); + expression(); + } + } + setState(1276); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1277); + match(T__2); + } + break; + case 5: + _localctx = new InSubqueryContext(_localctx); + enterOuterAlt(_localctx, 5); + { + setState(1280); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==NOT) { + { + setState(1279); + match(NOT); + } + } + + setState(1282); + match(IN); + setState(1283); + match(T__1); + setState(1284); + query(); + setState(1285); + match(T__2); + } + break; + case 6: + _localctx = new LikeContext(_localctx); + enterOuterAlt(_localctx, 6); + { + setState(1288); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==NOT) { + { + setState(1287); + match(NOT); + } + } + + setState(1290); + match(LIKE); + setState(1291); + ((LikeContext)_localctx).pattern = valueExpression(0); + setState(1294); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,167,_ctx) ) { + case 1: + { + setState(1292); + match(ESCAPE); + setState(1293); + ((LikeContext)_localctx).escape = valueExpression(0); + } + break; + } + } + break; + case 7: + _localctx = new NullPredicateContext(_localctx); + enterOuterAlt(_localctx, 7); + { + setState(1296); + match(IS); + setState(1298); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==NOT) { + { + setState(1297); + match(NOT); + } + } + + setState(1300); + match(NULL); + } + break; + case 8: + _localctx = new DistinctFromContext(_localctx); + enterOuterAlt(_localctx, 8); + { + setState(1301); + match(IS); + setState(1303); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==NOT) { + { + setState(1302); + match(NOT); + } + } + + setState(1305); + match(DISTINCT); + setState(1306); + match(FROM); + setState(1307); + ((DistinctFromContext)_localctx).right = valueExpression(0); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ValueExpressionContext extends ParserRuleContext { + public ValueExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_valueExpression; } + + public ValueExpressionContext() { } + public void copyFrom(ValueExpressionContext ctx) { + super.copyFrom(ctx); + } + } + public static class ValueExpressionDefaultContext extends ValueExpressionContext { + public PrimaryExpressionContext primaryExpression() { + return getRuleContext(PrimaryExpressionContext.class,0); + } + public ValueExpressionDefaultContext(ValueExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterValueExpressionDefault(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitValueExpressionDefault(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitValueExpressionDefault(this); + else return visitor.visitChildren(this); + } + } + public static class ConcatenationContext extends ValueExpressionContext { + public ValueExpressionContext left; + public ValueExpressionContext right; + public TerminalNode CONCAT() { return getToken(PrestoSqlParser.CONCAT, 0); } + public List valueExpression() { + return getRuleContexts(ValueExpressionContext.class); + } + public ValueExpressionContext valueExpression(int i) { + return getRuleContext(ValueExpressionContext.class,i); + } + public ConcatenationContext(ValueExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterConcatenation(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitConcatenation(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitConcatenation(this); + else return visitor.visitChildren(this); + } + } + public static class ArithmeticBinaryContext extends ValueExpressionContext { + public ValueExpressionContext left; + public Token operator; + public ValueExpressionContext right; + public List valueExpression() { + return getRuleContexts(ValueExpressionContext.class); + } + public ValueExpressionContext valueExpression(int i) { + return getRuleContext(ValueExpressionContext.class,i); + } + public TerminalNode ASTERISK() { return getToken(PrestoSqlParser.ASTERISK, 0); } + public TerminalNode SLASH() { return getToken(PrestoSqlParser.SLASH, 0); } + public TerminalNode PERCENT() { return getToken(PrestoSqlParser.PERCENT, 0); } + public TerminalNode PLUS() { return getToken(PrestoSqlParser.PLUS, 0); } + public TerminalNode MINUS() { return getToken(PrestoSqlParser.MINUS, 0); } + public ArithmeticBinaryContext(ValueExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterArithmeticBinary(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitArithmeticBinary(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitArithmeticBinary(this); + else return visitor.visitChildren(this); + } + } + public static class ArithmeticUnaryContext extends ValueExpressionContext { + public Token operator; + public ValueExpressionContext valueExpression() { + return getRuleContext(ValueExpressionContext.class,0); + } + public TerminalNode MINUS() { return getToken(PrestoSqlParser.MINUS, 0); } + public TerminalNode PLUS() { return getToken(PrestoSqlParser.PLUS, 0); } + public ArithmeticUnaryContext(ValueExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterArithmeticUnary(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitArithmeticUnary(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitArithmeticUnary(this); + else return visitor.visitChildren(this); + } + } + public static class AtTimeZoneContext extends ValueExpressionContext { + public ValueExpressionContext valueExpression() { + return getRuleContext(ValueExpressionContext.class,0); + } + public TerminalNode AT() { return getToken(PrestoSqlParser.AT, 0); } + public TimeZoneSpecifierContext timeZoneSpecifier() { + return getRuleContext(TimeZoneSpecifierContext.class,0); + } + public AtTimeZoneContext(ValueExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterAtTimeZone(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitAtTimeZone(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitAtTimeZone(this); + else return visitor.visitChildren(this); + } + } + + public final ValueExpressionContext valueExpression() throws RecognitionException { + return valueExpression(0); + } + + private ValueExpressionContext valueExpression(int _p) throws RecognitionException { + ParserRuleContext _parentctx = _ctx; + int _parentState = getState(); + ValueExpressionContext _localctx = new ValueExpressionContext(_ctx, _parentState); + ValueExpressionContext _prevctx = _localctx; + int _startState = 90; + enterRecursionRule(_localctx, 90, RULE_valueExpression, _p); + int _la; + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(1314); + _errHandler.sync(this); + switch (_input.LA(1)) { + case T__1: + case T__4: + case ADD: + case ADMIN: + case ALL: + case ANALYZE: + case ANY: + case ARRAY: + case ASC: + case AT: + case BERNOULLI: + case CALL: + case CALLED: + case CASCADE: + case CASE: + case CAST: + case CATALOGS: + case COLUMN: + case COLUMNS: + case COMMENT: + case COMMIT: + case COMMITTED: + case CURRENT: + case CURRENT_DATE: + case CURRENT_ROLE: + case CURRENT_TIME: + case CURRENT_TIMESTAMP: + case CURRENT_USER: + case DATA: + case DATE: + case DAY: + case DEFINER: + case DESC: + case DETERMINISTIC: + case DISTRIBUTED: + case EXCLUDING: + case EXISTS: + case EXPLAIN: + case EXTRACT: + case EXTERNAL: + case FALSE: + case FILTER: + case FIRST: + case FOLLOWING: + case FORMAT: + case FUNCTION: + case FUNCTIONS: + case GRANT: + case GRANTED: + case GRANTS: + case GRAPHVIZ: + case GROUPING: + case HOUR: + case IF: + case IGNORE: + case INCLUDING: + case INPUT: + case INTERVAL: + case INVOKER: + case IO: + case ISOLATION: + case JSON: + case LANGUAGE: + case LAST: + case LATERAL: + case LEVEL: + case LIMIT: + case LOCALTIME: + case LOCALTIMESTAMP: + case LOGICAL: + case MAP: + case MATERIALIZED: + case MINUTE: + case MONTH: + case NAME: + case NFC: + case NFD: + case NFKC: + case NFKD: + case NO: + case NONE: + case NORMALIZE: + case NULL: + case NULLIF: + case NULLS: + case OFFSET: + case ONLY: + case OPTION: + case ORDINALITY: + case OUTPUT: + case OVER: + case PARTITION: + case PARTITIONS: + case POSITION: + case PRECEDING: + case PRIVILEGES: + case PROPERTIES: + case RANGE: + case READ: + case REFRESH: + case RENAME: + case REPEATABLE: + case REPLACE: + case RESET: + case RESPECT: + case RESTRICT: + case RETURN: + case RETURNS: + case REVOKE: + case ROLE: + case ROLES: + case ROLLBACK: + case ROW: + case ROWS: + case SCHEMA: + case SCHEMAS: + case SECOND: + case SECURITY: + case SERIALIZABLE: + case SESSION: + case SET: + case SETS: + case SHOW: + case SOME: + case SQL: + case START: + case STATS: + case SUBSTRING: + case SYSTEM: + case TABLES: + case TABLESAMPLE: + case TEMPORARY: + case TEXT: + case TIME: + case TIMESTAMP: + case TO: + case TRANSACTION: + case TRUE: + case TRY_CAST: + case TYPE: + case UNBOUNDED: + case UNCOMMITTED: + case USE: + case USER: + case VALIDATE: + case VERBOSE: + case VIEW: + case WORK: + case WRITE: + case YEAR: + case ZONE: + case STRING: + case UNICODE_STRING: + case BINARY_LITERAL: + case INTEGER_VALUE: + case DECIMAL_VALUE: + case DOUBLE_VALUE: + case IDENTIFIER: + case DIGIT_IDENTIFIER: + case QUOTED_IDENTIFIER: + case BACKQUOTED_IDENTIFIER: + case DOUBLE_PRECISION: + { + _localctx = new ValueExpressionDefaultContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + + setState(1311); + primaryExpression(0); + } + break; + case PLUS: + case MINUS: + { + _localctx = new ArithmeticUnaryContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(1312); + ((ArithmeticUnaryContext)_localctx).operator = _input.LT(1); + _la = _input.LA(1); + if ( !(_la==PLUS || _la==MINUS) ) { + ((ArithmeticUnaryContext)_localctx).operator = (Token)_errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(1313); + valueExpression(4); + } + break; + default: + throw new NoViableAltException(this); + } + _ctx.stop = _input.LT(-1); + setState(1330); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,173,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + if ( _parseListeners!=null ) triggerExitRuleEvent(); + _prevctx = _localctx; + { + setState(1328); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,172,_ctx) ) { + case 1: + { + _localctx = new ArithmeticBinaryContext(new ValueExpressionContext(_parentctx, _parentState)); + ((ArithmeticBinaryContext)_localctx).left = _prevctx; + pushNewRecursionContext(_localctx, _startState, RULE_valueExpression); + setState(1316); + if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)"); + setState(1317); + ((ArithmeticBinaryContext)_localctx).operator = _input.LT(1); + _la = _input.LA(1); + if ( !(((((_la - 221)) & ~0x3f) == 0 && ((1L << (_la - 221)) & ((1L << (ASTERISK - 221)) | (1L << (SLASH - 221)) | (1L << (PERCENT - 221)))) != 0)) ) { + ((ArithmeticBinaryContext)_localctx).operator = (Token)_errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(1318); + ((ArithmeticBinaryContext)_localctx).right = valueExpression(4); + } + break; + case 2: + { + _localctx = new ArithmeticBinaryContext(new ValueExpressionContext(_parentctx, _parentState)); + ((ArithmeticBinaryContext)_localctx).left = _prevctx; + pushNewRecursionContext(_localctx, _startState, RULE_valueExpression); + setState(1319); + if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)"); + setState(1320); + ((ArithmeticBinaryContext)_localctx).operator = _input.LT(1); + _la = _input.LA(1); + if ( !(_la==PLUS || _la==MINUS) ) { + ((ArithmeticBinaryContext)_localctx).operator = (Token)_errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(1321); + ((ArithmeticBinaryContext)_localctx).right = valueExpression(3); + } + break; + case 3: + { + _localctx = new ConcatenationContext(new ValueExpressionContext(_parentctx, _parentState)); + ((ConcatenationContext)_localctx).left = _prevctx; + pushNewRecursionContext(_localctx, _startState, RULE_valueExpression); + setState(1322); + if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); + setState(1323); + match(CONCAT); + setState(1324); + ((ConcatenationContext)_localctx).right = valueExpression(2); + } + break; + case 4: + { + _localctx = new AtTimeZoneContext(new ValueExpressionContext(_parentctx, _parentState)); + pushNewRecursionContext(_localctx, _startState, RULE_valueExpression); + setState(1325); + if (!(precpred(_ctx, 5))) throw new FailedPredicateException(this, "precpred(_ctx, 5)"); + setState(1326); + match(AT); + setState(1327); + timeZoneSpecifier(); + } + break; + } + } + } + setState(1332); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,173,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + unrollRecursionContexts(_parentctx); + } + return _localctx; + } + + 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); + } + } + public static class DereferenceContext extends PrimaryExpressionContext { + public PrimaryExpressionContext base; + public IdentifierContext fieldName; + public PrimaryExpressionContext primaryExpression() { + return getRuleContext(PrimaryExpressionContext.class,0); + } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public DereferenceContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterDereference(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitDereference(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitDereference(this); + else return visitor.visitChildren(this); + } + } + public static class TypeConstructorContext extends PrimaryExpressionContext { + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public StringContext string() { + return getRuleContext(StringContext.class,0); + } + public TerminalNode DOUBLE_PRECISION() { return getToken(PrestoSqlParser.DOUBLE_PRECISION, 0); } + public TypeConstructorContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterTypeConstructor(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitTypeConstructor(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitTypeConstructor(this); + else return visitor.visitChildren(this); + } + } + public static class SpecialDateTimeFunctionContext extends PrimaryExpressionContext { + public Token name; + public Token precision; + public TerminalNode CURRENT_DATE() { return getToken(PrestoSqlParser.CURRENT_DATE, 0); } + public TerminalNode CURRENT_TIME() { return getToken(PrestoSqlParser.CURRENT_TIME, 0); } + public TerminalNode INTEGER_VALUE() { return getToken(PrestoSqlParser.INTEGER_VALUE, 0); } + public TerminalNode CURRENT_TIMESTAMP() { return getToken(PrestoSqlParser.CURRENT_TIMESTAMP, 0); } + public TerminalNode LOCALTIME() { return getToken(PrestoSqlParser.LOCALTIME, 0); } + public TerminalNode LOCALTIMESTAMP() { return getToken(PrestoSqlParser.LOCALTIMESTAMP, 0); } + public SpecialDateTimeFunctionContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterSpecialDateTimeFunction(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitSpecialDateTimeFunction(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitSpecialDateTimeFunction(this); + else return visitor.visitChildren(this); + } + } + public static class SubstringContext extends PrimaryExpressionContext { + public TerminalNode SUBSTRING() { return getToken(PrestoSqlParser.SUBSTRING, 0); } + public List valueExpression() { + return getRuleContexts(ValueExpressionContext.class); + } + public ValueExpressionContext valueExpression(int i) { + return getRuleContext(ValueExpressionContext.class,i); + } + public TerminalNode FROM() { return getToken(PrestoSqlParser.FROM, 0); } + public TerminalNode FOR() { return getToken(PrestoSqlParser.FOR, 0); } + public SubstringContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterSubstring(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitSubstring(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitSubstring(this); + else return visitor.visitChildren(this); + } + } + public static class CastContext extends PrimaryExpressionContext { + public TerminalNode CAST() { return getToken(PrestoSqlParser.CAST, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public TerminalNode AS() { return getToken(PrestoSqlParser.AS, 0); } + public TypeContext type() { + return getRuleContext(TypeContext.class,0); + } + public TerminalNode TRY_CAST() { return getToken(PrestoSqlParser.TRY_CAST, 0); } + public CastContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterCast(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitCast(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitCast(this); + else return visitor.visitChildren(this); + } + } + public static class LambdaContext extends PrimaryExpressionContext { + public List identifier() { + return getRuleContexts(IdentifierContext.class); + } + public IdentifierContext identifier(int i) { + return getRuleContext(IdentifierContext.class,i); + } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public LambdaContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterLambda(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitLambda(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitLambda(this); + else return visitor.visitChildren(this); + } + } + public static class ParenthesizedExpressionContext extends PrimaryExpressionContext { + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public ParenthesizedExpressionContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterParenthesizedExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitParenthesizedExpression(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitParenthesizedExpression(this); + else return visitor.visitChildren(this); + } + } + public static class ParameterContext extends PrimaryExpressionContext { + public ParameterContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterParameter(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitParameter(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitParameter(this); + else return visitor.visitChildren(this); + } + } + public static class NormalizeContext extends PrimaryExpressionContext { + public TerminalNode NORMALIZE() { return getToken(PrestoSqlParser.NORMALIZE, 0); } + public ValueExpressionContext valueExpression() { + return getRuleContext(ValueExpressionContext.class,0); + } + public NormalFormContext normalForm() { + return getRuleContext(NormalFormContext.class,0); + } + public NormalizeContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterNormalize(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitNormalize(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitNormalize(this); + else return visitor.visitChildren(this); + } + } + public static class IntervalLiteralContext extends PrimaryExpressionContext { + public IntervalContext interval() { + return getRuleContext(IntervalContext.class,0); + } + public IntervalLiteralContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterIntervalLiteral(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitIntervalLiteral(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitIntervalLiteral(this); + else return visitor.visitChildren(this); + } + } + public static class NumericLiteralContext extends PrimaryExpressionContext { + public NumberContext number() { + return getRuleContext(NumberContext.class,0); + } + public NumericLiteralContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterNumericLiteral(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitNumericLiteral(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitNumericLiteral(this); + else return visitor.visitChildren(this); + } + } + public static class BooleanLiteralContext extends PrimaryExpressionContext { + public BooleanValueContext booleanValue() { + return getRuleContext(BooleanValueContext.class,0); + } + public BooleanLiteralContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterBooleanLiteral(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitBooleanLiteral(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitBooleanLiteral(this); + else return visitor.visitChildren(this); + } + } + public static class SimpleCaseContext extends PrimaryExpressionContext { + public ExpressionContext elseExpression; + public TerminalNode CASE() { return getToken(PrestoSqlParser.CASE, 0); } + public ValueExpressionContext valueExpression() { + return getRuleContext(ValueExpressionContext.class,0); + } + public TerminalNode END() { return getToken(PrestoSqlParser.END, 0); } + public List whenClause() { + return getRuleContexts(WhenClauseContext.class); + } + public WhenClauseContext whenClause(int i) { + return getRuleContext(WhenClauseContext.class,i); + } + public TerminalNode ELSE() { return getToken(PrestoSqlParser.ELSE, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public SimpleCaseContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterSimpleCase(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitSimpleCase(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitSimpleCase(this); + else return visitor.visitChildren(this); + } + } + public static class ColumnReferenceContext extends PrimaryExpressionContext { + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public ColumnReferenceContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterColumnReference(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitColumnReference(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitColumnReference(this); + else return visitor.visitChildren(this); + } + } + public static class NullLiteralContext extends PrimaryExpressionContext { + public TerminalNode NULL() { return getToken(PrestoSqlParser.NULL, 0); } + public NullLiteralContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterNullLiteral(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitNullLiteral(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitNullLiteral(this); + else return visitor.visitChildren(this); + } + } + public static class RowConstructorContext extends PrimaryExpressionContext { + public List expression() { + return getRuleContexts(ExpressionContext.class); + } + public ExpressionContext expression(int i) { + return getRuleContext(ExpressionContext.class,i); + } + public TerminalNode ROW() { return getToken(PrestoSqlParser.ROW, 0); } + public RowConstructorContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterRowConstructor(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitRowConstructor(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitRowConstructor(this); + else return visitor.visitChildren(this); + } + } + public static class SubscriptContext extends PrimaryExpressionContext { + public PrimaryExpressionContext value; + public ValueExpressionContext index; + public PrimaryExpressionContext primaryExpression() { + return getRuleContext(PrimaryExpressionContext.class,0); + } + public ValueExpressionContext valueExpression() { + return getRuleContext(ValueExpressionContext.class,0); + } + public SubscriptContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterSubscript(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitSubscript(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitSubscript(this); + else return visitor.visitChildren(this); + } + } + public static class SubqueryExpressionContext extends PrimaryExpressionContext { + public QueryContext query() { + return getRuleContext(QueryContext.class,0); + } + public SubqueryExpressionContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterSubqueryExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitSubqueryExpression(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitSubqueryExpression(this); + else return visitor.visitChildren(this); + } + } + public static class BinaryLiteralContext extends PrimaryExpressionContext { + public TerminalNode BINARY_LITERAL() { return getToken(PrestoSqlParser.BINARY_LITERAL, 0); } + public BinaryLiteralContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterBinaryLiteral(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitBinaryLiteral(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitBinaryLiteral(this); + else return visitor.visitChildren(this); + } + } + public static class CurrentUserContext extends PrimaryExpressionContext { + public Token name; + public TerminalNode CURRENT_USER() { return getToken(PrestoSqlParser.CURRENT_USER, 0); } + public CurrentUserContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterCurrentUser(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitCurrentUser(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitCurrentUser(this); + else return visitor.visitChildren(this); + } + } + public static class ExtractContext extends PrimaryExpressionContext { + public TerminalNode EXTRACT() { return getToken(PrestoSqlParser.EXTRACT, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode FROM() { return getToken(PrestoSqlParser.FROM, 0); } + public ValueExpressionContext valueExpression() { + return getRuleContext(ValueExpressionContext.class,0); + } + public ExtractContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterExtract(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitExtract(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitExtract(this); + else return visitor.visitChildren(this); + } + } + public static class StringLiteralContext extends PrimaryExpressionContext { + public StringContext string() { + return getRuleContext(StringContext.class,0); + } + public StringLiteralContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterStringLiteral(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitStringLiteral(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitStringLiteral(this); + else return visitor.visitChildren(this); + } + } + public static class ArrayConstructorContext extends PrimaryExpressionContext { + public TerminalNode ARRAY() { return getToken(PrestoSqlParser.ARRAY, 0); } + public List expression() { + return getRuleContexts(ExpressionContext.class); + } + public ExpressionContext expression(int i) { + return getRuleContext(ExpressionContext.class,i); + } + public ArrayConstructorContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterArrayConstructor(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitArrayConstructor(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitArrayConstructor(this); + else return visitor.visitChildren(this); + } + } + public static class FunctionCallContext extends PrimaryExpressionContext { + public QualifiedNameContext qualifiedName() { + return getRuleContext(QualifiedNameContext.class,0); + } + public TerminalNode ASTERISK() { return getToken(PrestoSqlParser.ASTERISK, 0); } + public FilterContext filter() { + return getRuleContext(FilterContext.class,0); + } + public OverContext over() { + return getRuleContext(OverContext.class,0); + } + public List expression() { + return getRuleContexts(ExpressionContext.class); + } + public ExpressionContext expression(int i) { + return getRuleContext(ExpressionContext.class,i); + } + public TerminalNode ORDER() { return getToken(PrestoSqlParser.ORDER, 0); } + public TerminalNode BY() { return getToken(PrestoSqlParser.BY, 0); } + public List sortItem() { + return getRuleContexts(SortItemContext.class); + } + public SortItemContext sortItem(int i) { + return getRuleContext(SortItemContext.class,i); + } + public SetQuantifierContext setQuantifier() { + return getRuleContext(SetQuantifierContext.class,0); + } + public NullTreatmentContext nullTreatment() { + return getRuleContext(NullTreatmentContext.class,0); + } + public FunctionCallContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterFunctionCall(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitFunctionCall(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitFunctionCall(this); + else return visitor.visitChildren(this); + } + } + public static class ExistsContext extends PrimaryExpressionContext { + public TerminalNode EXISTS() { return getToken(PrestoSqlParser.EXISTS, 0); } + public QueryContext query() { + return getRuleContext(QueryContext.class,0); + } + public ExistsContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterExists(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitExists(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitExists(this); + else return visitor.visitChildren(this); + } + } + public static class PositionContext extends PrimaryExpressionContext { + public TerminalNode POSITION() { return getToken(PrestoSqlParser.POSITION, 0); } + public List valueExpression() { + return getRuleContexts(ValueExpressionContext.class); + } + public ValueExpressionContext valueExpression(int i) { + return getRuleContext(ValueExpressionContext.class,i); + } + public TerminalNode IN() { return getToken(PrestoSqlParser.IN, 0); } + public PositionContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterPosition(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitPosition(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitPosition(this); + else return visitor.visitChildren(this); + } + } + public static class SearchedCaseContext extends PrimaryExpressionContext { + public ExpressionContext elseExpression; + public TerminalNode CASE() { return getToken(PrestoSqlParser.CASE, 0); } + public TerminalNode END() { return getToken(PrestoSqlParser.END, 0); } + public List whenClause() { + return getRuleContexts(WhenClauseContext.class); + } + public WhenClauseContext whenClause(int i) { + return getRuleContext(WhenClauseContext.class,i); + } + public TerminalNode ELSE() { return getToken(PrestoSqlParser.ELSE, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public SearchedCaseContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterSearchedCase(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitSearchedCase(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitSearchedCase(this); + else return visitor.visitChildren(this); + } + } + public static class GroupingOperationContext extends PrimaryExpressionContext { + public TerminalNode GROUPING() { return getToken(PrestoSqlParser.GROUPING, 0); } + public List qualifiedName() { + return getRuleContexts(QualifiedNameContext.class); + } + public QualifiedNameContext qualifiedName(int i) { + return getRuleContext(QualifiedNameContext.class,i); + } + public GroupingOperationContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterGroupingOperation(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitGroupingOperation(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitGroupingOperation(this); + else return visitor.visitChildren(this); + } + } + + public final PrimaryExpressionContext primaryExpression() throws RecognitionException { + return primaryExpression(0); + } + + private PrimaryExpressionContext primaryExpression(int _p) throws RecognitionException { + ParserRuleContext _parentctx = _ctx; + int _parentState = getState(); + PrimaryExpressionContext _localctx = new PrimaryExpressionContext(_ctx, _parentState); + PrimaryExpressionContext _prevctx = _localctx; + int _startState = 92; + enterRecursionRule(_localctx, 92, RULE_primaryExpression, _p); + int _la; + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(1572); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,202,_ctx) ) { + case 1: + { + _localctx = new NullLiteralContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + + setState(1334); + match(NULL); + } + break; + case 2: + { + _localctx = new IntervalLiteralContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(1335); + interval(); + } + break; + case 3: + { + _localctx = new TypeConstructorContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(1336); + identifier(); + setState(1337); + string(); + } + break; + case 4: + { + _localctx = new TypeConstructorContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(1339); + match(DOUBLE_PRECISION); + setState(1340); + string(); + } + break; + case 5: + { + _localctx = new NumericLiteralContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(1341); + number(); + } + break; + case 6: + { + _localctx = new BooleanLiteralContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(1342); + booleanValue(); + } + break; + case 7: + { + _localctx = new StringLiteralContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(1343); + string(); + } + break; + case 8: + { + _localctx = new BinaryLiteralContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(1344); + match(BINARY_LITERAL); + } + break; + case 9: + { + _localctx = new ParameterContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(1345); + match(T__4); + } + break; + case 10: + { + _localctx = new PositionContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(1346); + match(POSITION); + setState(1347); + match(T__1); + setState(1348); + valueExpression(0); + setState(1349); + match(IN); + setState(1350); + valueExpression(0); + setState(1351); + match(T__2); + } + break; + case 11: + { + _localctx = new RowConstructorContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(1353); + match(T__1); + setState(1354); + expression(); + setState(1357); + _errHandler.sync(this); + _la = _input.LA(1); + do { + { + { + setState(1355); + match(T__3); + setState(1356); + expression(); + } + } + setState(1359); + _errHandler.sync(this); + _la = _input.LA(1); + } while ( _la==T__3 ); + setState(1361); + match(T__2); + } + break; + case 12: + { + _localctx = new RowConstructorContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(1363); + match(ROW); + setState(1364); + match(T__1); + setState(1365); + expression(); + setState(1370); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__3) { + { + { + setState(1366); + match(T__3); + setState(1367); + expression(); + } + } + setState(1372); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1373); + match(T__2); + } + break; + case 13: + { + _localctx = new FunctionCallContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(1375); + qualifiedName(); + setState(1376); + match(T__1); + setState(1377); + match(ASTERISK); + setState(1378); + match(T__2); + setState(1380); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,176,_ctx) ) { + case 1: + { + setState(1379); + filter(); + } + break; + } + setState(1383); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,177,_ctx) ) { + case 1: + { + setState(1382); + over(); + } + break; + } + } + break; + case 14: + { + _localctx = new FunctionCallContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(1385); + qualifiedName(); + setState(1386); + match(T__1); + setState(1398); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__1) | (1L << T__4) | (1L << ADD) | (1L << ADMIN) | (1L << ALL) | (1L << ANALYZE) | (1L << ANY) | (1L << ARRAY) | (1L << ASC) | (1L << AT) | (1L << BERNOULLI) | (1L << CALL) | (1L << CALLED) | (1L << CASCADE) | (1L << CASE) | (1L << CAST) | (1L << CATALOGS) | (1L << COLUMN) | (1L << COLUMNS) | (1L << COMMENT) | (1L << COMMIT) | (1L << COMMITTED) | (1L << CURRENT) | (1L << CURRENT_DATE) | (1L << CURRENT_ROLE) | (1L << CURRENT_TIME) | (1L << CURRENT_TIMESTAMP) | (1L << CURRENT_USER) | (1L << DATA) | (1L << DATE) | (1L << DAY) | (1L << DEFINER) | (1L << DESC) | (1L << DETERMINISTIC) | (1L << DISTINCT) | (1L << DISTRIBUTED) | (1L << EXCLUDING) | (1L << EXISTS))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (EXPLAIN - 64)) | (1L << (EXTRACT - 64)) | (1L << (EXTERNAL - 64)) | (1L << (FALSE - 64)) | (1L << (FILTER - 64)) | (1L << (FIRST - 64)) | (1L << (FOLLOWING - 64)) | (1L << (FORMAT - 64)) | (1L << (FUNCTION - 64)) | (1L << (FUNCTIONS - 64)) | (1L << (GRANT - 64)) | (1L << (GRANTED - 64)) | (1L << (GRANTS - 64)) | (1L << (GRAPHVIZ - 64)) | (1L << (GROUPING - 64)) | (1L << (HOUR - 64)) | (1L << (IF - 64)) | (1L << (IGNORE - 64)) | (1L << (INCLUDING - 64)) | (1L << (INPUT - 64)) | (1L << (INTERVAL - 64)) | (1L << (INVOKER - 64)) | (1L << (IO - 64)) | (1L << (ISOLATION - 64)) | (1L << (JSON - 64)) | (1L << (LANGUAGE - 64)) | (1L << (LAST - 64)) | (1L << (LATERAL - 64)) | (1L << (LEVEL - 64)) | (1L << (LIMIT - 64)) | (1L << (LOCALTIME - 64)) | (1L << (LOCALTIMESTAMP - 64)) | (1L << (LOGICAL - 64)) | (1L << (MAP - 64)) | (1L << (MATERIALIZED - 64)) | (1L << (MINUTE - 64)) | (1L << (MONTH - 64)) | (1L << (NAME - 64)) | (1L << (NFC - 64)) | (1L << (NFD - 64)) | (1L << (NFKC - 64)) | (1L << (NFKD - 64)) | (1L << (NO - 64)) | (1L << (NONE - 64)) | (1L << (NORMALIZE - 64)) | (1L << (NOT - 64)) | (1L << (NULL - 64)) | (1L << (NULLIF - 64)) | (1L << (NULLS - 64)))) != 0) || ((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & ((1L << (OFFSET - 128)) | (1L << (ONLY - 128)) | (1L << (OPTION - 128)) | (1L << (ORDINALITY - 128)) | (1L << (OUTPUT - 128)) | (1L << (OVER - 128)) | (1L << (PARTITION - 128)) | (1L << (PARTITIONS - 128)) | (1L << (POSITION - 128)) | (1L << (PRECEDING - 128)) | (1L << (PRIVILEGES - 128)) | (1L << (PROPERTIES - 128)) | (1L << (RANGE - 128)) | (1L << (READ - 128)) | (1L << (REFRESH - 128)) | (1L << (RENAME - 128)) | (1L << (REPEATABLE - 128)) | (1L << (REPLACE - 128)) | (1L << (RESET - 128)) | (1L << (RESPECT - 128)) | (1L << (RESTRICT - 128)) | (1L << (RETURN - 128)) | (1L << (RETURNS - 128)) | (1L << (REVOKE - 128)) | (1L << (ROLE - 128)) | (1L << (ROLES - 128)) | (1L << (ROLLBACK - 128)) | (1L << (ROW - 128)) | (1L << (ROWS - 128)) | (1L << (SCHEMA - 128)) | (1L << (SCHEMAS - 128)) | (1L << (SECOND - 128)) | (1L << (SECURITY - 128)) | (1L << (SERIALIZABLE - 128)) | (1L << (SESSION - 128)) | (1L << (SET - 128)) | (1L << (SETS - 128)) | (1L << (SHOW - 128)) | (1L << (SOME - 128)) | (1L << (SQL - 128)) | (1L << (START - 128)) | (1L << (STATS - 128)) | (1L << (SUBSTRING - 128)) | (1L << (SYSTEM - 128)) | (1L << (TABLES - 128)) | (1L << (TABLESAMPLE - 128)) | (1L << (TEMPORARY - 128)) | (1L << (TEXT - 128)) | (1L << (TIME - 128)) | (1L << (TIMESTAMP - 128)) | (1L << (TO - 128)) | (1L << (TRANSACTION - 128)) | (1L << (TRUE - 128)))) != 0) || ((((_la - 192)) & ~0x3f) == 0 && ((1L << (_la - 192)) & ((1L << (TRY_CAST - 192)) | (1L << (TYPE - 192)) | (1L << (UNBOUNDED - 192)) | (1L << (UNCOMMITTED - 192)) | (1L << (USE - 192)) | (1L << (USER - 192)) | (1L << (VALIDATE - 192)) | (1L << (VERBOSE - 192)) | (1L << (VIEW - 192)) | (1L << (WORK - 192)) | (1L << (WRITE - 192)) | (1L << (YEAR - 192)) | (1L << (ZONE - 192)) | (1L << (PLUS - 192)) | (1L << (MINUS - 192)) | (1L << (STRING - 192)) | (1L << (UNICODE_STRING - 192)) | (1L << (BINARY_LITERAL - 192)) | (1L << (INTEGER_VALUE - 192)) | (1L << (DECIMAL_VALUE - 192)) | (1L << (DOUBLE_VALUE - 192)) | (1L << (IDENTIFIER - 192)) | (1L << (DIGIT_IDENTIFIER - 192)) | (1L << (QUOTED_IDENTIFIER - 192)) | (1L << (BACKQUOTED_IDENTIFIER - 192)) | (1L << (DOUBLE_PRECISION - 192)))) != 0)) { + { + setState(1388); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,178,_ctx) ) { + case 1: + { + setState(1387); + setQuantifier(); + } + break; + } + setState(1390); + expression(); + setState(1395); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__3) { + { + { + setState(1391); + match(T__3); + setState(1392); + expression(); + } + } + setState(1397); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + + setState(1410); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ORDER) { + { + setState(1400); + match(ORDER); + setState(1401); + match(BY); + setState(1402); + sortItem(); + setState(1407); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__3) { + { + { + setState(1403); + match(T__3); + setState(1404); + sortItem(); + } + } + setState(1409); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + + setState(1412); + match(T__2); + setState(1414); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,183,_ctx) ) { + case 1: + { + setState(1413); + filter(); + } + break; + } + setState(1420); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,185,_ctx) ) { + case 1: + { + setState(1417); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==IGNORE || _la==RESPECT) { + { + setState(1416); + nullTreatment(); + } + } + + setState(1419); + over(); + } + break; + } + } + break; + case 15: + { + _localctx = new LambdaContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(1422); + identifier(); + setState(1423); + match(T__5); + setState(1424); + expression(); + } + break; + case 16: + { + _localctx = new LambdaContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(1426); + match(T__1); + setState(1435); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ADD) | (1L << ADMIN) | (1L << ALL) | (1L << ANALYZE) | (1L << ANY) | (1L << ARRAY) | (1L << ASC) | (1L << AT) | (1L << BERNOULLI) | (1L << CALL) | (1L << CALLED) | (1L << CASCADE) | (1L << CATALOGS) | (1L << COLUMN) | (1L << COLUMNS) | (1L << COMMENT) | (1L << COMMIT) | (1L << COMMITTED) | (1L << CURRENT) | (1L << CURRENT_ROLE) | (1L << DATA) | (1L << DATE) | (1L << DAY) | (1L << DEFINER) | (1L << DESC) | (1L << DETERMINISTIC) | (1L << DISTRIBUTED) | (1L << EXCLUDING))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (EXPLAIN - 64)) | (1L << (EXTERNAL - 64)) | (1L << (FILTER - 64)) | (1L << (FIRST - 64)) | (1L << (FOLLOWING - 64)) | (1L << (FORMAT - 64)) | (1L << (FUNCTION - 64)) | (1L << (FUNCTIONS - 64)) | (1L << (GRANT - 64)) | (1L << (GRANTED - 64)) | (1L << (GRANTS - 64)) | (1L << (GRAPHVIZ - 64)) | (1L << (HOUR - 64)) | (1L << (IF - 64)) | (1L << (IGNORE - 64)) | (1L << (INCLUDING - 64)) | (1L << (INPUT - 64)) | (1L << (INTERVAL - 64)) | (1L << (INVOKER - 64)) | (1L << (IO - 64)) | (1L << (ISOLATION - 64)) | (1L << (JSON - 64)) | (1L << (LANGUAGE - 64)) | (1L << (LAST - 64)) | (1L << (LATERAL - 64)) | (1L << (LEVEL - 64)) | (1L << (LIMIT - 64)) | (1L << (LOGICAL - 64)) | (1L << (MAP - 64)) | (1L << (MATERIALIZED - 64)) | (1L << (MINUTE - 64)) | (1L << (MONTH - 64)) | (1L << (NAME - 64)) | (1L << (NFC - 64)) | (1L << (NFD - 64)) | (1L << (NFKC - 64)) | (1L << (NFKD - 64)) | (1L << (NO - 64)) | (1L << (NONE - 64)) | (1L << (NULLIF - 64)) | (1L << (NULLS - 64)))) != 0) || ((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & ((1L << (OFFSET - 128)) | (1L << (ONLY - 128)) | (1L << (OPTION - 128)) | (1L << (ORDINALITY - 128)) | (1L << (OUTPUT - 128)) | (1L << (OVER - 128)) | (1L << (PARTITION - 128)) | (1L << (PARTITIONS - 128)) | (1L << (POSITION - 128)) | (1L << (PRECEDING - 128)) | (1L << (PRIVILEGES - 128)) | (1L << (PROPERTIES - 128)) | (1L << (RANGE - 128)) | (1L << (READ - 128)) | (1L << (REFRESH - 128)) | (1L << (RENAME - 128)) | (1L << (REPEATABLE - 128)) | (1L << (REPLACE - 128)) | (1L << (RESET - 128)) | (1L << (RESPECT - 128)) | (1L << (RESTRICT - 128)) | (1L << (RETURN - 128)) | (1L << (RETURNS - 128)) | (1L << (REVOKE - 128)) | (1L << (ROLE - 128)) | (1L << (ROLES - 128)) | (1L << (ROLLBACK - 128)) | (1L << (ROW - 128)) | (1L << (ROWS - 128)) | (1L << (SCHEMA - 128)) | (1L << (SCHEMAS - 128)) | (1L << (SECOND - 128)) | (1L << (SECURITY - 128)) | (1L << (SERIALIZABLE - 128)) | (1L << (SESSION - 128)) | (1L << (SET - 128)) | (1L << (SETS - 128)) | (1L << (SHOW - 128)) | (1L << (SOME - 128)) | (1L << (SQL - 128)) | (1L << (START - 128)) | (1L << (STATS - 128)) | (1L << (SUBSTRING - 128)) | (1L << (SYSTEM - 128)) | (1L << (TABLES - 128)) | (1L << (TABLESAMPLE - 128)) | (1L << (TEMPORARY - 128)) | (1L << (TEXT - 128)) | (1L << (TIME - 128)) | (1L << (TIMESTAMP - 128)) | (1L << (TO - 128)) | (1L << (TRANSACTION - 128)))) != 0) || ((((_la - 192)) & ~0x3f) == 0 && ((1L << (_la - 192)) & ((1L << (TRY_CAST - 192)) | (1L << (TYPE - 192)) | (1L << (UNBOUNDED - 192)) | (1L << (UNCOMMITTED - 192)) | (1L << (USE - 192)) | (1L << (USER - 192)) | (1L << (VALIDATE - 192)) | (1L << (VERBOSE - 192)) | (1L << (VIEW - 192)) | (1L << (WORK - 192)) | (1L << (WRITE - 192)) | (1L << (YEAR - 192)) | (1L << (ZONE - 192)) | (1L << (IDENTIFIER - 192)) | (1L << (DIGIT_IDENTIFIER - 192)) | (1L << (QUOTED_IDENTIFIER - 192)) | (1L << (BACKQUOTED_IDENTIFIER - 192)))) != 0)) { + { + setState(1427); + identifier(); + setState(1432); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__3) { + { + { + setState(1428); + match(T__3); + setState(1429); + identifier(); + } + } + setState(1434); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + + setState(1437); + match(T__2); + setState(1438); + match(T__5); + setState(1439); + expression(); + } + break; + case 17: + { + _localctx = new SubqueryExpressionContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(1440); + match(T__1); + setState(1441); + query(); + setState(1442); + match(T__2); + } + break; + case 18: + { + _localctx = new ExistsContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(1444); + match(EXISTS); + setState(1445); + match(T__1); + setState(1446); + query(); + setState(1447); + match(T__2); + } + break; + case 19: + { + _localctx = new SimpleCaseContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(1449); + match(CASE); + setState(1450); + valueExpression(0); + setState(1452); + _errHandler.sync(this); + _la = _input.LA(1); + do { + { + { + setState(1451); + whenClause(); + } + } + setState(1454); + _errHandler.sync(this); + _la = _input.LA(1); + } while ( _la==WHEN ); + setState(1458); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ELSE) { + { + setState(1456); + match(ELSE); + setState(1457); + ((SimpleCaseContext)_localctx).elseExpression = expression(); + } + } + + setState(1460); + match(END); + } + break; + case 20: + { + _localctx = new SearchedCaseContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(1462); + match(CASE); + setState(1464); + _errHandler.sync(this); + _la = _input.LA(1); + do { + { + { + setState(1463); + whenClause(); + } + } + setState(1466); + _errHandler.sync(this); + _la = _input.LA(1); + } while ( _la==WHEN ); + setState(1470); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ELSE) { + { + setState(1468); + match(ELSE); + setState(1469); + ((SearchedCaseContext)_localctx).elseExpression = expression(); + } + } + + setState(1472); + match(END); + } + break; + case 21: + { + _localctx = new CastContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(1474); + match(CAST); + setState(1475); + match(T__1); + setState(1476); + expression(); + setState(1477); + match(AS); + setState(1478); + type(0); + setState(1479); + match(T__2); + } + break; + case 22: + { + _localctx = new CastContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(1481); + match(TRY_CAST); + setState(1482); + match(T__1); + setState(1483); + expression(); + setState(1484); + match(AS); + setState(1485); + type(0); + setState(1486); + match(T__2); + } + break; + case 23: + { + _localctx = new ArrayConstructorContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(1488); + match(ARRAY); + setState(1489); + match(T__6); + setState(1498); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__1) | (1L << T__4) | (1L << ADD) | (1L << ADMIN) | (1L << ALL) | (1L << ANALYZE) | (1L << ANY) | (1L << ARRAY) | (1L << ASC) | (1L << AT) | (1L << BERNOULLI) | (1L << CALL) | (1L << CALLED) | (1L << CASCADE) | (1L << CASE) | (1L << CAST) | (1L << CATALOGS) | (1L << COLUMN) | (1L << COLUMNS) | (1L << COMMENT) | (1L << COMMIT) | (1L << COMMITTED) | (1L << CURRENT) | (1L << CURRENT_DATE) | (1L << CURRENT_ROLE) | (1L << CURRENT_TIME) | (1L << CURRENT_TIMESTAMP) | (1L << CURRENT_USER) | (1L << DATA) | (1L << DATE) | (1L << DAY) | (1L << DEFINER) | (1L << DESC) | (1L << DETERMINISTIC) | (1L << DISTRIBUTED) | (1L << EXCLUDING) | (1L << EXISTS))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (EXPLAIN - 64)) | (1L << (EXTRACT - 64)) | (1L << (EXTERNAL - 64)) | (1L << (FALSE - 64)) | (1L << (FILTER - 64)) | (1L << (FIRST - 64)) | (1L << (FOLLOWING - 64)) | (1L << (FORMAT - 64)) | (1L << (FUNCTION - 64)) | (1L << (FUNCTIONS - 64)) | (1L << (GRANT - 64)) | (1L << (GRANTED - 64)) | (1L << (GRANTS - 64)) | (1L << (GRAPHVIZ - 64)) | (1L << (GROUPING - 64)) | (1L << (HOUR - 64)) | (1L << (IF - 64)) | (1L << (IGNORE - 64)) | (1L << (INCLUDING - 64)) | (1L << (INPUT - 64)) | (1L << (INTERVAL - 64)) | (1L << (INVOKER - 64)) | (1L << (IO - 64)) | (1L << (ISOLATION - 64)) | (1L << (JSON - 64)) | (1L << (LANGUAGE - 64)) | (1L << (LAST - 64)) | (1L << (LATERAL - 64)) | (1L << (LEVEL - 64)) | (1L << (LIMIT - 64)) | (1L << (LOCALTIME - 64)) | (1L << (LOCALTIMESTAMP - 64)) | (1L << (LOGICAL - 64)) | (1L << (MAP - 64)) | (1L << (MATERIALIZED - 64)) | (1L << (MINUTE - 64)) | (1L << (MONTH - 64)) | (1L << (NAME - 64)) | (1L << (NFC - 64)) | (1L << (NFD - 64)) | (1L << (NFKC - 64)) | (1L << (NFKD - 64)) | (1L << (NO - 64)) | (1L << (NONE - 64)) | (1L << (NORMALIZE - 64)) | (1L << (NOT - 64)) | (1L << (NULL - 64)) | (1L << (NULLIF - 64)) | (1L << (NULLS - 64)))) != 0) || ((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & ((1L << (OFFSET - 128)) | (1L << (ONLY - 128)) | (1L << (OPTION - 128)) | (1L << (ORDINALITY - 128)) | (1L << (OUTPUT - 128)) | (1L << (OVER - 128)) | (1L << (PARTITION - 128)) | (1L << (PARTITIONS - 128)) | (1L << (POSITION - 128)) | (1L << (PRECEDING - 128)) | (1L << (PRIVILEGES - 128)) | (1L << (PROPERTIES - 128)) | (1L << (RANGE - 128)) | (1L << (READ - 128)) | (1L << (REFRESH - 128)) | (1L << (RENAME - 128)) | (1L << (REPEATABLE - 128)) | (1L << (REPLACE - 128)) | (1L << (RESET - 128)) | (1L << (RESPECT - 128)) | (1L << (RESTRICT - 128)) | (1L << (RETURN - 128)) | (1L << (RETURNS - 128)) | (1L << (REVOKE - 128)) | (1L << (ROLE - 128)) | (1L << (ROLES - 128)) | (1L << (ROLLBACK - 128)) | (1L << (ROW - 128)) | (1L << (ROWS - 128)) | (1L << (SCHEMA - 128)) | (1L << (SCHEMAS - 128)) | (1L << (SECOND - 128)) | (1L << (SECURITY - 128)) | (1L << (SERIALIZABLE - 128)) | (1L << (SESSION - 128)) | (1L << (SET - 128)) | (1L << (SETS - 128)) | (1L << (SHOW - 128)) | (1L << (SOME - 128)) | (1L << (SQL - 128)) | (1L << (START - 128)) | (1L << (STATS - 128)) | (1L << (SUBSTRING - 128)) | (1L << (SYSTEM - 128)) | (1L << (TABLES - 128)) | (1L << (TABLESAMPLE - 128)) | (1L << (TEMPORARY - 128)) | (1L << (TEXT - 128)) | (1L << (TIME - 128)) | (1L << (TIMESTAMP - 128)) | (1L << (TO - 128)) | (1L << (TRANSACTION - 128)) | (1L << (TRUE - 128)))) != 0) || ((((_la - 192)) & ~0x3f) == 0 && ((1L << (_la - 192)) & ((1L << (TRY_CAST - 192)) | (1L << (TYPE - 192)) | (1L << (UNBOUNDED - 192)) | (1L << (UNCOMMITTED - 192)) | (1L << (USE - 192)) | (1L << (USER - 192)) | (1L << (VALIDATE - 192)) | (1L << (VERBOSE - 192)) | (1L << (VIEW - 192)) | (1L << (WORK - 192)) | (1L << (WRITE - 192)) | (1L << (YEAR - 192)) | (1L << (ZONE - 192)) | (1L << (PLUS - 192)) | (1L << (MINUS - 192)) | (1L << (STRING - 192)) | (1L << (UNICODE_STRING - 192)) | (1L << (BINARY_LITERAL - 192)) | (1L << (INTEGER_VALUE - 192)) | (1L << (DECIMAL_VALUE - 192)) | (1L << (DOUBLE_VALUE - 192)) | (1L << (IDENTIFIER - 192)) | (1L << (DIGIT_IDENTIFIER - 192)) | (1L << (QUOTED_IDENTIFIER - 192)) | (1L << (BACKQUOTED_IDENTIFIER - 192)) | (1L << (DOUBLE_PRECISION - 192)))) != 0)) { + { + setState(1490); + expression(); + setState(1495); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__3) { + { + { + setState(1491); + match(T__3); + setState(1492); + expression(); + } + } + setState(1497); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + + setState(1500); + match(T__7); + } + break; + case 24: + { + _localctx = new ColumnReferenceContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(1501); + identifier(); + } + break; + case 25: + { + _localctx = new SpecialDateTimeFunctionContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(1502); + ((SpecialDateTimeFunctionContext)_localctx).name = match(CURRENT_DATE); + } + break; + case 26: + { + _localctx = new SpecialDateTimeFunctionContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(1503); + ((SpecialDateTimeFunctionContext)_localctx).name = match(CURRENT_TIME); + setState(1507); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,194,_ctx) ) { + case 1: + { + setState(1504); + match(T__1); + setState(1505); + ((SpecialDateTimeFunctionContext)_localctx).precision = match(INTEGER_VALUE); + setState(1506); + match(T__2); + } + break; + } + } + break; + case 27: + { + _localctx = new SpecialDateTimeFunctionContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(1509); + ((SpecialDateTimeFunctionContext)_localctx).name = match(CURRENT_TIMESTAMP); + setState(1513); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,195,_ctx) ) { + case 1: + { + setState(1510); + match(T__1); + setState(1511); + ((SpecialDateTimeFunctionContext)_localctx).precision = match(INTEGER_VALUE); + setState(1512); + match(T__2); + } + break; + } + } + break; + case 28: + { + _localctx = new SpecialDateTimeFunctionContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(1515); + ((SpecialDateTimeFunctionContext)_localctx).name = match(LOCALTIME); + setState(1519); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,196,_ctx) ) { + case 1: + { + setState(1516); + match(T__1); + setState(1517); + ((SpecialDateTimeFunctionContext)_localctx).precision = match(INTEGER_VALUE); + setState(1518); + match(T__2); + } + break; + } + } + break; + case 29: + { + _localctx = new SpecialDateTimeFunctionContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(1521); + ((SpecialDateTimeFunctionContext)_localctx).name = match(LOCALTIMESTAMP); + setState(1525); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,197,_ctx) ) { + case 1: + { + setState(1522); + match(T__1); + setState(1523); + ((SpecialDateTimeFunctionContext)_localctx).precision = match(INTEGER_VALUE); + setState(1524); + match(T__2); + } + break; + } + } + break; + case 30: + { + _localctx = new CurrentUserContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(1527); + ((CurrentUserContext)_localctx).name = match(CURRENT_USER); + } + break; + case 31: + { + _localctx = new SubstringContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(1528); + match(SUBSTRING); + setState(1529); + match(T__1); + setState(1530); + valueExpression(0); + setState(1531); + match(FROM); + setState(1532); + valueExpression(0); + setState(1535); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FOR) { + { + setState(1533); + match(FOR); + setState(1534); + valueExpression(0); + } + } + + setState(1537); + match(T__2); + } + break; + case 32: + { + _localctx = new NormalizeContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(1539); + match(NORMALIZE); + setState(1540); + match(T__1); + setState(1541); + valueExpression(0); + setState(1544); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==T__3) { + { + setState(1542); + match(T__3); + setState(1543); + normalForm(); + } + } + + setState(1546); + match(T__2); + } + break; + case 33: + { + _localctx = new ExtractContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(1548); + match(EXTRACT); + setState(1549); + match(T__1); + setState(1550); + identifier(); + setState(1551); + match(FROM); + setState(1552); + valueExpression(0); + setState(1553); + match(T__2); + } + break; + case 34: + { + _localctx = new ParenthesizedExpressionContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(1555); + match(T__1); + setState(1556); + expression(); + setState(1557); + match(T__2); + } + break; + case 35: + { + _localctx = new GroupingOperationContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(1559); + match(GROUPING); + setState(1560); + match(T__1); + setState(1569); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ADD) | (1L << ADMIN) | (1L << ALL) | (1L << ANALYZE) | (1L << ANY) | (1L << ARRAY) | (1L << ASC) | (1L << AT) | (1L << BERNOULLI) | (1L << CALL) | (1L << CALLED) | (1L << CASCADE) | (1L << CATALOGS) | (1L << COLUMN) | (1L << COLUMNS) | (1L << COMMENT) | (1L << COMMIT) | (1L << COMMITTED) | (1L << CURRENT) | (1L << CURRENT_ROLE) | (1L << DATA) | (1L << DATE) | (1L << DAY) | (1L << DEFINER) | (1L << DESC) | (1L << DETERMINISTIC) | (1L << DISTRIBUTED) | (1L << EXCLUDING))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (EXPLAIN - 64)) | (1L << (EXTERNAL - 64)) | (1L << (FILTER - 64)) | (1L << (FIRST - 64)) | (1L << (FOLLOWING - 64)) | (1L << (FORMAT - 64)) | (1L << (FUNCTION - 64)) | (1L << (FUNCTIONS - 64)) | (1L << (GRANT - 64)) | (1L << (GRANTED - 64)) | (1L << (GRANTS - 64)) | (1L << (GRAPHVIZ - 64)) | (1L << (HOUR - 64)) | (1L << (IF - 64)) | (1L << (IGNORE - 64)) | (1L << (INCLUDING - 64)) | (1L << (INPUT - 64)) | (1L << (INTERVAL - 64)) | (1L << (INVOKER - 64)) | (1L << (IO - 64)) | (1L << (ISOLATION - 64)) | (1L << (JSON - 64)) | (1L << (LANGUAGE - 64)) | (1L << (LAST - 64)) | (1L << (LATERAL - 64)) | (1L << (LEVEL - 64)) | (1L << (LIMIT - 64)) | (1L << (LOGICAL - 64)) | (1L << (MAP - 64)) | (1L << (MATERIALIZED - 64)) | (1L << (MINUTE - 64)) | (1L << (MONTH - 64)) | (1L << (NAME - 64)) | (1L << (NFC - 64)) | (1L << (NFD - 64)) | (1L << (NFKC - 64)) | (1L << (NFKD - 64)) | (1L << (NO - 64)) | (1L << (NONE - 64)) | (1L << (NULLIF - 64)) | (1L << (NULLS - 64)))) != 0) || ((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & ((1L << (OFFSET - 128)) | (1L << (ONLY - 128)) | (1L << (OPTION - 128)) | (1L << (ORDINALITY - 128)) | (1L << (OUTPUT - 128)) | (1L << (OVER - 128)) | (1L << (PARTITION - 128)) | (1L << (PARTITIONS - 128)) | (1L << (POSITION - 128)) | (1L << (PRECEDING - 128)) | (1L << (PRIVILEGES - 128)) | (1L << (PROPERTIES - 128)) | (1L << (RANGE - 128)) | (1L << (READ - 128)) | (1L << (REFRESH - 128)) | (1L << (RENAME - 128)) | (1L << (REPEATABLE - 128)) | (1L << (REPLACE - 128)) | (1L << (RESET - 128)) | (1L << (RESPECT - 128)) | (1L << (RESTRICT - 128)) | (1L << (RETURN - 128)) | (1L << (RETURNS - 128)) | (1L << (REVOKE - 128)) | (1L << (ROLE - 128)) | (1L << (ROLES - 128)) | (1L << (ROLLBACK - 128)) | (1L << (ROW - 128)) | (1L << (ROWS - 128)) | (1L << (SCHEMA - 128)) | (1L << (SCHEMAS - 128)) | (1L << (SECOND - 128)) | (1L << (SECURITY - 128)) | (1L << (SERIALIZABLE - 128)) | (1L << (SESSION - 128)) | (1L << (SET - 128)) | (1L << (SETS - 128)) | (1L << (SHOW - 128)) | (1L << (SOME - 128)) | (1L << (SQL - 128)) | (1L << (START - 128)) | (1L << (STATS - 128)) | (1L << (SUBSTRING - 128)) | (1L << (SYSTEM - 128)) | (1L << (TABLES - 128)) | (1L << (TABLESAMPLE - 128)) | (1L << (TEMPORARY - 128)) | (1L << (TEXT - 128)) | (1L << (TIME - 128)) | (1L << (TIMESTAMP - 128)) | (1L << (TO - 128)) | (1L << (TRANSACTION - 128)))) != 0) || ((((_la - 192)) & ~0x3f) == 0 && ((1L << (_la - 192)) & ((1L << (TRY_CAST - 192)) | (1L << (TYPE - 192)) | (1L << (UNBOUNDED - 192)) | (1L << (UNCOMMITTED - 192)) | (1L << (USE - 192)) | (1L << (USER - 192)) | (1L << (VALIDATE - 192)) | (1L << (VERBOSE - 192)) | (1L << (VIEW - 192)) | (1L << (WORK - 192)) | (1L << (WRITE - 192)) | (1L << (YEAR - 192)) | (1L << (ZONE - 192)) | (1L << (IDENTIFIER - 192)) | (1L << (DIGIT_IDENTIFIER - 192)) | (1L << (QUOTED_IDENTIFIER - 192)) | (1L << (BACKQUOTED_IDENTIFIER - 192)))) != 0)) { + { + setState(1561); + qualifiedName(); + setState(1566); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__3) { + { + { + setState(1562); + match(T__3); + setState(1563); + qualifiedName(); + } + } + setState(1568); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + + setState(1571); + match(T__2); + } + break; + } + _ctx.stop = _input.LT(-1); + setState(1584); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,204,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + if ( _parseListeners!=null ) triggerExitRuleEvent(); + _prevctx = _localctx; + { + setState(1582); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,203,_ctx) ) { + case 1: + { + _localctx = new SubscriptContext(new PrimaryExpressionContext(_parentctx, _parentState)); + ((SubscriptContext)_localctx).value = _prevctx; + pushNewRecursionContext(_localctx, _startState, RULE_primaryExpression); + setState(1574); + if (!(precpred(_ctx, 14))) throw new FailedPredicateException(this, "precpred(_ctx, 14)"); + setState(1575); + match(T__6); + setState(1576); + ((SubscriptContext)_localctx).index = valueExpression(0); + setState(1577); + match(T__7); + } + break; + case 2: + { + _localctx = new DereferenceContext(new PrimaryExpressionContext(_parentctx, _parentState)); + ((DereferenceContext)_localctx).base = _prevctx; + pushNewRecursionContext(_localctx, _startState, RULE_primaryExpression); + setState(1579); + if (!(precpred(_ctx, 12))) throw new FailedPredicateException(this, "precpred(_ctx, 12)"); + setState(1580); + match(T__0); + setState(1581); + ((DereferenceContext)_localctx).fieldName = identifier(); + } + break; + } + } + } + setState(1586); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,204,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + unrollRecursionContexts(_parentctx); + } + return _localctx; + } + + public static class StringContext extends ParserRuleContext { + public StringContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_string; } + + public StringContext() { } + public void copyFrom(StringContext ctx) { + super.copyFrom(ctx); + } + } + public static class UnicodeStringLiteralContext extends StringContext { + public TerminalNode UNICODE_STRING() { return getToken(PrestoSqlParser.UNICODE_STRING, 0); } + public TerminalNode UESCAPE() { return getToken(PrestoSqlParser.UESCAPE, 0); } + public TerminalNode STRING() { return getToken(PrestoSqlParser.STRING, 0); } + public UnicodeStringLiteralContext(StringContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterUnicodeStringLiteral(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitUnicodeStringLiteral(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitUnicodeStringLiteral(this); + else return visitor.visitChildren(this); + } + } + public static class BasicStringLiteralContext extends StringContext { + public TerminalNode STRING() { return getToken(PrestoSqlParser.STRING, 0); } + public BasicStringLiteralContext(StringContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterBasicStringLiteral(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitBasicStringLiteral(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitBasicStringLiteral(this); + else return visitor.visitChildren(this); + } + } + + public final StringContext string() throws RecognitionException { + StringContext _localctx = new StringContext(_ctx, getState()); + enterRule(_localctx, 94, RULE_string); + try { + setState(1593); + _errHandler.sync(this); + switch (_input.LA(1)) { + case STRING: + _localctx = new BasicStringLiteralContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(1587); + match(STRING); + } + break; + case UNICODE_STRING: + _localctx = new UnicodeStringLiteralContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(1588); + match(UNICODE_STRING); + setState(1591); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,205,_ctx) ) { + case 1: + { + setState(1589); + match(UESCAPE); + setState(1590); + match(STRING); + } + break; + } + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class NullTreatmentContext extends ParserRuleContext { + public TerminalNode IGNORE() { return getToken(PrestoSqlParser.IGNORE, 0); } + public TerminalNode NULLS() { return getToken(PrestoSqlParser.NULLS, 0); } + public TerminalNode RESPECT() { return getToken(PrestoSqlParser.RESPECT, 0); } + public NullTreatmentContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_nullTreatment; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterNullTreatment(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitNullTreatment(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitNullTreatment(this); + else return visitor.visitChildren(this); + } + } + + public final NullTreatmentContext nullTreatment() throws RecognitionException { + NullTreatmentContext _localctx = new NullTreatmentContext(_ctx, getState()); + enterRule(_localctx, 96, RULE_nullTreatment); + try { + setState(1599); + _errHandler.sync(this); + switch (_input.LA(1)) { + case IGNORE: + enterOuterAlt(_localctx, 1); + { + setState(1595); + match(IGNORE); + setState(1596); + match(NULLS); + } + break; + case RESPECT: + enterOuterAlt(_localctx, 2); + { + setState(1597); + match(RESPECT); + setState(1598); + match(NULLS); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class TimeZoneSpecifierContext extends ParserRuleContext { + public TimeZoneSpecifierContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_timeZoneSpecifier; } + + public TimeZoneSpecifierContext() { } + public void copyFrom(TimeZoneSpecifierContext ctx) { + super.copyFrom(ctx); + } + } + public static class TimeZoneIntervalContext extends TimeZoneSpecifierContext { + public TerminalNode TIME() { return getToken(PrestoSqlParser.TIME, 0); } + public TerminalNode ZONE() { return getToken(PrestoSqlParser.ZONE, 0); } + public IntervalContext interval() { + return getRuleContext(IntervalContext.class,0); + } + public TimeZoneIntervalContext(TimeZoneSpecifierContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterTimeZoneInterval(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitTimeZoneInterval(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitTimeZoneInterval(this); + else return visitor.visitChildren(this); + } + } + public static class TimeZoneStringContext extends TimeZoneSpecifierContext { + public TerminalNode TIME() { return getToken(PrestoSqlParser.TIME, 0); } + public TerminalNode ZONE() { return getToken(PrestoSqlParser.ZONE, 0); } + public StringContext string() { + return getRuleContext(StringContext.class,0); + } + public TimeZoneStringContext(TimeZoneSpecifierContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterTimeZoneString(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitTimeZoneString(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitTimeZoneString(this); + else return visitor.visitChildren(this); + } + } + + public final TimeZoneSpecifierContext timeZoneSpecifier() throws RecognitionException { + TimeZoneSpecifierContext _localctx = new TimeZoneSpecifierContext(_ctx, getState()); + enterRule(_localctx, 98, RULE_timeZoneSpecifier); + try { + setState(1607); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,208,_ctx) ) { + case 1: + _localctx = new TimeZoneIntervalContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(1601); + match(TIME); + setState(1602); + match(ZONE); + setState(1603); + interval(); + } + break; + case 2: + _localctx = new TimeZoneStringContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(1604); + match(TIME); + setState(1605); + match(ZONE); + setState(1606); + string(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ComparisonOperatorContext extends ParserRuleContext { + public TerminalNode EQ() { return getToken(PrestoSqlParser.EQ, 0); } + public TerminalNode NEQ() { return getToken(PrestoSqlParser.NEQ, 0); } + public TerminalNode LT() { return getToken(PrestoSqlParser.LT, 0); } + public TerminalNode LTE() { return getToken(PrestoSqlParser.LTE, 0); } + public TerminalNode GT() { return getToken(PrestoSqlParser.GT, 0); } + public TerminalNode GTE() { return getToken(PrestoSqlParser.GTE, 0); } + public ComparisonOperatorContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_comparisonOperator; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterComparisonOperator(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitComparisonOperator(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitComparisonOperator(this); + else return visitor.visitChildren(this); + } + } + + public final ComparisonOperatorContext comparisonOperator() throws RecognitionException { + ComparisonOperatorContext _localctx = new ComparisonOperatorContext(_ctx, getState()); + enterRule(_localctx, 100, RULE_comparisonOperator); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1609); + _la = _input.LA(1); + if ( !(((((_la - 213)) & ~0x3f) == 0 && ((1L << (_la - 213)) & ((1L << (EQ - 213)) | (1L << (NEQ - 213)) | (1L << (LT - 213)) | (1L << (LTE - 213)) | (1L << (GT - 213)) | (1L << (GTE - 213)))) != 0)) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ComparisonQuantifierContext extends ParserRuleContext { + public TerminalNode ALL() { return getToken(PrestoSqlParser.ALL, 0); } + public TerminalNode SOME() { return getToken(PrestoSqlParser.SOME, 0); } + public TerminalNode ANY() { return getToken(PrestoSqlParser.ANY, 0); } + public ComparisonQuantifierContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_comparisonQuantifier; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterComparisonQuantifier(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitComparisonQuantifier(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitComparisonQuantifier(this); + else return visitor.visitChildren(this); + } + } + + public final ComparisonQuantifierContext comparisonQuantifier() throws RecognitionException { + ComparisonQuantifierContext _localctx = new ComparisonQuantifierContext(_ctx, getState()); + enterRule(_localctx, 102, RULE_comparisonQuantifier); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1611); + _la = _input.LA(1); + if ( !(_la==ALL || _la==ANY || _la==SOME) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class BooleanValueContext extends ParserRuleContext { + public TerminalNode TRUE() { return getToken(PrestoSqlParser.TRUE, 0); } + public TerminalNode FALSE() { return getToken(PrestoSqlParser.FALSE, 0); } + public BooleanValueContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_booleanValue; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterBooleanValue(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitBooleanValue(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitBooleanValue(this); + else return visitor.visitChildren(this); + } + } + + public final BooleanValueContext booleanValue() throws RecognitionException { + BooleanValueContext _localctx = new BooleanValueContext(_ctx, getState()); + enterRule(_localctx, 104, RULE_booleanValue); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1613); + _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; + } + + public static class IntervalContext extends ParserRuleContext { + public Token sign; + public IntervalFieldContext from; + public IntervalFieldContext to; + public TerminalNode INTERVAL() { return getToken(PrestoSqlParser.INTERVAL, 0); } + public StringContext string() { + return getRuleContext(StringContext.class,0); + } + public List intervalField() { + return getRuleContexts(IntervalFieldContext.class); + } + public IntervalFieldContext intervalField(int i) { + return getRuleContext(IntervalFieldContext.class,i); + } + public TerminalNode TO() { return getToken(PrestoSqlParser.TO, 0); } + public TerminalNode PLUS() { return getToken(PrestoSqlParser.PLUS, 0); } + public TerminalNode MINUS() { return getToken(PrestoSqlParser.MINUS, 0); } + public IntervalContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_interval; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterInterval(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitInterval(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitInterval(this); + else return visitor.visitChildren(this); + } + } + + public final IntervalContext interval() throws RecognitionException { + IntervalContext _localctx = new IntervalContext(_ctx, getState()); + enterRule(_localctx, 106, RULE_interval); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1615); + match(INTERVAL); + setState(1617); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PLUS || _la==MINUS) { + { + setState(1616); + ((IntervalContext)_localctx).sign = _input.LT(1); + _la = _input.LA(1); + if ( !(_la==PLUS || _la==MINUS) ) { + ((IntervalContext)_localctx).sign = (Token)_errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + } + + setState(1619); + string(); + setState(1620); + ((IntervalContext)_localctx).from = intervalField(); + setState(1623); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,210,_ctx) ) { + case 1: + { + setState(1621); + match(TO); + setState(1622); + ((IntervalContext)_localctx).to = intervalField(); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class IntervalFieldContext extends ParserRuleContext { + public TerminalNode YEAR() { return getToken(PrestoSqlParser.YEAR, 0); } + public TerminalNode MONTH() { return getToken(PrestoSqlParser.MONTH, 0); } + public TerminalNode DAY() { return getToken(PrestoSqlParser.DAY, 0); } + public TerminalNode HOUR() { return getToken(PrestoSqlParser.HOUR, 0); } + public TerminalNode MINUTE() { return getToken(PrestoSqlParser.MINUTE, 0); } + public TerminalNode SECOND() { return getToken(PrestoSqlParser.SECOND, 0); } + public IntervalFieldContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_intervalField; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterIntervalField(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitIntervalField(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitIntervalField(this); + else return visitor.visitChildren(this); + } + } + + public final IntervalFieldContext intervalField() throws RecognitionException { + IntervalFieldContext _localctx = new IntervalFieldContext(_ctx, getState()); + enterRule(_localctx, 108, RULE_intervalField); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1625); + _la = _input.LA(1); + if ( !(_la==DAY || ((((_la - 84)) & ~0x3f) == 0 && ((1L << (_la - 84)) & ((1L << (HOUR - 84)) | (1L << (MINUTE - 84)) | (1L << (MONTH - 84)))) != 0) || _la==SECOND || _la==YEAR) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class NormalFormContext extends ParserRuleContext { + public TerminalNode NFD() { return getToken(PrestoSqlParser.NFD, 0); } + public TerminalNode NFC() { return getToken(PrestoSqlParser.NFC, 0); } + public TerminalNode NFKD() { return getToken(PrestoSqlParser.NFKD, 0); } + public TerminalNode NFKC() { return getToken(PrestoSqlParser.NFKC, 0); } + public NormalFormContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_normalForm; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterNormalForm(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitNormalForm(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitNormalForm(this); + else return visitor.visitChildren(this); + } + } + + public final NormalFormContext normalForm() throws RecognitionException { + NormalFormContext _localctx = new NormalFormContext(_ctx, getState()); + enterRule(_localctx, 110, RULE_normalForm); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1627); + _la = _input.LA(1); + if ( !(((((_la - 117)) & ~0x3f) == 0 && ((1L << (_la - 117)) & ((1L << (NFC - 117)) | (1L << (NFD - 117)) | (1L << (NFKC - 117)) | (1L << (NFKD - 117)))) != 0)) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class TypesContext extends ParserRuleContext { + public List type() { + return getRuleContexts(TypeContext.class); + } + public TypeContext type(int i) { + return getRuleContext(TypeContext.class,i); + } + public TypesContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_types; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterTypes(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitTypes(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitTypes(this); + else return visitor.visitChildren(this); + } + } + + public final TypesContext types() throws RecognitionException { + TypesContext _localctx = new TypesContext(_ctx, getState()); + enterRule(_localctx, 112, RULE_types); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1629); + match(T__1); + setState(1638); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ADD) | (1L << ADMIN) | (1L << ALL) | (1L << ANALYZE) | (1L << ANY) | (1L << ARRAY) | (1L << ASC) | (1L << AT) | (1L << BERNOULLI) | (1L << CALL) | (1L << CALLED) | (1L << CASCADE) | (1L << CATALOGS) | (1L << COLUMN) | (1L << COLUMNS) | (1L << COMMENT) | (1L << COMMIT) | (1L << COMMITTED) | (1L << CURRENT) | (1L << CURRENT_ROLE) | (1L << DATA) | (1L << DATE) | (1L << DAY) | (1L << DEFINER) | (1L << DESC) | (1L << DETERMINISTIC) | (1L << DISTRIBUTED) | (1L << EXCLUDING))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (EXPLAIN - 64)) | (1L << (EXTERNAL - 64)) | (1L << (FILTER - 64)) | (1L << (FIRST - 64)) | (1L << (FOLLOWING - 64)) | (1L << (FORMAT - 64)) | (1L << (FUNCTION - 64)) | (1L << (FUNCTIONS - 64)) | (1L << (GRANT - 64)) | (1L << (GRANTED - 64)) | (1L << (GRANTS - 64)) | (1L << (GRAPHVIZ - 64)) | (1L << (HOUR - 64)) | (1L << (IF - 64)) | (1L << (IGNORE - 64)) | (1L << (INCLUDING - 64)) | (1L << (INPUT - 64)) | (1L << (INTERVAL - 64)) | (1L << (INVOKER - 64)) | (1L << (IO - 64)) | (1L << (ISOLATION - 64)) | (1L << (JSON - 64)) | (1L << (LANGUAGE - 64)) | (1L << (LAST - 64)) | (1L << (LATERAL - 64)) | (1L << (LEVEL - 64)) | (1L << (LIMIT - 64)) | (1L << (LOGICAL - 64)) | (1L << (MAP - 64)) | (1L << (MATERIALIZED - 64)) | (1L << (MINUTE - 64)) | (1L << (MONTH - 64)) | (1L << (NAME - 64)) | (1L << (NFC - 64)) | (1L << (NFD - 64)) | (1L << (NFKC - 64)) | (1L << (NFKD - 64)) | (1L << (NO - 64)) | (1L << (NONE - 64)) | (1L << (NULLIF - 64)) | (1L << (NULLS - 64)))) != 0) || ((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & ((1L << (OFFSET - 128)) | (1L << (ONLY - 128)) | (1L << (OPTION - 128)) | (1L << (ORDINALITY - 128)) | (1L << (OUTPUT - 128)) | (1L << (OVER - 128)) | (1L << (PARTITION - 128)) | (1L << (PARTITIONS - 128)) | (1L << (POSITION - 128)) | (1L << (PRECEDING - 128)) | (1L << (PRIVILEGES - 128)) | (1L << (PROPERTIES - 128)) | (1L << (RANGE - 128)) | (1L << (READ - 128)) | (1L << (REFRESH - 128)) | (1L << (RENAME - 128)) | (1L << (REPEATABLE - 128)) | (1L << (REPLACE - 128)) | (1L << (RESET - 128)) | (1L << (RESPECT - 128)) | (1L << (RESTRICT - 128)) | (1L << (RETURN - 128)) | (1L << (RETURNS - 128)) | (1L << (REVOKE - 128)) | (1L << (ROLE - 128)) | (1L << (ROLES - 128)) | (1L << (ROLLBACK - 128)) | (1L << (ROW - 128)) | (1L << (ROWS - 128)) | (1L << (SCHEMA - 128)) | (1L << (SCHEMAS - 128)) | (1L << (SECOND - 128)) | (1L << (SECURITY - 128)) | (1L << (SERIALIZABLE - 128)) | (1L << (SESSION - 128)) | (1L << (SET - 128)) | (1L << (SETS - 128)) | (1L << (SHOW - 128)) | (1L << (SOME - 128)) | (1L << (SQL - 128)) | (1L << (START - 128)) | (1L << (STATS - 128)) | (1L << (SUBSTRING - 128)) | (1L << (SYSTEM - 128)) | (1L << (TABLES - 128)) | (1L << (TABLESAMPLE - 128)) | (1L << (TEMPORARY - 128)) | (1L << (TEXT - 128)) | (1L << (TIME - 128)) | (1L << (TIMESTAMP - 128)) | (1L << (TO - 128)) | (1L << (TRANSACTION - 128)))) != 0) || ((((_la - 192)) & ~0x3f) == 0 && ((1L << (_la - 192)) & ((1L << (TRY_CAST - 192)) | (1L << (TYPE - 192)) | (1L << (UNBOUNDED - 192)) | (1L << (UNCOMMITTED - 192)) | (1L << (USE - 192)) | (1L << (USER - 192)) | (1L << (VALIDATE - 192)) | (1L << (VERBOSE - 192)) | (1L << (VIEW - 192)) | (1L << (WORK - 192)) | (1L << (WRITE - 192)) | (1L << (YEAR - 192)) | (1L << (ZONE - 192)) | (1L << (IDENTIFIER - 192)) | (1L << (DIGIT_IDENTIFIER - 192)) | (1L << (QUOTED_IDENTIFIER - 192)) | (1L << (BACKQUOTED_IDENTIFIER - 192)) | (1L << (TIME_WITH_TIME_ZONE - 192)) | (1L << (TIMESTAMP_WITH_TIME_ZONE - 192)) | (1L << (DOUBLE_PRECISION - 192)))) != 0)) { + { + setState(1630); + type(0); + setState(1635); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__3) { + { + { + setState(1631); + match(T__3); + setState(1632); + type(0); + } + } + setState(1637); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + + setState(1640); + match(T__2); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class TypeContext extends ParserRuleContext { + public IntervalFieldContext from; + public IntervalFieldContext to; + public TerminalNode ARRAY() { return getToken(PrestoSqlParser.ARRAY, 0); } + public List type() { + return getRuleContexts(TypeContext.class); + } + public TypeContext type(int i) { + return getRuleContext(TypeContext.class,i); + } + public TerminalNode MAP() { return getToken(PrestoSqlParser.MAP, 0); } + public TerminalNode ROW() { return getToken(PrestoSqlParser.ROW, 0); } + public List identifier() { + return getRuleContexts(IdentifierContext.class); + } + public IdentifierContext identifier(int i) { + return getRuleContext(IdentifierContext.class,i); + } + public BaseTypeContext baseType() { + return getRuleContext(BaseTypeContext.class,0); + } + public List typeParameter() { + return getRuleContexts(TypeParameterContext.class); + } + public TypeParameterContext typeParameter(int i) { + return getRuleContext(TypeParameterContext.class,i); + } + public TerminalNode INTERVAL() { return getToken(PrestoSqlParser.INTERVAL, 0); } + public TerminalNode TO() { return getToken(PrestoSqlParser.TO, 0); } + public List intervalField() { + return getRuleContexts(IntervalFieldContext.class); + } + public IntervalFieldContext intervalField(int i) { + return getRuleContext(IntervalFieldContext.class,i); + } + public TypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_type; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitType(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitType(this); + else return visitor.visitChildren(this); + } + } + + public final TypeContext type() throws RecognitionException { + return type(0); + } + + private TypeContext type(int _p) throws RecognitionException { + ParserRuleContext _parentctx = _ctx; + int _parentState = getState(); + TypeContext _localctx = new TypeContext(_ctx, _parentState); + TypeContext _prevctx = _localctx; + int _startState = 114; + enterRecursionRule(_localctx, 114, RULE_type, _p); + int _la; + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(1689); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,216,_ctx) ) { + case 1: + { + setState(1643); + match(ARRAY); + setState(1644); + match(LT); + setState(1645); + type(0); + setState(1646); + match(GT); + } + break; + case 2: + { + setState(1648); + match(MAP); + setState(1649); + match(LT); + setState(1650); + type(0); + setState(1651); + match(T__3); + setState(1652); + type(0); + setState(1653); + match(GT); + } + break; + case 3: + { + setState(1655); + match(ROW); + setState(1656); + match(T__1); + setState(1657); + identifier(); + setState(1658); + type(0); + setState(1665); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__3) { + { + { + setState(1659); + match(T__3); + setState(1660); + identifier(); + setState(1661); + type(0); + } + } + setState(1667); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1668); + match(T__2); + } + break; + case 4: + { + setState(1670); + baseType(); + setState(1682); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,215,_ctx) ) { + case 1: + { + setState(1671); + match(T__1); + setState(1672); + typeParameter(); + setState(1677); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__3) { + { + { + setState(1673); + match(T__3); + setState(1674); + typeParameter(); + } + } + setState(1679); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1680); + match(T__2); + } + break; + } + } + break; + case 5: + { + setState(1684); + match(INTERVAL); + setState(1685); + ((TypeContext)_localctx).from = intervalField(); + setState(1686); + match(TO); + setState(1687); + ((TypeContext)_localctx).to = intervalField(); + } + break; + } + _ctx.stop = _input.LT(-1); + setState(1695); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,217,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + if ( _parseListeners!=null ) triggerExitRuleEvent(); + _prevctx = _localctx; + { + { + _localctx = new TypeContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_type); + setState(1691); + if (!(precpred(_ctx, 6))) throw new FailedPredicateException(this, "precpred(_ctx, 6)"); + setState(1692); + match(ARRAY); + } + } + } + setState(1697); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,217,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + unrollRecursionContexts(_parentctx); + } + return _localctx; + } + + public static class TypeParameterContext extends ParserRuleContext { + public TerminalNode INTEGER_VALUE() { return getToken(PrestoSqlParser.INTEGER_VALUE, 0); } + public TypeContext type() { + return getRuleContext(TypeContext.class,0); + } + public TypeParameterContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_typeParameter; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterTypeParameter(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitTypeParameter(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitTypeParameter(this); + else return visitor.visitChildren(this); + } + } + + public final TypeParameterContext typeParameter() throws RecognitionException { + TypeParameterContext _localctx = new TypeParameterContext(_ctx, getState()); + enterRule(_localctx, 116, RULE_typeParameter); + try { + setState(1700); + _errHandler.sync(this); + switch (_input.LA(1)) { + case INTEGER_VALUE: + enterOuterAlt(_localctx, 1); + { + setState(1698); + match(INTEGER_VALUE); + } + break; + case ADD: + case ADMIN: + case ALL: + case ANALYZE: + case ANY: + case ARRAY: + case ASC: + case AT: + case BERNOULLI: + case CALL: + case CALLED: + case CASCADE: + case CATALOGS: + case COLUMN: + case COLUMNS: + case COMMENT: + case COMMIT: + case COMMITTED: + case CURRENT: + case CURRENT_ROLE: + case DATA: + case DATE: + case DAY: + case DEFINER: + case DESC: + case DETERMINISTIC: + case DISTRIBUTED: + case EXCLUDING: + case EXPLAIN: + case EXTERNAL: + case FILTER: + case FIRST: + case FOLLOWING: + case FORMAT: + case FUNCTION: + case FUNCTIONS: + case GRANT: + case GRANTED: + case GRANTS: + case GRAPHVIZ: + case HOUR: + case IF: + case IGNORE: + case INCLUDING: + case INPUT: + case INTERVAL: + case INVOKER: + case IO: + case ISOLATION: + case JSON: + case LANGUAGE: + case LAST: + case LATERAL: + case LEVEL: + case LIMIT: + case LOGICAL: + case MAP: + case MATERIALIZED: + case MINUTE: + case MONTH: + case NAME: + case NFC: + case NFD: + case NFKC: + case NFKD: + case NO: + case NONE: + case NULLIF: + case NULLS: + case OFFSET: + case ONLY: + case OPTION: + case ORDINALITY: + case OUTPUT: + case OVER: + case PARTITION: + case PARTITIONS: + case POSITION: + case PRECEDING: + case PRIVILEGES: + case PROPERTIES: + case RANGE: + case READ: + case REFRESH: + case RENAME: + case REPEATABLE: + case REPLACE: + case RESET: + case RESPECT: + case RESTRICT: + case RETURN: + case RETURNS: + case REVOKE: + case ROLE: + case ROLES: + case ROLLBACK: + case ROW: + case ROWS: + case SCHEMA: + case SCHEMAS: + case SECOND: + case SECURITY: + case SERIALIZABLE: + case SESSION: + case SET: + case SETS: + case SHOW: + case SOME: + case SQL: + case START: + case STATS: + case SUBSTRING: + case SYSTEM: + case TABLES: + case TABLESAMPLE: + case TEMPORARY: + case TEXT: + case TIME: + case TIMESTAMP: + case TO: + case TRANSACTION: + case TRY_CAST: + case TYPE: + case UNBOUNDED: + case UNCOMMITTED: + case USE: + case USER: + case VALIDATE: + case VERBOSE: + case VIEW: + case WORK: + case WRITE: + case YEAR: + case ZONE: + case IDENTIFIER: + case DIGIT_IDENTIFIER: + case QUOTED_IDENTIFIER: + case BACKQUOTED_IDENTIFIER: + case TIME_WITH_TIME_ZONE: + case TIMESTAMP_WITH_TIME_ZONE: + case DOUBLE_PRECISION: + enterOuterAlt(_localctx, 2); + { + setState(1699); + type(0); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class BaseTypeContext extends ParserRuleContext { + public TerminalNode TIME_WITH_TIME_ZONE() { return getToken(PrestoSqlParser.TIME_WITH_TIME_ZONE, 0); } + public TerminalNode TIMESTAMP_WITH_TIME_ZONE() { return getToken(PrestoSqlParser.TIMESTAMP_WITH_TIME_ZONE, 0); } + public TerminalNode DOUBLE_PRECISION() { return getToken(PrestoSqlParser.DOUBLE_PRECISION, 0); } + public QualifiedNameContext qualifiedName() { + return getRuleContext(QualifiedNameContext.class,0); + } + public BaseTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_baseType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterBaseType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitBaseType(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitBaseType(this); + else return visitor.visitChildren(this); + } + } + + public final BaseTypeContext baseType() throws RecognitionException { + BaseTypeContext _localctx = new BaseTypeContext(_ctx, getState()); + enterRule(_localctx, 118, RULE_baseType); + try { + setState(1706); + _errHandler.sync(this); + switch (_input.LA(1)) { + case TIME_WITH_TIME_ZONE: + enterOuterAlt(_localctx, 1); + { + setState(1702); + match(TIME_WITH_TIME_ZONE); + } + break; + case TIMESTAMP_WITH_TIME_ZONE: + enterOuterAlt(_localctx, 2); + { + setState(1703); + match(TIMESTAMP_WITH_TIME_ZONE); + } + break; + case DOUBLE_PRECISION: + enterOuterAlt(_localctx, 3); + { + setState(1704); + match(DOUBLE_PRECISION); + } + break; + case ADD: + case ADMIN: + case ALL: + case ANALYZE: + case ANY: + case ARRAY: + case ASC: + case AT: + case BERNOULLI: + case CALL: + case CALLED: + case CASCADE: + case CATALOGS: + case COLUMN: + case COLUMNS: + case COMMENT: + case COMMIT: + case COMMITTED: + case CURRENT: + case CURRENT_ROLE: + case DATA: + case DATE: + case DAY: + case DEFINER: + case DESC: + case DETERMINISTIC: + case DISTRIBUTED: + case EXCLUDING: + case EXPLAIN: + case EXTERNAL: + case FILTER: + case FIRST: + case FOLLOWING: + case FORMAT: + case FUNCTION: + case FUNCTIONS: + case GRANT: + case GRANTED: + case GRANTS: + case GRAPHVIZ: + case HOUR: + case IF: + case IGNORE: + case INCLUDING: + case INPUT: + case INTERVAL: + case INVOKER: + case IO: + case ISOLATION: + case JSON: + case LANGUAGE: + case LAST: + case LATERAL: + case LEVEL: + case LIMIT: + case LOGICAL: + case MAP: + case MATERIALIZED: + case MINUTE: + case MONTH: + case NAME: + case NFC: + case NFD: + case NFKC: + case NFKD: + case NO: + case NONE: + case NULLIF: + case NULLS: + case OFFSET: + case ONLY: + case OPTION: + case ORDINALITY: + case OUTPUT: + case OVER: + case PARTITION: + case PARTITIONS: + case POSITION: + case PRECEDING: + case PRIVILEGES: + case PROPERTIES: + case RANGE: + case READ: + case REFRESH: + case RENAME: + case REPEATABLE: + case REPLACE: + case RESET: + case RESPECT: + case RESTRICT: + case RETURN: + case RETURNS: + case REVOKE: + case ROLE: + case ROLES: + case ROLLBACK: + case ROW: + case ROWS: + case SCHEMA: + case SCHEMAS: + case SECOND: + case SECURITY: + case SERIALIZABLE: + case SESSION: + case SET: + case SETS: + case SHOW: + case SOME: + case SQL: + case START: + case STATS: + case SUBSTRING: + case SYSTEM: + case TABLES: + case TABLESAMPLE: + case TEMPORARY: + case TEXT: + case TIME: + case TIMESTAMP: + case TO: + case TRANSACTION: + case TRY_CAST: + case TYPE: + case UNBOUNDED: + case UNCOMMITTED: + case USE: + case USER: + case VALIDATE: + case VERBOSE: + case VIEW: + case WORK: + case WRITE: + case YEAR: + case ZONE: + case IDENTIFIER: + case DIGIT_IDENTIFIER: + case QUOTED_IDENTIFIER: + case BACKQUOTED_IDENTIFIER: + enterOuterAlt(_localctx, 4); + { + setState(1705); + qualifiedName(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class WhenClauseContext extends ParserRuleContext { + public ExpressionContext condition; + public ExpressionContext result; + public TerminalNode WHEN() { return getToken(PrestoSqlParser.WHEN, 0); } + public TerminalNode THEN() { return getToken(PrestoSqlParser.THEN, 0); } + public List expression() { + return getRuleContexts(ExpressionContext.class); + } + public ExpressionContext expression(int i) { + return getRuleContext(ExpressionContext.class,i); + } + public WhenClauseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_whenClause; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterWhenClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitWhenClause(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitWhenClause(this); + else return visitor.visitChildren(this); + } + } + + public final WhenClauseContext whenClause() throws RecognitionException { + WhenClauseContext _localctx = new WhenClauseContext(_ctx, getState()); + enterRule(_localctx, 120, RULE_whenClause); + try { + enterOuterAlt(_localctx, 1); + { + setState(1708); + match(WHEN); + setState(1709); + ((WhenClauseContext)_localctx).condition = expression(); + setState(1710); + match(THEN); + setState(1711); + ((WhenClauseContext)_localctx).result = expression(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class FilterContext extends ParserRuleContext { + public TerminalNode FILTER() { return getToken(PrestoSqlParser.FILTER, 0); } + public TerminalNode WHERE() { return getToken(PrestoSqlParser.WHERE, 0); } + public BooleanExpressionContext booleanExpression() { + return getRuleContext(BooleanExpressionContext.class,0); + } + public FilterContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_filter; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterFilter(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitFilter(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitFilter(this); + else return visitor.visitChildren(this); + } + } + + public final FilterContext filter() throws RecognitionException { + FilterContext _localctx = new FilterContext(_ctx, getState()); + enterRule(_localctx, 122, RULE_filter); + try { + enterOuterAlt(_localctx, 1); + { + setState(1713); + match(FILTER); + setState(1714); + match(T__1); + setState(1715); + match(WHERE); + setState(1716); + booleanExpression(0); + setState(1717); + match(T__2); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class OverContext extends ParserRuleContext { + public ExpressionContext expression; + public List partition = new ArrayList(); + public TerminalNode OVER() { return getToken(PrestoSqlParser.OVER, 0); } + public TerminalNode PARTITION() { return getToken(PrestoSqlParser.PARTITION, 0); } + public List BY() { return getTokens(PrestoSqlParser.BY); } + public TerminalNode BY(int i) { + return getToken(PrestoSqlParser.BY, i); + } + public TerminalNode ORDER() { return getToken(PrestoSqlParser.ORDER, 0); } + public List sortItem() { + return getRuleContexts(SortItemContext.class); + } + public SortItemContext sortItem(int i) { + return getRuleContext(SortItemContext.class,i); + } + public WindowFrameContext windowFrame() { + return getRuleContext(WindowFrameContext.class,0); + } + public List expression() { + return getRuleContexts(ExpressionContext.class); + } + public ExpressionContext expression(int i) { + return getRuleContext(ExpressionContext.class,i); + } + public OverContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_over; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterOver(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitOver(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitOver(this); + else return visitor.visitChildren(this); + } + } + + public final OverContext over() throws RecognitionException { + OverContext _localctx = new OverContext(_ctx, getState()); + enterRule(_localctx, 124, RULE_over); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1719); + match(OVER); + setState(1720); + match(T__1); + setState(1731); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PARTITION) { + { + setState(1721); + match(PARTITION); + setState(1722); + match(BY); + setState(1723); + ((OverContext)_localctx).expression = expression(); + ((OverContext)_localctx).partition.add(((OverContext)_localctx).expression); + setState(1728); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__3) { + { + { + setState(1724); + match(T__3); + setState(1725); + ((OverContext)_localctx).expression = expression(); + ((OverContext)_localctx).partition.add(((OverContext)_localctx).expression); + } + } + setState(1730); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + + setState(1743); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ORDER) { + { + setState(1733); + match(ORDER); + setState(1734); + match(BY); + setState(1735); + sortItem(); + setState(1740); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__3) { + { + { + setState(1736); + match(T__3); + setState(1737); + sortItem(); + } + } + setState(1742); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + + setState(1746); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==RANGE || _la==ROWS) { + { + setState(1745); + windowFrame(); + } + } + + setState(1748); + match(T__2); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class WindowFrameContext extends ParserRuleContext { + public Token frameType; + public FrameBoundContext start; + public FrameBoundContext end; + public TerminalNode RANGE() { return getToken(PrestoSqlParser.RANGE, 0); } + public List frameBound() { + return getRuleContexts(FrameBoundContext.class); + } + public FrameBoundContext frameBound(int i) { + return getRuleContext(FrameBoundContext.class,i); + } + public TerminalNode ROWS() { return getToken(PrestoSqlParser.ROWS, 0); } + public TerminalNode BETWEEN() { return getToken(PrestoSqlParser.BETWEEN, 0); } + public TerminalNode AND() { return getToken(PrestoSqlParser.AND, 0); } + public WindowFrameContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_windowFrame; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterWindowFrame(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitWindowFrame(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitWindowFrame(this); + else return visitor.visitChildren(this); + } + } + + public final WindowFrameContext windowFrame() throws RecognitionException { + WindowFrameContext _localctx = new WindowFrameContext(_ctx, getState()); + enterRule(_localctx, 126, RULE_windowFrame); + try { + setState(1766); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,225,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1750); + ((WindowFrameContext)_localctx).frameType = match(RANGE); + setState(1751); + ((WindowFrameContext)_localctx).start = frameBound(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1752); + ((WindowFrameContext)_localctx).frameType = match(ROWS); + setState(1753); + ((WindowFrameContext)_localctx).start = frameBound(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(1754); + ((WindowFrameContext)_localctx).frameType = match(RANGE); + setState(1755); + match(BETWEEN); + setState(1756); + ((WindowFrameContext)_localctx).start = frameBound(); + setState(1757); + match(AND); + setState(1758); + ((WindowFrameContext)_localctx).end = frameBound(); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(1760); + ((WindowFrameContext)_localctx).frameType = match(ROWS); + setState(1761); + match(BETWEEN); + setState(1762); + ((WindowFrameContext)_localctx).start = frameBound(); + setState(1763); + match(AND); + setState(1764); + ((WindowFrameContext)_localctx).end = frameBound(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class FrameBoundContext extends ParserRuleContext { + public FrameBoundContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_frameBound; } + + public FrameBoundContext() { } + public void copyFrom(FrameBoundContext ctx) { + super.copyFrom(ctx); + } + } + public static class BoundedFrameContext extends FrameBoundContext { + public Token boundType; + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public TerminalNode PRECEDING() { return getToken(PrestoSqlParser.PRECEDING, 0); } + public TerminalNode FOLLOWING() { return getToken(PrestoSqlParser.FOLLOWING, 0); } + public BoundedFrameContext(FrameBoundContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterBoundedFrame(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitBoundedFrame(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitBoundedFrame(this); + else return visitor.visitChildren(this); + } + } + public static class UnboundedFrameContext extends FrameBoundContext { + public Token boundType; + public TerminalNode UNBOUNDED() { return getToken(PrestoSqlParser.UNBOUNDED, 0); } + public TerminalNode PRECEDING() { return getToken(PrestoSqlParser.PRECEDING, 0); } + public TerminalNode FOLLOWING() { return getToken(PrestoSqlParser.FOLLOWING, 0); } + public UnboundedFrameContext(FrameBoundContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterUnboundedFrame(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitUnboundedFrame(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitUnboundedFrame(this); + else return visitor.visitChildren(this); + } + } + public static class CurrentRowBoundContext extends FrameBoundContext { + public TerminalNode CURRENT() { return getToken(PrestoSqlParser.CURRENT, 0); } + public TerminalNode ROW() { return getToken(PrestoSqlParser.ROW, 0); } + public CurrentRowBoundContext(FrameBoundContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterCurrentRowBound(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitCurrentRowBound(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitCurrentRowBound(this); + else return visitor.visitChildren(this); + } + } + + public final FrameBoundContext frameBound() throws RecognitionException { + FrameBoundContext _localctx = new FrameBoundContext(_ctx, getState()); + enterRule(_localctx, 128, RULE_frameBound); + int _la; + try { + setState(1777); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,226,_ctx) ) { + case 1: + _localctx = new UnboundedFrameContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(1768); + match(UNBOUNDED); + setState(1769); + ((UnboundedFrameContext)_localctx).boundType = match(PRECEDING); + } + break; + case 2: + _localctx = new UnboundedFrameContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(1770); + match(UNBOUNDED); + setState(1771); + ((UnboundedFrameContext)_localctx).boundType = match(FOLLOWING); + } + break; + case 3: + _localctx = new CurrentRowBoundContext(_localctx); + enterOuterAlt(_localctx, 3); + { + setState(1772); + match(CURRENT); + setState(1773); + match(ROW); + } + break; + case 4: + _localctx = new BoundedFrameContext(_localctx); + enterOuterAlt(_localctx, 4); + { + setState(1774); + expression(); + setState(1775); + ((BoundedFrameContext)_localctx).boundType = _input.LT(1); + _la = _input.LA(1); + if ( !(_la==FOLLOWING || _la==PRECEDING) ) { + ((BoundedFrameContext)_localctx).boundType = (Token)_errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ExplainOptionContext extends ParserRuleContext { + public ExplainOptionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_explainOption; } + + public ExplainOptionContext() { } + public void copyFrom(ExplainOptionContext ctx) { + super.copyFrom(ctx); + } + } + public static class ExplainFormatContext extends ExplainOptionContext { + public Token value; + public TerminalNode FORMAT() { return getToken(PrestoSqlParser.FORMAT, 0); } + public TerminalNode TEXT() { return getToken(PrestoSqlParser.TEXT, 0); } + public TerminalNode GRAPHVIZ() { return getToken(PrestoSqlParser.GRAPHVIZ, 0); } + public TerminalNode JSON() { return getToken(PrestoSqlParser.JSON, 0); } + public ExplainFormatContext(ExplainOptionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterExplainFormat(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitExplainFormat(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitExplainFormat(this); + else return visitor.visitChildren(this); + } + } + public static class ExplainTypeContext extends ExplainOptionContext { + public Token value; + public TerminalNode TYPE() { return getToken(PrestoSqlParser.TYPE, 0); } + public TerminalNode LOGICAL() { return getToken(PrestoSqlParser.LOGICAL, 0); } + public TerminalNode DISTRIBUTED() { return getToken(PrestoSqlParser.DISTRIBUTED, 0); } + public TerminalNode VALIDATE() { return getToken(PrestoSqlParser.VALIDATE, 0); } + public TerminalNode IO() { return getToken(PrestoSqlParser.IO, 0); } + public ExplainTypeContext(ExplainOptionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterExplainType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitExplainType(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitExplainType(this); + else return visitor.visitChildren(this); + } + } + + public final ExplainOptionContext explainOption() throws RecognitionException { + ExplainOptionContext _localctx = new ExplainOptionContext(_ctx, getState()); + enterRule(_localctx, 130, RULE_explainOption); + int _la; + try { + setState(1783); + _errHandler.sync(this); + switch (_input.LA(1)) { + case FORMAT: + _localctx = new ExplainFormatContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(1779); + match(FORMAT); + setState(1780); + ((ExplainFormatContext)_localctx).value = _input.LT(1); + _la = _input.LA(1); + if ( !(_la==GRAPHVIZ || _la==JSON || _la==TEXT) ) { + ((ExplainFormatContext)_localctx).value = (Token)_errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + break; + case TYPE: + _localctx = new ExplainTypeContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(1781); + match(TYPE); + setState(1782); + ((ExplainTypeContext)_localctx).value = _input.LT(1); + _la = _input.LA(1); + if ( !(((((_la - 55)) & ~0x3f) == 0 && ((1L << (_la - 55)) & ((1L << (DISTRIBUTED - 55)) | (1L << (IO - 55)) | (1L << (LOGICAL - 55)))) != 0) || _la==VALIDATE) ) { + ((ExplainTypeContext)_localctx).value = (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 static class TransactionModeContext extends ParserRuleContext { + public TransactionModeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_transactionMode; } + + public TransactionModeContext() { } + public void copyFrom(TransactionModeContext ctx) { + super.copyFrom(ctx); + } + } + public static class TransactionAccessModeContext extends TransactionModeContext { + public Token accessMode; + public TerminalNode READ() { return getToken(PrestoSqlParser.READ, 0); } + public TerminalNode ONLY() { return getToken(PrestoSqlParser.ONLY, 0); } + public TerminalNode WRITE() { return getToken(PrestoSqlParser.WRITE, 0); } + public TransactionAccessModeContext(TransactionModeContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterTransactionAccessMode(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitTransactionAccessMode(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitTransactionAccessMode(this); + else return visitor.visitChildren(this); + } + } + public static class IsolationLevelContext extends TransactionModeContext { + public TerminalNode ISOLATION() { return getToken(PrestoSqlParser.ISOLATION, 0); } + public TerminalNode LEVEL() { return getToken(PrestoSqlParser.LEVEL, 0); } + public LevelOfIsolationContext levelOfIsolation() { + return getRuleContext(LevelOfIsolationContext.class,0); + } + public IsolationLevelContext(TransactionModeContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterIsolationLevel(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitIsolationLevel(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitIsolationLevel(this); + else return visitor.visitChildren(this); + } + } + + public final TransactionModeContext transactionMode() throws RecognitionException { + TransactionModeContext _localctx = new TransactionModeContext(_ctx, getState()); + enterRule(_localctx, 132, RULE_transactionMode); + int _la; + try { + setState(1790); + _errHandler.sync(this); + switch (_input.LA(1)) { + case ISOLATION: + _localctx = new IsolationLevelContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(1785); + match(ISOLATION); + setState(1786); + match(LEVEL); + setState(1787); + levelOfIsolation(); + } + break; + case READ: + _localctx = new TransactionAccessModeContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(1788); + match(READ); + setState(1789); + ((TransactionAccessModeContext)_localctx).accessMode = _input.LT(1); + _la = _input.LA(1); + if ( !(_la==ONLY || _la==WRITE) ) { + ((TransactionAccessModeContext)_localctx).accessMode = (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 static class LevelOfIsolationContext extends ParserRuleContext { + public LevelOfIsolationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_levelOfIsolation; } + + public LevelOfIsolationContext() { } + public void copyFrom(LevelOfIsolationContext ctx) { + super.copyFrom(ctx); + } + } + public static class ReadUncommittedContext extends LevelOfIsolationContext { + public TerminalNode READ() { return getToken(PrestoSqlParser.READ, 0); } + public TerminalNode UNCOMMITTED() { return getToken(PrestoSqlParser.UNCOMMITTED, 0); } + public ReadUncommittedContext(LevelOfIsolationContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterReadUncommitted(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitReadUncommitted(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitReadUncommitted(this); + else return visitor.visitChildren(this); + } + } + public static class SerializableContext extends LevelOfIsolationContext { + public TerminalNode SERIALIZABLE() { return getToken(PrestoSqlParser.SERIALIZABLE, 0); } + public SerializableContext(LevelOfIsolationContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterSerializable(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitSerializable(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitSerializable(this); + else return visitor.visitChildren(this); + } + } + public static class ReadCommittedContext extends LevelOfIsolationContext { + public TerminalNode READ() { return getToken(PrestoSqlParser.READ, 0); } + public TerminalNode COMMITTED() { return getToken(PrestoSqlParser.COMMITTED, 0); } + public ReadCommittedContext(LevelOfIsolationContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterReadCommitted(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitReadCommitted(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitReadCommitted(this); + else return visitor.visitChildren(this); + } + } + public static class RepeatableReadContext extends LevelOfIsolationContext { + public TerminalNode REPEATABLE() { return getToken(PrestoSqlParser.REPEATABLE, 0); } + public TerminalNode READ() { return getToken(PrestoSqlParser.READ, 0); } + public RepeatableReadContext(LevelOfIsolationContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterRepeatableRead(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitRepeatableRead(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitRepeatableRead(this); + else return visitor.visitChildren(this); + } + } + + public final LevelOfIsolationContext levelOfIsolation() throws RecognitionException { + LevelOfIsolationContext _localctx = new LevelOfIsolationContext(_ctx, getState()); + enterRule(_localctx, 134, RULE_levelOfIsolation); + try { + setState(1799); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,229,_ctx) ) { + case 1: + _localctx = new ReadUncommittedContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(1792); + match(READ); + setState(1793); + match(UNCOMMITTED); + } + break; + case 2: + _localctx = new ReadCommittedContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(1794); + match(READ); + setState(1795); + match(COMMITTED); + } + break; + case 3: + _localctx = new RepeatableReadContext(_localctx); + enterOuterAlt(_localctx, 3); + { + setState(1796); + match(REPEATABLE); + setState(1797); + match(READ); + } + break; + case 4: + _localctx = new SerializableContext(_localctx); + enterOuterAlt(_localctx, 4); + { + setState(1798); + match(SERIALIZABLE); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class CallArgumentContext extends ParserRuleContext { + public CallArgumentContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_callArgument; } + + public CallArgumentContext() { } + public void copyFrom(CallArgumentContext ctx) { + super.copyFrom(ctx); + } + } + public static class PositionalArgumentContext extends CallArgumentContext { + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public PositionalArgumentContext(CallArgumentContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterPositionalArgument(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitPositionalArgument(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitPositionalArgument(this); + else return visitor.visitChildren(this); + } + } + public static class NamedArgumentContext extends CallArgumentContext { + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public NamedArgumentContext(CallArgumentContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterNamedArgument(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitNamedArgument(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitNamedArgument(this); + else return visitor.visitChildren(this); + } + } + + public final CallArgumentContext callArgument() throws RecognitionException { + CallArgumentContext _localctx = new CallArgumentContext(_ctx, getState()); + enterRule(_localctx, 136, RULE_callArgument); + try { + setState(1806); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,230,_ctx) ) { + case 1: + _localctx = new PositionalArgumentContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(1801); + expression(); + } + break; + case 2: + _localctx = new NamedArgumentContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(1802); + identifier(); + setState(1803); + match(T__8); + setState(1804); + expression(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class PrivilegeContext extends ParserRuleContext { + public TerminalNode SELECT() { return getToken(PrestoSqlParser.SELECT, 0); } + public TerminalNode DELETE() { return getToken(PrestoSqlParser.DELETE, 0); } + public TerminalNode INSERT() { return getToken(PrestoSqlParser.INSERT, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public PrivilegeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_privilege; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterPrivilege(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitPrivilege(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitPrivilege(this); + else return visitor.visitChildren(this); + } + } + + public final PrivilegeContext privilege() throws RecognitionException { + PrivilegeContext _localctx = new PrivilegeContext(_ctx, getState()); + enterRule(_localctx, 138, RULE_privilege); + try { + setState(1812); + _errHandler.sync(this); + switch (_input.LA(1)) { + case SELECT: + enterOuterAlt(_localctx, 1); + { + setState(1808); + match(SELECT); + } + break; + case DELETE: + enterOuterAlt(_localctx, 2); + { + setState(1809); + match(DELETE); + } + break; + case INSERT: + enterOuterAlt(_localctx, 3); + { + setState(1810); + match(INSERT); + } + break; + case ADD: + case ADMIN: + case ALL: + case ANALYZE: + case ANY: + case ARRAY: + case ASC: + case AT: + case BERNOULLI: + case CALL: + case CALLED: + case CASCADE: + case CATALOGS: + case COLUMN: + case COLUMNS: + case COMMENT: + case COMMIT: + case COMMITTED: + case CURRENT: + case CURRENT_ROLE: + case DATA: + case DATE: + case DAY: + case DEFINER: + case DESC: + case DETERMINISTIC: + case DISTRIBUTED: + case EXCLUDING: + case EXPLAIN: + case EXTERNAL: + case FILTER: + case FIRST: + case FOLLOWING: + case FORMAT: + case FUNCTION: + case FUNCTIONS: + case GRANT: + case GRANTED: + case GRANTS: + case GRAPHVIZ: + case HOUR: + case IF: + case IGNORE: + case INCLUDING: + case INPUT: + case INTERVAL: + case INVOKER: + case IO: + case ISOLATION: + case JSON: + case LANGUAGE: + case LAST: + case LATERAL: + case LEVEL: + case LIMIT: + case LOGICAL: + case MAP: + case MATERIALIZED: + case MINUTE: + case MONTH: + case NAME: + case NFC: + case NFD: + case NFKC: + case NFKD: + case NO: + case NONE: + case NULLIF: + case NULLS: + case OFFSET: + case ONLY: + case OPTION: + case ORDINALITY: + case OUTPUT: + case OVER: + case PARTITION: + case PARTITIONS: + case POSITION: + case PRECEDING: + case PRIVILEGES: + case PROPERTIES: + case RANGE: + case READ: + case REFRESH: + case RENAME: + case REPEATABLE: + case REPLACE: + case RESET: + case RESPECT: + case RESTRICT: + case RETURN: + case RETURNS: + case REVOKE: + case ROLE: + case ROLES: + case ROLLBACK: + case ROW: + case ROWS: + case SCHEMA: + case SCHEMAS: + case SECOND: + case SECURITY: + case SERIALIZABLE: + case SESSION: + case SET: + case SETS: + case SHOW: + case SOME: + case SQL: + case START: + case STATS: + case SUBSTRING: + case SYSTEM: + case TABLES: + case TABLESAMPLE: + case TEMPORARY: + case TEXT: + case TIME: + case TIMESTAMP: + case TO: + case TRANSACTION: + case TRY_CAST: + case TYPE: + case UNBOUNDED: + case UNCOMMITTED: + case USE: + case USER: + case VALIDATE: + case VERBOSE: + case VIEW: + case WORK: + case WRITE: + case YEAR: + case ZONE: + case IDENTIFIER: + case DIGIT_IDENTIFIER: + case QUOTED_IDENTIFIER: + case BACKQUOTED_IDENTIFIER: + enterOuterAlt(_localctx, 4); + { + setState(1811); + identifier(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class QualifiedNameContext extends ParserRuleContext { + public List identifier() { + return getRuleContexts(IdentifierContext.class); + } + public IdentifierContext identifier(int i) { + return getRuleContext(IdentifierContext.class,i); + } + public QualifiedNameContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_qualifiedName; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterQualifiedName(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitQualifiedName(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitQualifiedName(this); + else return visitor.visitChildren(this); + } + } + + public final QualifiedNameContext qualifiedName() throws RecognitionException { + QualifiedNameContext _localctx = new QualifiedNameContext(_ctx, getState()); + enterRule(_localctx, 140, RULE_qualifiedName); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(1814); + identifier(); + setState(1819); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,232,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(1815); + match(T__0); + setState(1816); + identifier(); + } + } + } + setState(1821); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,232,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class GrantorContext extends ParserRuleContext { + public GrantorContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_grantor; } + + public GrantorContext() { } + public void copyFrom(GrantorContext ctx) { + super.copyFrom(ctx); + } + } + public static class CurrentUserGrantorContext extends GrantorContext { + public TerminalNode CURRENT_USER() { return getToken(PrestoSqlParser.CURRENT_USER, 0); } + public CurrentUserGrantorContext(GrantorContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterCurrentUserGrantor(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitCurrentUserGrantor(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitCurrentUserGrantor(this); + else return visitor.visitChildren(this); + } + } + public static class SpecifiedPrincipalContext extends GrantorContext { + public PrincipalContext principal() { + return getRuleContext(PrincipalContext.class,0); + } + public SpecifiedPrincipalContext(GrantorContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterSpecifiedPrincipal(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitSpecifiedPrincipal(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitSpecifiedPrincipal(this); + else return visitor.visitChildren(this); + } + } + public static class CurrentRoleGrantorContext extends GrantorContext { + public TerminalNode CURRENT_ROLE() { return getToken(PrestoSqlParser.CURRENT_ROLE, 0); } + public CurrentRoleGrantorContext(GrantorContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterCurrentRoleGrantor(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitCurrentRoleGrantor(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitCurrentRoleGrantor(this); + else return visitor.visitChildren(this); + } + } + + public final GrantorContext grantor() throws RecognitionException { + GrantorContext _localctx = new GrantorContext(_ctx, getState()); + enterRule(_localctx, 142, RULE_grantor); + try { + setState(1825); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,233,_ctx) ) { + case 1: + _localctx = new CurrentUserGrantorContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(1822); + match(CURRENT_USER); + } + break; + case 2: + _localctx = new CurrentRoleGrantorContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(1823); + match(CURRENT_ROLE); + } + break; + case 3: + _localctx = new SpecifiedPrincipalContext(_localctx); + enterOuterAlt(_localctx, 3); + { + setState(1824); + principal(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class PrincipalContext extends ParserRuleContext { + public PrincipalContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_principal; } + + public PrincipalContext() { } + public void copyFrom(PrincipalContext ctx) { + super.copyFrom(ctx); + } + } + public static class UnspecifiedPrincipalContext extends PrincipalContext { + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public UnspecifiedPrincipalContext(PrincipalContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterUnspecifiedPrincipal(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitUnspecifiedPrincipal(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitUnspecifiedPrincipal(this); + else return visitor.visitChildren(this); + } + } + public static class UserPrincipalContext extends PrincipalContext { + public TerminalNode USER() { return getToken(PrestoSqlParser.USER, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public UserPrincipalContext(PrincipalContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterUserPrincipal(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitUserPrincipal(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitUserPrincipal(this); + else return visitor.visitChildren(this); + } + } + public static class RolePrincipalContext extends PrincipalContext { + public TerminalNode ROLE() { return getToken(PrestoSqlParser.ROLE, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public RolePrincipalContext(PrincipalContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterRolePrincipal(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitRolePrincipal(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitRolePrincipal(this); + else return visitor.visitChildren(this); + } + } + + public final PrincipalContext principal() throws RecognitionException { + PrincipalContext _localctx = new PrincipalContext(_ctx, getState()); + enterRule(_localctx, 144, RULE_principal); + try { + setState(1832); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,234,_ctx) ) { + case 1: + _localctx = new UserPrincipalContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(1827); + match(USER); + setState(1828); + identifier(); + } + break; + case 2: + _localctx = new RolePrincipalContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(1829); + match(ROLE); + setState(1830); + identifier(); + } + break; + case 3: + _localctx = new UnspecifiedPrincipalContext(_localctx); + enterOuterAlt(_localctx, 3); + { + setState(1831); + identifier(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class RolesContext extends ParserRuleContext { + public List identifier() { + return getRuleContexts(IdentifierContext.class); + } + public IdentifierContext identifier(int i) { + return getRuleContext(IdentifierContext.class,i); + } + public RolesContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_roles; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterRoles(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitRoles(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitRoles(this); + else return visitor.visitChildren(this); + } + } + + public final RolesContext roles() throws RecognitionException { + RolesContext _localctx = new RolesContext(_ctx, getState()); + enterRule(_localctx, 146, RULE_roles); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1834); + identifier(); + setState(1839); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__3) { + { + { + setState(1835); + match(T__3); + setState(1836); + identifier(); + } + } + setState(1841); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class IdentifierContext extends ParserRuleContext { + public IdentifierContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_identifier; } + + public IdentifierContext() { } + public void copyFrom(IdentifierContext ctx) { + super.copyFrom(ctx); + } + } + public static class BackQuotedIdentifierContext extends IdentifierContext { + public TerminalNode BACKQUOTED_IDENTIFIER() { return getToken(PrestoSqlParser.BACKQUOTED_IDENTIFIER, 0); } + public BackQuotedIdentifierContext(IdentifierContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterBackQuotedIdentifier(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitBackQuotedIdentifier(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitBackQuotedIdentifier(this); + else return visitor.visitChildren(this); + } + } + public static class QuotedIdentifierContext extends IdentifierContext { + public TerminalNode QUOTED_IDENTIFIER() { return getToken(PrestoSqlParser.QUOTED_IDENTIFIER, 0); } + public QuotedIdentifierContext(IdentifierContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterQuotedIdentifier(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitQuotedIdentifier(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitQuotedIdentifier(this); + else return visitor.visitChildren(this); + } + } + public static class DigitIdentifierContext extends IdentifierContext { + public TerminalNode DIGIT_IDENTIFIER() { return getToken(PrestoSqlParser.DIGIT_IDENTIFIER, 0); } + public DigitIdentifierContext(IdentifierContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterDigitIdentifier(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitDigitIdentifier(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitDigitIdentifier(this); + else return visitor.visitChildren(this); + } + } + public static class UnquotedIdentifierContext extends IdentifierContext { + public TerminalNode IDENTIFIER() { return getToken(PrestoSqlParser.IDENTIFIER, 0); } + public NonReservedContext nonReserved() { + return getRuleContext(NonReservedContext.class,0); + } + public UnquotedIdentifierContext(IdentifierContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterUnquotedIdentifier(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitUnquotedIdentifier(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitUnquotedIdentifier(this); + else return visitor.visitChildren(this); + } + } + + public final IdentifierContext identifier() throws RecognitionException { + IdentifierContext _localctx = new IdentifierContext(_ctx, getState()); + enterRule(_localctx, 148, RULE_identifier); + try { + setState(1847); + _errHandler.sync(this); + switch (_input.LA(1)) { + case IDENTIFIER: + _localctx = new UnquotedIdentifierContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(1842); + match(IDENTIFIER); + } + break; + case QUOTED_IDENTIFIER: + _localctx = new QuotedIdentifierContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(1843); + match(QUOTED_IDENTIFIER); + } + break; + case ADD: + case ADMIN: + case ALL: + case ANALYZE: + case ANY: + case ARRAY: + case ASC: + case AT: + case BERNOULLI: + case CALL: + case CALLED: + case CASCADE: + case CATALOGS: + case COLUMN: + case COLUMNS: + case COMMENT: + case COMMIT: + case COMMITTED: + case CURRENT: + case CURRENT_ROLE: + case DATA: + case DATE: + case DAY: + case DEFINER: + case DESC: + case DETERMINISTIC: + case DISTRIBUTED: + case EXCLUDING: + case EXPLAIN: + case EXTERNAL: + case FILTER: + case FIRST: + case FOLLOWING: + case FORMAT: + case FUNCTION: + case FUNCTIONS: + case GRANT: + case GRANTED: + case GRANTS: + case GRAPHVIZ: + case HOUR: + case IF: + case IGNORE: + case INCLUDING: + case INPUT: + case INTERVAL: + case INVOKER: + case IO: + case ISOLATION: + case JSON: + case LANGUAGE: + case LAST: + case LATERAL: + case LEVEL: + case LIMIT: + case LOGICAL: + case MAP: + case MATERIALIZED: + case MINUTE: + case MONTH: + case NAME: + case NFC: + case NFD: + case NFKC: + case NFKD: + case NO: + case NONE: + case NULLIF: + case NULLS: + case OFFSET: + case ONLY: + case OPTION: + case ORDINALITY: + case OUTPUT: + case OVER: + case PARTITION: + case PARTITIONS: + case POSITION: + case PRECEDING: + case PRIVILEGES: + case PROPERTIES: + case RANGE: + case READ: + case REFRESH: + case RENAME: + case REPEATABLE: + case REPLACE: + case RESET: + case RESPECT: + case RESTRICT: + case RETURN: + case RETURNS: + case REVOKE: + case ROLE: + case ROLES: + case ROLLBACK: + case ROW: + case ROWS: + case SCHEMA: + case SCHEMAS: + case SECOND: + case SECURITY: + case SERIALIZABLE: + case SESSION: + case SET: + case SETS: + case SHOW: + case SOME: + case SQL: + case START: + case STATS: + case SUBSTRING: + case SYSTEM: + case TABLES: + case TABLESAMPLE: + case TEMPORARY: + case TEXT: + case TIME: + case TIMESTAMP: + case TO: + case TRANSACTION: + case TRY_CAST: + case TYPE: + case UNBOUNDED: + case UNCOMMITTED: + case USE: + case USER: + case VALIDATE: + case VERBOSE: + case VIEW: + case WORK: + case WRITE: + case YEAR: + case ZONE: + _localctx = new UnquotedIdentifierContext(_localctx); + enterOuterAlt(_localctx, 3); + { + setState(1844); + nonReserved(); + } + break; + case BACKQUOTED_IDENTIFIER: + _localctx = new BackQuotedIdentifierContext(_localctx); + enterOuterAlt(_localctx, 4); + { + setState(1845); + match(BACKQUOTED_IDENTIFIER); + } + break; + case DIGIT_IDENTIFIER: + _localctx = new DigitIdentifierContext(_localctx); + enterOuterAlt(_localctx, 5); + { + setState(1846); + match(DIGIT_IDENTIFIER); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class NumberContext extends ParserRuleContext { + public NumberContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_number; } + + public NumberContext() { } + public void copyFrom(NumberContext ctx) { + super.copyFrom(ctx); + } + } + public static class DecimalLiteralContext extends NumberContext { + public TerminalNode DECIMAL_VALUE() { return getToken(PrestoSqlParser.DECIMAL_VALUE, 0); } + public DecimalLiteralContext(NumberContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterDecimalLiteral(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitDecimalLiteral(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitDecimalLiteral(this); + else return visitor.visitChildren(this); + } + } + public static class DoubleLiteralContext extends NumberContext { + public TerminalNode DOUBLE_VALUE() { return getToken(PrestoSqlParser.DOUBLE_VALUE, 0); } + public DoubleLiteralContext(NumberContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterDoubleLiteral(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitDoubleLiteral(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitDoubleLiteral(this); + else return visitor.visitChildren(this); + } + } + public static class IntegerLiteralContext extends NumberContext { + public TerminalNode INTEGER_VALUE() { return getToken(PrestoSqlParser.INTEGER_VALUE, 0); } + public IntegerLiteralContext(NumberContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterIntegerLiteral(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitIntegerLiteral(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitIntegerLiteral(this); + else return visitor.visitChildren(this); + } + } + + public final NumberContext number() throws RecognitionException { + NumberContext _localctx = new NumberContext(_ctx, getState()); + enterRule(_localctx, 150, RULE_number); + try { + setState(1852); + _errHandler.sync(this); + switch (_input.LA(1)) { + case DECIMAL_VALUE: + _localctx = new DecimalLiteralContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(1849); + match(DECIMAL_VALUE); + } + break; + case DOUBLE_VALUE: + _localctx = new DoubleLiteralContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(1850); + match(DOUBLE_VALUE); + } + break; + case INTEGER_VALUE: + _localctx = new IntegerLiteralContext(_localctx); + enterOuterAlt(_localctx, 3); + { + setState(1851); + match(INTEGER_VALUE); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class NonReservedContext extends ParserRuleContext { + public TerminalNode ADD() { return getToken(PrestoSqlParser.ADD, 0); } + public TerminalNode ADMIN() { return getToken(PrestoSqlParser.ADMIN, 0); } + public TerminalNode ALL() { return getToken(PrestoSqlParser.ALL, 0); } + public TerminalNode ANALYZE() { return getToken(PrestoSqlParser.ANALYZE, 0); } + public TerminalNode ANY() { return getToken(PrestoSqlParser.ANY, 0); } + public TerminalNode ARRAY() { return getToken(PrestoSqlParser.ARRAY, 0); } + public TerminalNode ASC() { return getToken(PrestoSqlParser.ASC, 0); } + public TerminalNode AT() { return getToken(PrestoSqlParser.AT, 0); } + public TerminalNode BERNOULLI() { return getToken(PrestoSqlParser.BERNOULLI, 0); } + public TerminalNode CALL() { return getToken(PrestoSqlParser.CALL, 0); } + public TerminalNode CALLED() { return getToken(PrestoSqlParser.CALLED, 0); } + public TerminalNode CASCADE() { return getToken(PrestoSqlParser.CASCADE, 0); } + public TerminalNode CATALOGS() { return getToken(PrestoSqlParser.CATALOGS, 0); } + public TerminalNode COLUMN() { return getToken(PrestoSqlParser.COLUMN, 0); } + public TerminalNode COLUMNS() { return getToken(PrestoSqlParser.COLUMNS, 0); } + public TerminalNode COMMENT() { return getToken(PrestoSqlParser.COMMENT, 0); } + public TerminalNode COMMIT() { return getToken(PrestoSqlParser.COMMIT, 0); } + public TerminalNode COMMITTED() { return getToken(PrestoSqlParser.COMMITTED, 0); } + public TerminalNode CURRENT() { return getToken(PrestoSqlParser.CURRENT, 0); } + public TerminalNode CURRENT_ROLE() { return getToken(PrestoSqlParser.CURRENT_ROLE, 0); } + public TerminalNode DATA() { return getToken(PrestoSqlParser.DATA, 0); } + public TerminalNode DATE() { return getToken(PrestoSqlParser.DATE, 0); } + public TerminalNode DAY() { return getToken(PrestoSqlParser.DAY, 0); } + public TerminalNode DEFINER() { return getToken(PrestoSqlParser.DEFINER, 0); } + public TerminalNode DESC() { return getToken(PrestoSqlParser.DESC, 0); } + public TerminalNode DETERMINISTIC() { return getToken(PrestoSqlParser.DETERMINISTIC, 0); } + public TerminalNode DISTRIBUTED() { return getToken(PrestoSqlParser.DISTRIBUTED, 0); } + public TerminalNode EXCLUDING() { return getToken(PrestoSqlParser.EXCLUDING, 0); } + public TerminalNode EXPLAIN() { return getToken(PrestoSqlParser.EXPLAIN, 0); } + public TerminalNode EXTERNAL() { return getToken(PrestoSqlParser.EXTERNAL, 0); } + public TerminalNode FILTER() { return getToken(PrestoSqlParser.FILTER, 0); } + public TerminalNode FIRST() { return getToken(PrestoSqlParser.FIRST, 0); } + public TerminalNode FOLLOWING() { return getToken(PrestoSqlParser.FOLLOWING, 0); } + public TerminalNode FORMAT() { return getToken(PrestoSqlParser.FORMAT, 0); } + public TerminalNode FUNCTION() { return getToken(PrestoSqlParser.FUNCTION, 0); } + public TerminalNode FUNCTIONS() { return getToken(PrestoSqlParser.FUNCTIONS, 0); } + public TerminalNode GRANT() { return getToken(PrestoSqlParser.GRANT, 0); } + public TerminalNode GRANTED() { return getToken(PrestoSqlParser.GRANTED, 0); } + public TerminalNode GRANTS() { return getToken(PrestoSqlParser.GRANTS, 0); } + public TerminalNode GRAPHVIZ() { return getToken(PrestoSqlParser.GRAPHVIZ, 0); } + public TerminalNode HOUR() { return getToken(PrestoSqlParser.HOUR, 0); } + public TerminalNode IF() { return getToken(PrestoSqlParser.IF, 0); } + public TerminalNode IGNORE() { return getToken(PrestoSqlParser.IGNORE, 0); } + public TerminalNode INCLUDING() { return getToken(PrestoSqlParser.INCLUDING, 0); } + public TerminalNode INPUT() { return getToken(PrestoSqlParser.INPUT, 0); } + public TerminalNode INTERVAL() { return getToken(PrestoSqlParser.INTERVAL, 0); } + public TerminalNode INVOKER() { return getToken(PrestoSqlParser.INVOKER, 0); } + public TerminalNode IO() { return getToken(PrestoSqlParser.IO, 0); } + public TerminalNode ISOLATION() { return getToken(PrestoSqlParser.ISOLATION, 0); } + public TerminalNode JSON() { return getToken(PrestoSqlParser.JSON, 0); } + public TerminalNode LANGUAGE() { return getToken(PrestoSqlParser.LANGUAGE, 0); } + public TerminalNode LAST() { return getToken(PrestoSqlParser.LAST, 0); } + public TerminalNode LATERAL() { return getToken(PrestoSqlParser.LATERAL, 0); } + public TerminalNode LEVEL() { return getToken(PrestoSqlParser.LEVEL, 0); } + public TerminalNode LIMIT() { return getToken(PrestoSqlParser.LIMIT, 0); } + public TerminalNode LOGICAL() { return getToken(PrestoSqlParser.LOGICAL, 0); } + public TerminalNode MAP() { return getToken(PrestoSqlParser.MAP, 0); } + public TerminalNode MATERIALIZED() { return getToken(PrestoSqlParser.MATERIALIZED, 0); } + public TerminalNode MINUTE() { return getToken(PrestoSqlParser.MINUTE, 0); } + public TerminalNode MONTH() { return getToken(PrestoSqlParser.MONTH, 0); } + public TerminalNode NAME() { return getToken(PrestoSqlParser.NAME, 0); } + public TerminalNode NFC() { return getToken(PrestoSqlParser.NFC, 0); } + public TerminalNode NFD() { return getToken(PrestoSqlParser.NFD, 0); } + public TerminalNode NFKC() { return getToken(PrestoSqlParser.NFKC, 0); } + public TerminalNode NFKD() { return getToken(PrestoSqlParser.NFKD, 0); } + public TerminalNode NO() { return getToken(PrestoSqlParser.NO, 0); } + public TerminalNode NONE() { return getToken(PrestoSqlParser.NONE, 0); } + public TerminalNode NULLIF() { return getToken(PrestoSqlParser.NULLIF, 0); } + public TerminalNode NULLS() { return getToken(PrestoSqlParser.NULLS, 0); } + public TerminalNode OFFSET() { return getToken(PrestoSqlParser.OFFSET, 0); } + public TerminalNode ONLY() { return getToken(PrestoSqlParser.ONLY, 0); } + public TerminalNode OPTION() { return getToken(PrestoSqlParser.OPTION, 0); } + public TerminalNode ORDINALITY() { return getToken(PrestoSqlParser.ORDINALITY, 0); } + public TerminalNode OUTPUT() { return getToken(PrestoSqlParser.OUTPUT, 0); } + public TerminalNode OVER() { return getToken(PrestoSqlParser.OVER, 0); } + public TerminalNode PARTITION() { return getToken(PrestoSqlParser.PARTITION, 0); } + public TerminalNode PARTITIONS() { return getToken(PrestoSqlParser.PARTITIONS, 0); } + public TerminalNode POSITION() { return getToken(PrestoSqlParser.POSITION, 0); } + public TerminalNode PRECEDING() { return getToken(PrestoSqlParser.PRECEDING, 0); } + public TerminalNode PRIVILEGES() { return getToken(PrestoSqlParser.PRIVILEGES, 0); } + public TerminalNode PROPERTIES() { return getToken(PrestoSqlParser.PROPERTIES, 0); } + public TerminalNode RANGE() { return getToken(PrestoSqlParser.RANGE, 0); } + public TerminalNode READ() { return getToken(PrestoSqlParser.READ, 0); } + public TerminalNode REFRESH() { return getToken(PrestoSqlParser.REFRESH, 0); } + public TerminalNode RENAME() { return getToken(PrestoSqlParser.RENAME, 0); } + public TerminalNode REPEATABLE() { return getToken(PrestoSqlParser.REPEATABLE, 0); } + public TerminalNode REPLACE() { return getToken(PrestoSqlParser.REPLACE, 0); } + public TerminalNode RESET() { return getToken(PrestoSqlParser.RESET, 0); } + public TerminalNode RESPECT() { return getToken(PrestoSqlParser.RESPECT, 0); } + public TerminalNode RESTRICT() { return getToken(PrestoSqlParser.RESTRICT, 0); } + public TerminalNode RETURN() { return getToken(PrestoSqlParser.RETURN, 0); } + public TerminalNode RETURNS() { return getToken(PrestoSqlParser.RETURNS, 0); } + public TerminalNode REVOKE() { return getToken(PrestoSqlParser.REVOKE, 0); } + public TerminalNode ROLE() { return getToken(PrestoSqlParser.ROLE, 0); } + public TerminalNode ROLES() { return getToken(PrestoSqlParser.ROLES, 0); } + public TerminalNode ROLLBACK() { return getToken(PrestoSqlParser.ROLLBACK, 0); } + public TerminalNode ROW() { return getToken(PrestoSqlParser.ROW, 0); } + public TerminalNode ROWS() { return getToken(PrestoSqlParser.ROWS, 0); } + public TerminalNode SCHEMA() { return getToken(PrestoSqlParser.SCHEMA, 0); } + public TerminalNode SCHEMAS() { return getToken(PrestoSqlParser.SCHEMAS, 0); } + public TerminalNode SECOND() { return getToken(PrestoSqlParser.SECOND, 0); } + public TerminalNode SECURITY() { return getToken(PrestoSqlParser.SECURITY, 0); } + public TerminalNode SERIALIZABLE() { return getToken(PrestoSqlParser.SERIALIZABLE, 0); } + public TerminalNode SESSION() { return getToken(PrestoSqlParser.SESSION, 0); } + public TerminalNode SET() { return getToken(PrestoSqlParser.SET, 0); } + public TerminalNode SETS() { return getToken(PrestoSqlParser.SETS, 0); } + public TerminalNode SQL() { return getToken(PrestoSqlParser.SQL, 0); } + public TerminalNode SHOW() { return getToken(PrestoSqlParser.SHOW, 0); } + public TerminalNode SOME() { return getToken(PrestoSqlParser.SOME, 0); } + public TerminalNode START() { return getToken(PrestoSqlParser.START, 0); } + public TerminalNode STATS() { return getToken(PrestoSqlParser.STATS, 0); } + public TerminalNode SUBSTRING() { return getToken(PrestoSqlParser.SUBSTRING, 0); } + public TerminalNode SYSTEM() { return getToken(PrestoSqlParser.SYSTEM, 0); } + public TerminalNode TABLES() { return getToken(PrestoSqlParser.TABLES, 0); } + public TerminalNode TABLESAMPLE() { return getToken(PrestoSqlParser.TABLESAMPLE, 0); } + public TerminalNode TEMPORARY() { return getToken(PrestoSqlParser.TEMPORARY, 0); } + public TerminalNode TEXT() { return getToken(PrestoSqlParser.TEXT, 0); } + public TerminalNode TIME() { return getToken(PrestoSqlParser.TIME, 0); } + public TerminalNode TIMESTAMP() { return getToken(PrestoSqlParser.TIMESTAMP, 0); } + public TerminalNode TO() { return getToken(PrestoSqlParser.TO, 0); } + public TerminalNode TRANSACTION() { return getToken(PrestoSqlParser.TRANSACTION, 0); } + public TerminalNode TRY_CAST() { return getToken(PrestoSqlParser.TRY_CAST, 0); } + public TerminalNode TYPE() { return getToken(PrestoSqlParser.TYPE, 0); } + public TerminalNode UNBOUNDED() { return getToken(PrestoSqlParser.UNBOUNDED, 0); } + public TerminalNode UNCOMMITTED() { return getToken(PrestoSqlParser.UNCOMMITTED, 0); } + public TerminalNode USE() { return getToken(PrestoSqlParser.USE, 0); } + public TerminalNode USER() { return getToken(PrestoSqlParser.USER, 0); } + public TerminalNode VALIDATE() { return getToken(PrestoSqlParser.VALIDATE, 0); } + public TerminalNode VERBOSE() { return getToken(PrestoSqlParser.VERBOSE, 0); } + public TerminalNode VIEW() { return getToken(PrestoSqlParser.VIEW, 0); } + public TerminalNode WORK() { return getToken(PrestoSqlParser.WORK, 0); } + public TerminalNode WRITE() { return getToken(PrestoSqlParser.WRITE, 0); } + public TerminalNode YEAR() { return getToken(PrestoSqlParser.YEAR, 0); } + public TerminalNode ZONE() { return getToken(PrestoSqlParser.ZONE, 0); } + public NonReservedContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_nonReserved; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).enterNonReserved(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PrestoSqlListener ) ((PrestoSqlListener)listener).exitNonReserved(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PrestoSqlVisitor ) return ((PrestoSqlVisitor)visitor).visitNonReserved(this); + else return visitor.visitChildren(this); + } + } + + public final NonReservedContext nonReserved() throws RecognitionException { + NonReservedContext _localctx = new NonReservedContext(_ctx, getState()); + enterRule(_localctx, 152, RULE_nonReserved); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1854); + _la = _input.LA(1); + if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ADD) | (1L << ADMIN) | (1L << ALL) | (1L << ANALYZE) | (1L << ANY) | (1L << ARRAY) | (1L << ASC) | (1L << AT) | (1L << BERNOULLI) | (1L << CALL) | (1L << CALLED) | (1L << CASCADE) | (1L << CATALOGS) | (1L << COLUMN) | (1L << COLUMNS) | (1L << COMMENT) | (1L << COMMIT) | (1L << COMMITTED) | (1L << CURRENT) | (1L << CURRENT_ROLE) | (1L << DATA) | (1L << DATE) | (1L << DAY) | (1L << DEFINER) | (1L << DESC) | (1L << DETERMINISTIC) | (1L << DISTRIBUTED) | (1L << EXCLUDING))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (EXPLAIN - 64)) | (1L << (EXTERNAL - 64)) | (1L << (FILTER - 64)) | (1L << (FIRST - 64)) | (1L << (FOLLOWING - 64)) | (1L << (FORMAT - 64)) | (1L << (FUNCTION - 64)) | (1L << (FUNCTIONS - 64)) | (1L << (GRANT - 64)) | (1L << (GRANTED - 64)) | (1L << (GRANTS - 64)) | (1L << (GRAPHVIZ - 64)) | (1L << (HOUR - 64)) | (1L << (IF - 64)) | (1L << (IGNORE - 64)) | (1L << (INCLUDING - 64)) | (1L << (INPUT - 64)) | (1L << (INTERVAL - 64)) | (1L << (INVOKER - 64)) | (1L << (IO - 64)) | (1L << (ISOLATION - 64)) | (1L << (JSON - 64)) | (1L << (LANGUAGE - 64)) | (1L << (LAST - 64)) | (1L << (LATERAL - 64)) | (1L << (LEVEL - 64)) | (1L << (LIMIT - 64)) | (1L << (LOGICAL - 64)) | (1L << (MAP - 64)) | (1L << (MATERIALIZED - 64)) | (1L << (MINUTE - 64)) | (1L << (MONTH - 64)) | (1L << (NAME - 64)) | (1L << (NFC - 64)) | (1L << (NFD - 64)) | (1L << (NFKC - 64)) | (1L << (NFKD - 64)) | (1L << (NO - 64)) | (1L << (NONE - 64)) | (1L << (NULLIF - 64)) | (1L << (NULLS - 64)))) != 0) || ((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & ((1L << (OFFSET - 128)) | (1L << (ONLY - 128)) | (1L << (OPTION - 128)) | (1L << (ORDINALITY - 128)) | (1L << (OUTPUT - 128)) | (1L << (OVER - 128)) | (1L << (PARTITION - 128)) | (1L << (PARTITIONS - 128)) | (1L << (POSITION - 128)) | (1L << (PRECEDING - 128)) | (1L << (PRIVILEGES - 128)) | (1L << (PROPERTIES - 128)) | (1L << (RANGE - 128)) | (1L << (READ - 128)) | (1L << (REFRESH - 128)) | (1L << (RENAME - 128)) | (1L << (REPEATABLE - 128)) | (1L << (REPLACE - 128)) | (1L << (RESET - 128)) | (1L << (RESPECT - 128)) | (1L << (RESTRICT - 128)) | (1L << (RETURN - 128)) | (1L << (RETURNS - 128)) | (1L << (REVOKE - 128)) | (1L << (ROLE - 128)) | (1L << (ROLES - 128)) | (1L << (ROLLBACK - 128)) | (1L << (ROW - 128)) | (1L << (ROWS - 128)) | (1L << (SCHEMA - 128)) | (1L << (SCHEMAS - 128)) | (1L << (SECOND - 128)) | (1L << (SECURITY - 128)) | (1L << (SERIALIZABLE - 128)) | (1L << (SESSION - 128)) | (1L << (SET - 128)) | (1L << (SETS - 128)) | (1L << (SHOW - 128)) | (1L << (SOME - 128)) | (1L << (SQL - 128)) | (1L << (START - 128)) | (1L << (STATS - 128)) | (1L << (SUBSTRING - 128)) | (1L << (SYSTEM - 128)) | (1L << (TABLES - 128)) | (1L << (TABLESAMPLE - 128)) | (1L << (TEMPORARY - 128)) | (1L << (TEXT - 128)) | (1L << (TIME - 128)) | (1L << (TIMESTAMP - 128)) | (1L << (TO - 128)) | (1L << (TRANSACTION - 128)))) != 0) || ((((_la - 192)) & ~0x3f) == 0 && ((1L << (_la - 192)) & ((1L << (TRY_CAST - 192)) | (1L << (TYPE - 192)) | (1L << (UNBOUNDED - 192)) | (1L << (UNCOMMITTED - 192)) | (1L << (USE - 192)) | (1L << (USER - 192)) | (1L << (VALIDATE - 192)) | (1L << (VERBOSE - 192)) | (1L << (VIEW - 192)) | (1L << (WORK - 192)) | (1L << (WRITE - 192)) | (1L << (YEAR - 192)) | (1L << (ZONE - 192)))) != 0)) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) { + switch (ruleIndex) { + case 24: + return queryTerm_sempred((QueryTermContext)_localctx, predIndex); + case 34: + return relation_sempred((RelationContext)_localctx, predIndex); + case 43: + return booleanExpression_sempred((BooleanExpressionContext)_localctx, predIndex); + case 45: + return valueExpression_sempred((ValueExpressionContext)_localctx, predIndex); + case 46: + return primaryExpression_sempred((PrimaryExpressionContext)_localctx, predIndex); + case 57: + return type_sempred((TypeContext)_localctx, predIndex); + } + return true; + } + private boolean queryTerm_sempred(QueryTermContext _localctx, int predIndex) { + switch (predIndex) { + case 0: + return precpred(_ctx, 2); + case 1: + return precpred(_ctx, 1); + } + return true; + } + private boolean relation_sempred(RelationContext _localctx, int predIndex) { + switch (predIndex) { + case 2: + return precpred(_ctx, 2); + } + return true; + } + private boolean booleanExpression_sempred(BooleanExpressionContext _localctx, int predIndex) { + switch (predIndex) { + case 3: + return precpred(_ctx, 2); + case 4: + return precpred(_ctx, 1); + } + return true; + } + private boolean valueExpression_sempred(ValueExpressionContext _localctx, int predIndex) { + switch (predIndex) { + case 5: + return precpred(_ctx, 3); + case 6: + return precpred(_ctx, 2); + case 7: + return precpred(_ctx, 1); + case 8: + return precpred(_ctx, 5); + } + return true; + } + private boolean primaryExpression_sempred(PrimaryExpressionContext _localctx, int predIndex) { + switch (predIndex) { + case 9: + return precpred(_ctx, 14); + case 10: + return precpred(_ctx, 12); + } + return true; + } + private boolean type_sempred(TypeContext _localctx, int predIndex) { + switch (predIndex) { + case 11: + return precpred(_ctx, 6); + } + return true; + } + + public static final String _serializedATN = + "\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3\u00f4\u0743\4\2\t"+ + "\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13"+ + "\t\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22"+ + "\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31\t\31"+ + "\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36\t\36\4\37\t\37\4 \t \4!"+ + "\t!\4\"\t\"\4#\t#\4$\t$\4%\t%\4&\t&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t+\4"+ + ",\t,\4-\t-\4.\t.\4/\t/\4\60\t\60\4\61\t\61\4\62\t\62\4\63\t\63\4\64\t"+ + "\64\4\65\t\65\4\66\t\66\4\67\t\67\48\t8\49\t9\4:\t:\4;\t;\4<\t<\4=\t="+ + "\4>\t>\4?\t?\4@\t@\4A\tA\4B\tB\4C\tC\4D\tD\4E\tE\4F\tF\4G\tG\4H\tH\4I"+ + "\tI\4J\tJ\4K\tK\4L\tL\4M\tM\4N\tN\3\2\3\2\3\2\3\3\3\3\3\3\3\4\3\4\3\4"+ + "\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\5\5\u00b3\n\5\3\5"+ + "\3\5\3\5\5\5\u00b8\n\5\3\5\3\5\3\5\3\5\5\5\u00be\n\5\3\5\3\5\5\5\u00c2"+ + "\n\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\5\5\u00d0\n\5\3\5"+ + "\3\5\5\5\u00d4\n\5\3\5\3\5\5\5\u00d8\n\5\3\5\3\5\5\5\u00dc\n\5\3\5\3\5"+ + "\3\5\3\5\3\5\3\5\5\5\u00e4\n\5\3\5\3\5\5\5\u00e8\n\5\3\5\5\5\u00eb\n\5"+ + "\3\5\3\5\3\5\3\5\3\5\5\5\u00f2\n\5\3\5\3\5\3\5\3\5\3\5\7\5\u00f9\n\5\f"+ + "\5\16\5\u00fc\13\5\3\5\3\5\3\5\5\5\u0101\n\5\3\5\3\5\5\5\u0105\n\5\3\5"+ + "\3\5\3\5\3\5\5\5\u010b\n\5\3\5\3\5\3\5\3\5\3\5\5\5\u0112\n\5\3\5\3\5\3"+ + "\5\3\5\3\5\3\5\3\5\5\5\u011b\n\5\3\5\3\5\3\5\3\5\5\5\u0121\n\5\3\5\3\5"+ + "\3\5\3\5\3\5\3\5\3\5\3\5\3\5\5\5\u012c\n\5\3\5\3\5\3\5\3\5\3\5\5\5\u0133"+ + "\n\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\5\5\u013d\n\5\3\5\3\5\3\5\3\5\3\5"+ + "\5\5\u0144\n\5\3\5\3\5\3\5\3\5\3\5\3\5\5\5\u014c\n\5\3\5\3\5\3\5\3\5\3"+ + "\5\3\5\5\5\u0154\n\5\3\5\3\5\3\5\3\5\3\5\3\5\5\5\u015c\n\5\3\5\3\5\3\5"+ + "\3\5\3\5\3\5\3\5\3\5\7\5\u0166\n\5\f\5\16\5\u0169\13\5\3\5\3\5\3\5\5\5"+ + "\u016e\n\5\3\5\3\5\3\5\5\5\u0173\n\5\3\5\3\5\3\5\3\5\5\5\u0179\n\5\3\5"+ + "\3\5\3\5\3\5\3\5\3\5\3\5\5\5\u0182\n\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\5\5"+ + "\u018b\n\5\3\5\3\5\3\5\5\5\u0190\n\5\3\5\3\5\5\5\u0194\n\5\3\5\3\5\3\5"+ + "\3\5\3\5\3\5\5\5\u019c\n\5\3\5\3\5\3\5\3\5\3\5\5\5\u01a3\n\5\3\5\3\5\3"+ + "\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\5\5\u01b0\n\5\3\5\5\5\u01b3\n\5\3\5"+ + "\3\5\3\5\3\5\3\5\3\5\7\5\u01bb\n\5\f\5\16\5\u01be\13\5\5\5\u01c0\n\5\3"+ + "\5\3\5\3\5\3\5\3\5\5\5\u01c7\n\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\5\5\u01d0"+ + "\n\5\3\5\3\5\3\5\3\5\5\5\u01d6\n\5\3\5\3\5\3\5\5\5\u01db\n\5\3\5\3\5\5"+ + "\5\u01df\n\5\3\5\3\5\3\5\3\5\3\5\3\5\7\5\u01e7\n\5\f\5\16\5\u01ea\13\5"+ + "\5\5\u01ec\n\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\5\5\u01f6\n\5\3\5\3\5\3"+ + "\5\3\5\3\5\3\5\3\5\3\5\3\5\7\5\u0201\n\5\f\5\16\5\u0204\13\5\3\5\3\5\3"+ + "\5\5\5\u0209\n\5\3\5\3\5\3\5\5\5\u020e\n\5\3\5\3\5\3\5\3\5\5\5\u0214\n"+ + "\5\3\5\3\5\3\5\3\5\3\5\7\5\u021b\n\5\f\5\16\5\u021e\13\5\3\5\3\5\3\5\5"+ + "\5\u0223\n\5\3\5\3\5\3\5\3\5\3\5\5\5\u022a\n\5\3\5\3\5\3\5\3\5\7\5\u0230"+ + "\n\5\f\5\16\5\u0233\13\5\3\5\3\5\5\5\u0237\n\5\3\5\3\5\5\5\u023b\n\5\3"+ + "\5\3\5\3\5\3\5\3\5\3\5\5\5\u0243\n\5\3\5\3\5\3\5\3\5\5\5\u0249\n\5\3\5"+ + "\3\5\3\5\7\5\u024e\n\5\f\5\16\5\u0251\13\5\3\5\3\5\5\5\u0255\n\5\3\5\3"+ + "\5\5\5\u0259\n\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\5\5\u0263\n\5\3\5\5\5"+ + "\u0266\n\5\3\5\3\5\5\5\u026a\n\5\3\5\5\5\u026d\n\5\3\5\3\5\3\5\3\5\7\5"+ + "\u0273\n\5\f\5\16\5\u0276\13\5\3\5\3\5\5\5\u027a\n\5\3\5\3\5\3\5\3\5\3"+ + "\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\5\5\u028f\n"+ + "\5\3\5\3\5\3\5\3\5\5\5\u0295\n\5\3\5\3\5\3\5\3\5\5\5\u029b\n\5\5\5\u029d"+ + "\n\5\3\5\3\5\3\5\3\5\5\5\u02a3\n\5\3\5\3\5\3\5\3\5\5\5\u02a9\n\5\5\5\u02ab"+ + "\n\5\3\5\3\5\3\5\3\5\5\5\u02b1\n\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5"+ + "\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\5\5\u02c4\n\5\3\5\3\5\3\5\5\5\u02c9\n"+ + "\5\3\5\3\5\3\5\3\5\3\5\5\5\u02d0\n\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3"+ + "\5\3\5\5\5\u02dc\n\5\5\5\u02de\n\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5"+ + "\3\5\3\5\3\5\3\5\3\5\3\5\3\5\7\5\u02f0\n\5\f\5\16\5\u02f3\13\5\5\5\u02f5"+ + "\n\5\3\5\3\5\5\5\u02f9\n\5\3\5\3\5\5\5\u02fd\n\5\3\5\3\5\3\5\3\5\3\5\3"+ + "\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\7\5\u030d\n\5\f\5\16\5\u0310\13\5\5"+ + "\5\u0312\n\5\3\5\3\5\3\5\3\5\3\5\3\5\5\5\u031a\n\5\3\6\5\6\u031d\n\6\3"+ + "\6\3\6\3\7\3\7\5\7\u0323\n\7\3\7\3\7\3\7\7\7\u0328\n\7\f\7\16\7\u032b"+ + "\13\7\3\b\3\b\5\b\u032f\n\b\3\t\3\t\3\t\3\t\5\t\u0335\n\t\3\t\3\t\5\t"+ + "\u0339\n\t\3\t\3\t\5\t\u033d\n\t\3\n\3\n\3\n\3\n\5\n\u0343\n\n\3\13\3"+ + "\13\3\13\3\13\7\13\u0349\n\13\f\13\16\13\u034c\13\13\3\13\3\13\3\f\3\f"+ + "\3\f\3\f\3\r\3\r\3\r\3\16\7\16\u0358\n\16\f\16\16\16\u035b\13\16\3\17"+ + "\3\17\3\17\3\17\5\17\u0361\n\17\3\20\7\20\u0364\n\20\f\20\16\20\u0367"+ + "\13\20\3\21\3\21\3\22\3\22\5\22\u036d\n\22\3\23\3\23\3\23\3\24\3\24\3"+ + "\24\5\24\u0375\n\24\3\25\3\25\5\25\u0379\n\25\3\26\3\26\3\26\5\26\u037e"+ + "\n\26\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\5\27\u0389\n\27\3\30"+ + "\3\30\3\31\3\31\3\31\3\31\3\31\3\31\7\31\u0393\n\31\f\31\16\31\u0396\13"+ + "\31\5\31\u0398\n\31\3\31\3\31\3\31\5\31\u039d\n\31\5\31\u039f\n\31\3\31"+ + "\3\31\5\31\u03a3\n\31\3\32\3\32\3\32\3\32\3\32\3\32\5\32\u03ab\n\32\3"+ + "\32\3\32\3\32\3\32\5\32\u03b1\n\32\3\32\7\32\u03b4\n\32\f\32\16\32\u03b7"+ + "\13\32\3\33\3\33\3\33\3\33\3\33\3\33\3\33\7\33\u03c0\n\33\f\33\16\33\u03c3"+ + "\13\33\3\33\3\33\3\33\3\33\5\33\u03c9\n\33\3\34\3\34\5\34\u03cd\n\34\3"+ + "\34\3\34\5\34\u03d1\n\34\3\35\3\35\5\35\u03d5\n\35\3\35\3\35\3\35\7\35"+ + "\u03da\n\35\f\35\16\35\u03dd\13\35\3\35\3\35\3\35\3\35\7\35\u03e3\n\35"+ + "\f\35\16\35\u03e6\13\35\5\35\u03e8\n\35\3\35\3\35\5\35\u03ec\n\35\3\35"+ + "\3\35\3\35\5\35\u03f1\n\35\3\35\3\35\5\35\u03f5\n\35\3\36\5\36\u03f8\n"+ + "\36\3\36\3\36\3\36\7\36\u03fd\n\36\f\36\16\36\u0400\13\36\3\37\3\37\3"+ + "\37\3\37\3\37\3\37\7\37\u0408\n\37\f\37\16\37\u040b\13\37\5\37\u040d\n"+ + "\37\3\37\3\37\3\37\3\37\3\37\3\37\7\37\u0415\n\37\f\37\16\37\u0418\13"+ + "\37\5\37\u041a\n\37\3\37\3\37\3\37\3\37\3\37\3\37\3\37\7\37\u0423\n\37"+ + "\f\37\16\37\u0426\13\37\3\37\3\37\5\37\u042a\n\37\3 \3 \3 \3 \7 \u0430"+ + "\n \f \16 \u0433\13 \5 \u0435\n \3 \3 \5 \u0439\n \3!\3!\5!\u043d\n!\3"+ + "!\3!\3!\3!\3!\3\"\3\"\3#\3#\5#\u0448\n#\3#\5#\u044b\n#\3#\3#\3#\3#\3#"+ + "\5#\u0452\n#\3$\3$\3$\3$\3$\3$\3$\3$\3$\3$\3$\3$\3$\3$\3$\3$\3$\5$\u0465"+ + "\n$\7$\u0467\n$\f$\16$\u046a\13$\3%\5%\u046d\n%\3%\3%\5%\u0471\n%\3%\3"+ + "%\5%\u0475\n%\3%\3%\5%\u0479\n%\5%\u047b\n%\3&\3&\3&\3&\3&\3&\3&\7&\u0484"+ + "\n&\f&\16&\u0487\13&\3&\3&\5&\u048b\n&\3\'\3\'\3\'\3\'\3\'\3\'\3\'\5\'"+ + "\u0494\n\'\3(\3(\3)\3)\5)\u049a\n)\3)\3)\5)\u049e\n)\5)\u04a0\n)\3*\3"+ + "*\3*\3*\7*\u04a6\n*\f*\16*\u04a9\13*\3*\3*\3+\3+\3+\3+\3+\3+\3+\3+\3+"+ + "\3+\7+\u04b7\n+\f+\16+\u04ba\13+\3+\3+\3+\5+\u04bf\n+\3+\3+\3+\3+\3+\3"+ + "+\3+\3+\3+\5+\u04ca\n+\3,\3,\3-\3-\3-\5-\u04d1\n-\3-\3-\5-\u04d5\n-\3"+ + "-\3-\3-\3-\3-\3-\7-\u04dd\n-\f-\16-\u04e0\13-\3.\3.\3.\3.\3.\3.\3.\3."+ + "\3.\3.\5.\u04ec\n.\3.\3.\3.\3.\3.\3.\5.\u04f4\n.\3.\3.\3.\3.\3.\7.\u04fb"+ + "\n.\f.\16.\u04fe\13.\3.\3.\3.\5.\u0503\n.\3.\3.\3.\3.\3.\3.\5.\u050b\n"+ + ".\3.\3.\3.\3.\5.\u0511\n.\3.\3.\5.\u0515\n.\3.\3.\3.\5.\u051a\n.\3.\3"+ + ".\3.\5.\u051f\n.\3/\3/\3/\3/\5/\u0525\n/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3"+ + "/\3/\3/\7/\u0533\n/\f/\16/\u0536\13/\3\60\3\60\3\60\3\60\3\60\3\60\3\60"+ + "\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60"+ + "\3\60\3\60\3\60\6\60\u0550\n\60\r\60\16\60\u0551\3\60\3\60\3\60\3\60\3"+ + "\60\3\60\3\60\7\60\u055b\n\60\f\60\16\60\u055e\13\60\3\60\3\60\3\60\3"+ + "\60\3\60\3\60\3\60\5\60\u0567\n\60\3\60\5\60\u056a\n\60\3\60\3\60\3\60"+ + "\5\60\u056f\n\60\3\60\3\60\3\60\7\60\u0574\n\60\f\60\16\60\u0577\13\60"+ + "\5\60\u0579\n\60\3\60\3\60\3\60\3\60\3\60\7\60\u0580\n\60\f\60\16\60\u0583"+ + "\13\60\5\60\u0585\n\60\3\60\3\60\5\60\u0589\n\60\3\60\5\60\u058c\n\60"+ + "\3\60\5\60\u058f\n\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\7\60\u0599"+ + "\n\60\f\60\16\60\u059c\13\60\5\60\u059e\n\60\3\60\3\60\3\60\3\60\3\60"+ + "\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\6\60\u05af\n\60\r\60"+ + "\16\60\u05b0\3\60\3\60\5\60\u05b5\n\60\3\60\3\60\3\60\3\60\6\60\u05bb"+ + "\n\60\r\60\16\60\u05bc\3\60\3\60\5\60\u05c1\n\60\3\60\3\60\3\60\3\60\3"+ + "\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3"+ + "\60\3\60\3\60\7\60\u05d8\n\60\f\60\16\60\u05db\13\60\5\60\u05dd\n\60\3"+ + "\60\3\60\3\60\3\60\3\60\3\60\3\60\5\60\u05e6\n\60\3\60\3\60\3\60\3\60"+ + "\5\60\u05ec\n\60\3\60\3\60\3\60\3\60\5\60\u05f2\n\60\3\60\3\60\3\60\3"+ + "\60\5\60\u05f8\n\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\5\60\u0602"+ + "\n\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\5\60\u060b\n\60\3\60\3\60\3\60"+ + "\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60"+ + "\3\60\7\60\u061f\n\60\f\60\16\60\u0622\13\60\5\60\u0624\n\60\3\60\5\60"+ + "\u0627\n\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\7\60\u0631\n\60\f"+ + "\60\16\60\u0634\13\60\3\61\3\61\3\61\3\61\5\61\u063a\n\61\5\61\u063c\n"+ + "\61\3\62\3\62\3\62\3\62\5\62\u0642\n\62\3\63\3\63\3\63\3\63\3\63\3\63"+ + "\5\63\u064a\n\63\3\64\3\64\3\65\3\65\3\66\3\66\3\67\3\67\5\67\u0654\n"+ + "\67\3\67\3\67\3\67\3\67\5\67\u065a\n\67\38\38\39\39\3:\3:\3:\3:\7:\u0664"+ + "\n:\f:\16:\u0667\13:\5:\u0669\n:\3:\3:\3;\3;\3;\3;\3;\3;\3;\3;\3;\3;\3"+ + ";\3;\3;\3;\3;\3;\3;\3;\3;\3;\3;\7;\u0682\n;\f;\16;\u0685\13;\3;\3;\3;"+ + "\3;\3;\3;\3;\7;\u068e\n;\f;\16;\u0691\13;\3;\3;\5;\u0695\n;\3;\3;\3;\3"+ + ";\3;\5;\u069c\n;\3;\3;\7;\u06a0\n;\f;\16;\u06a3\13;\3<\3<\5<\u06a7\n<"+ + "\3=\3=\3=\3=\5=\u06ad\n=\3>\3>\3>\3>\3>\3?\3?\3?\3?\3?\3?\3@\3@\3@\3@"+ + "\3@\3@\3@\7@\u06c1\n@\f@\16@\u06c4\13@\5@\u06c6\n@\3@\3@\3@\3@\3@\7@\u06cd"+ + "\n@\f@\16@\u06d0\13@\5@\u06d2\n@\3@\5@\u06d5\n@\3@\3@\3A\3A\3A\3A\3A\3"+ + "A\3A\3A\3A\3A\3A\3A\3A\3A\3A\3A\5A\u06e9\nA\3B\3B\3B\3B\3B\3B\3B\3B\3"+ + "B\5B\u06f4\nB\3C\3C\3C\3C\5C\u06fa\nC\3D\3D\3D\3D\3D\5D\u0701\nD\3E\3"+ + "E\3E\3E\3E\3E\3E\5E\u070a\nE\3F\3F\3F\3F\3F\5F\u0711\nF\3G\3G\3G\3G\5"+ + "G\u0717\nG\3H\3H\3H\7H\u071c\nH\fH\16H\u071f\13H\3I\3I\3I\5I\u0724\nI"+ + "\3J\3J\3J\3J\3J\5J\u072b\nJ\3K\3K\3K\7K\u0730\nK\fK\16K\u0733\13K\3L\3"+ + "L\3L\3L\3L\5L\u073a\nL\3M\3M\3M\5M\u073f\nM\3N\3N\3N\2\b\62FX\\^tO\2\4"+ + "\6\b\n\f\16\20\22\24\26\30\32\34\36 \"$&(*,.\60\62\64\668:<>@BDFHJLNP"+ + "RTVXZ\\^`bdfhjlnprtvxz|~\u0080\u0082\u0084\u0086\u0088\u008a\u008c\u008e"+ + "\u0090\u0092\u0094\u0096\u0098\u009a\2\31\4\2\34\34\u009c\u009c\4\2\63"+ + "\63aa\4\2KKYY\4\2??ZZ\3\2\u00a5\u00a6\4\2\16\16\u00e6\u00e6\4\2>>\u00c7"+ + "\u00c7\4\2\25\25\65\65\4\2GGhh\4\2\16\1688\4\2\27\27\u00b6\u00b6\3\2\u00dd"+ + "\u00de\3\2\u00df\u00e1\3\2\u00d7\u00dc\5\2\16\16\22\22\u00b1\u00b1\4\2"+ + "EE\u00c1\u00c1\7\2\61\61VVst\u00a9\u00a9\u00d5\u00d5\3\2wz\4\2HH\u008f"+ + "\u008f\5\2RRee\u00bb\u00bb\6\299bbpp\u00cc\u00cc\4\2\u0084\u0084\u00d4"+ + "\u00d4\61\2\f\16\20\20\22\23\25\27\32\34\37$))++/\61\63\63\65\65\67\67"+ + "99??BBDDFHJJMRVXZZ\\\\__abdegikkmmpuw|\u0080\u0082\u0084\u0085\u0088\u0088"+ + "\u008a\u008f\u0091\u0094\u0096\u009f\u00a1\u00a3\u00a5\u00aa\u00ac\u00b6"+ + "\u00b8\u00bb\u00bd\u00c0\u00c2\u00c3\u00c5\u00c6\u00c9\u00ca\u00cc\u00cc"+ + "\u00ce\u00cf\u00d3\u00d6\2\u0867\2\u009c\3\2\2\2\4\u009f\3\2\2\2\6\u00a2"+ + "\3\2\2\2\b\u0319\3\2\2\2\n\u031c\3\2\2\2\f\u0320\3\2\2\2\16\u032e\3\2"+ + "\2\2\20\u0330\3\2\2\2\22\u033e\3\2\2\2\24\u0344\3\2\2\2\26\u034f\3\2\2"+ + "\2\30\u0353\3\2\2\2\32\u0359\3\2\2\2\34\u0360\3\2\2\2\36\u0365\3\2\2\2"+ + " \u0368\3\2\2\2\"\u036c\3\2\2\2$\u036e\3\2\2\2&\u0371\3\2\2\2(\u0378\3"+ + "\2\2\2*\u037d\3\2\2\2,\u0388\3\2\2\2.\u038a\3\2\2\2\60\u038c\3\2\2\2\62"+ + "\u03a4\3\2\2\2\64\u03c8\3\2\2\2\66\u03ca\3\2\2\28\u03d2\3\2\2\2:\u03f7"+ + "\3\2\2\2<\u0429\3\2\2\2>\u0438\3\2\2\2@\u043a\3\2\2\2B\u0443\3\2\2\2D"+ + "\u0451\3\2\2\2F\u0453\3\2\2\2H\u047a\3\2\2\2J\u048a\3\2\2\2L\u048c\3\2"+ + "\2\2N\u0495\3\2\2\2P\u0497\3\2\2\2R\u04a1\3\2\2\2T\u04c9\3\2\2\2V\u04cb"+ + "\3\2\2\2X\u04d4\3\2\2\2Z\u051e\3\2\2\2\\\u0524\3\2\2\2^\u0626\3\2\2\2"+ + "`\u063b\3\2\2\2b\u0641\3\2\2\2d\u0649\3\2\2\2f\u064b\3\2\2\2h\u064d\3"+ + "\2\2\2j\u064f\3\2\2\2l\u0651\3\2\2\2n\u065b\3\2\2\2p\u065d\3\2\2\2r\u065f"+ + "\3\2\2\2t\u069b\3\2\2\2v\u06a6\3\2\2\2x\u06ac\3\2\2\2z\u06ae\3\2\2\2|"+ + "\u06b3\3\2\2\2~\u06b9\3\2\2\2\u0080\u06e8\3\2\2\2\u0082\u06f3\3\2\2\2"+ + "\u0084\u06f9\3\2\2\2\u0086\u0700\3\2\2\2\u0088\u0709\3\2\2\2\u008a\u0710"+ + "\3\2\2\2\u008c\u0716\3\2\2\2\u008e\u0718\3\2\2\2\u0090\u0723\3\2\2\2\u0092"+ + "\u072a\3\2\2\2\u0094\u072c\3\2\2\2\u0096\u0739\3\2\2\2\u0098\u073e\3\2"+ + "\2\2\u009a\u0740\3\2\2\2\u009c\u009d\5\b\5\2\u009d\u009e\7\2\2\3\u009e"+ + "\3\3\2\2\2\u009f\u00a0\5V,\2\u00a0\u00a1\7\2\2\3\u00a1\5\3\2\2\2\u00a2"+ + "\u00a3\5\"\22\2\u00a3\u00a4\7\2\2\3\u00a4\7\3\2\2\2\u00a5\u031a\5\n\6"+ + "\2\u00a6\u00a7\7\u00c9\2\2\u00a7\u031a\5\u0096L\2\u00a8\u00a9\7\u00c9"+ + "\2\2\u00a9\u00aa\5\u0096L\2\u00aa\u00ab\7\3\2\2\u00ab\u00ac\5\u0096L\2"+ + "\u00ac\u031a\3\2\2\2\u00ad\u00ae\7&\2\2\u00ae\u00b2\7\u00a7\2\2\u00af"+ + "\u00b0\7W\2\2\u00b0\u00b1\7~\2\2\u00b1\u00b3\7A\2\2\u00b2\u00af\3\2\2"+ + "\2\u00b2\u00b3\3\2\2\2\u00b3\u00b4\3\2\2\2\u00b4\u00b7\5\u008eH\2\u00b5"+ + "\u00b6\7\u00d2\2\2\u00b6\u00b8\5\24\13\2\u00b7\u00b5\3\2\2\2\u00b7\u00b8"+ + "\3\2\2\2\u00b8\u031a\3\2\2\2\u00b9\u00ba\7:\2\2\u00ba\u00bd\7\u00a7\2"+ + "\2\u00bb\u00bc\7W\2\2\u00bc\u00be\7A\2\2\u00bd\u00bb\3\2\2\2\u00bd\u00be"+ + "\3\2\2\2\u00be\u00bf\3\2\2\2\u00bf\u00c1\5\u008eH\2\u00c0\u00c2\t\2\2"+ + "\2\u00c1\u00c0\3\2\2\2\u00c1\u00c2\3\2\2\2\u00c2\u031a\3\2\2\2\u00c3\u00c4"+ + "\7\17\2\2\u00c4\u00c5\7\u00a7\2\2\u00c5\u00c6\5\u008eH\2\u00c6\u00c7\7"+ + "\u0097\2\2\u00c7\u00c8\7\u00bf\2\2\u00c8\u00c9\5\u0096L\2\u00c9\u031a"+ + "\3\2\2\2\u00ca\u00cb\7&\2\2\u00cb\u00cf\7\u00b7\2\2\u00cc\u00cd\7W\2\2"+ + "\u00cd\u00ce\7~\2\2\u00ce\u00d0\7A\2\2\u00cf\u00cc\3\2\2\2\u00cf\u00d0"+ + "\3\2\2\2\u00d0\u00d1\3\2\2\2\u00d1\u00d3\5\u008eH\2\u00d2\u00d4\5R*\2"+ + "\u00d3\u00d2\3\2\2\2\u00d3\u00d4\3\2\2\2\u00d4\u00d7\3\2\2\2\u00d5\u00d6"+ + "\7\"\2\2\u00d6\u00d8\5`\61\2\u00d7\u00d5\3\2\2\2\u00d7\u00d8\3\2\2\2\u00d8"+ + "\u00db\3\2\2\2\u00d9\u00da\7\u00d2\2\2\u00da\u00dc\5\24\13\2\u00db\u00d9"+ + "\3\2\2\2\u00db\u00dc\3\2\2\2\u00dc\u00dd\3\2\2\2\u00dd\u00e3\7\24\2\2"+ + "\u00de\u00e4\5\n\6\2\u00df\u00e0\7\4\2\2\u00e0\u00e1\5\n\6\2\u00e1\u00e2"+ + "\7\5\2\2\u00e2\u00e4\3\2\2\2\u00e3\u00de\3\2\2\2\u00e3\u00df\3\2\2\2\u00e4"+ + "\u00ea\3\2\2\2\u00e5\u00e7\7\u00d2\2\2\u00e6\u00e8\7{\2\2\u00e7\u00e6"+ + "\3\2\2\2\u00e7\u00e8\3\2\2\2\u00e8\u00e9\3\2\2\2\u00e9\u00eb\7/\2\2\u00ea"+ + "\u00e5\3\2\2\2\u00ea\u00eb\3\2\2\2\u00eb\u031a\3\2\2\2\u00ec\u00ed\7&"+ + "\2\2\u00ed\u00f1\7\u00b7\2\2\u00ee\u00ef\7W\2\2\u00ef\u00f0\7~\2\2\u00f0"+ + "\u00f2\7A\2\2\u00f1\u00ee\3\2\2\2\u00f1\u00f2\3\2\2\2\u00f2\u00f3\3\2"+ + "\2\2\u00f3\u00f4\5\u008eH\2\u00f4\u00f5\7\4\2\2\u00f5\u00fa\5\16\b\2\u00f6"+ + "\u00f7\7\6\2\2\u00f7\u00f9\5\16\b\2\u00f8\u00f6\3\2\2\2\u00f9\u00fc\3"+ + "\2\2\2\u00fa\u00f8\3\2\2\2\u00fa\u00fb\3\2\2\2\u00fb\u00fd\3\2\2\2\u00fc"+ + "\u00fa\3\2\2\2\u00fd\u0100\7\5\2\2\u00fe\u00ff\7\"\2\2\u00ff\u0101\5`"+ + "\61\2\u0100\u00fe\3\2\2\2\u0100\u0101\3\2\2\2\u0101\u0104\3\2\2\2\u0102"+ + "\u0103\7\u00d2\2\2\u0103\u0105\5\24\13\2\u0104\u0102\3\2\2\2\u0104\u0105"+ + "\3\2\2\2\u0105\u031a\3\2\2\2\u0106\u0107\7:\2\2\u0107\u010a\7\u00b7\2"+ + "\2\u0108\u0109\7W\2\2\u0109\u010b\7A\2\2\u010a\u0108\3\2\2\2\u010a\u010b"+ + "\3\2\2\2\u010b\u010c\3\2\2\2\u010c\u031a\5\u008eH\2\u010d\u010e\7]\2\2"+ + "\u010e\u010f\7`\2\2\u010f\u0111\5\u008eH\2\u0110\u0112\5R*\2\u0111\u0110"+ + "\3\2\2\2\u0111\u0112\3\2\2\2\u0112\u0113\3\2\2\2\u0113\u0114\5\n\6\2\u0114"+ + "\u031a\3\2\2\2\u0115\u0116\7\64\2\2\u0116\u0117\7K\2\2\u0117\u011a\5\u008e"+ + "H\2\u0118\u0119\7\u00d1\2\2\u0119\u011b\5X-\2\u011a\u0118\3\2\2\2\u011a"+ + "\u011b\3\2\2\2\u011b\u031a\3\2\2\2\u011c\u011d\7\17\2\2\u011d\u0120\7"+ + "\u00b7\2\2\u011e\u011f\7W\2\2\u011f\u0121\7A\2\2\u0120\u011e\3\2\2\2\u0120"+ + "\u0121\3\2\2\2\u0121\u0122\3\2\2\2\u0122\u0123\5\u008eH\2\u0123\u0124"+ + "\7\u0097\2\2\u0124\u0125\7\u00bf\2\2\u0125\u0126\5\u008eH\2\u0126\u031a"+ + "\3\2\2\2\u0127\u0128\7\17\2\2\u0128\u012b\7\u00b7\2\2\u0129\u012a\7W\2"+ + "\2\u012a\u012c\7A\2\2\u012b\u0129\3\2\2\2\u012b\u012c\3\2\2\2\u012c\u012d"+ + "\3\2\2\2\u012d\u012e\5\u008eH\2\u012e\u012f\7\u0097\2\2\u012f\u0132\7"+ + " \2\2\u0130\u0131\7W\2\2\u0131\u0133\7A\2\2\u0132\u0130\3\2\2\2\u0132"+ + "\u0133\3\2\2\2\u0133\u0134\3\2\2\2\u0134\u0135\5\u0096L\2\u0135\u0136"+ + "\7\u00bf\2\2\u0136\u0137\5\u0096L\2\u0137\u031a\3\2\2\2\u0138\u0139\7"+ + "\17\2\2\u0139\u013c\7\u00b7\2\2\u013a\u013b\7W\2\2\u013b\u013d\7A\2\2"+ + "\u013c\u013a\3\2\2\2\u013c\u013d\3\2\2\2\u013d\u013e\3\2\2\2\u013e\u013f"+ + "\5\u008eH\2\u013f\u0140\7:\2\2\u0140\u0143\7 \2\2\u0141\u0142\7W\2\2\u0142"+ + "\u0144\7A\2\2\u0143\u0141\3\2\2\2\u0143\u0144\3\2\2\2\u0144\u0145\3\2"+ + "\2\2\u0145\u0146\5\u008eH\2\u0146\u031a\3\2\2\2\u0147\u0148\7\17\2\2\u0148"+ + "\u014b\7\u00b7\2\2\u0149\u014a\7W\2\2\u014a\u014c\7A\2\2\u014b\u0149\3"+ + "\2\2\2\u014b\u014c\3\2\2\2\u014c\u014d\3\2\2\2\u014d\u014e\5\u008eH\2"+ + "\u014e\u014f\7\f\2\2\u014f\u0153\7 \2\2\u0150\u0151\7W\2\2\u0151\u0152"+ + "\7~\2\2\u0152\u0154\7A\2\2\u0153\u0150\3\2\2\2\u0153\u0154\3\2\2\2\u0154"+ + "\u0155\3\2\2\2\u0155\u0156\5\20\t\2\u0156\u031a\3\2\2\2\u0157\u0158\7"+ + "\20\2\2\u0158\u015b\5\u008eH\2\u0159\u015a\7\u00d2\2\2\u015a\u015c\5\24"+ + "\13\2\u015b\u0159\3\2\2\2\u015b\u015c\3\2\2\2\u015c\u031a\3\2\2\2\u015d"+ + "\u015e\7&\2\2\u015e\u015f\7\u00c3\2\2\u015f\u0160\5\u008eH\2\u0160\u016d"+ + "\7\24\2\2\u0161\u0162\7\4\2\2\u0162\u0167\5\30\r\2\u0163\u0164\7\6\2\2"+ + "\u0164\u0166\5\30\r\2\u0165\u0163\3\2\2\2\u0166\u0169\3\2\2\2\u0167\u0165"+ + "\3\2\2\2\u0167\u0168\3\2\2\2\u0168\u016a\3\2\2\2\u0169\u0167\3\2\2\2\u016a"+ + "\u016b\7\5\2\2\u016b\u016e\3\2\2\2\u016c\u016e\5t;\2\u016d\u0161\3\2\2"+ + "\2\u016d\u016c\3\2\2\2\u016e\u031a\3\2\2\2\u016f\u0172\7&\2\2\u0170\u0171"+ + "\7\u0086\2\2\u0171\u0173\7\u0099\2\2\u0172\u0170\3\2\2\2\u0172\u0173\3"+ + "\2\2\2\u0173\u0174\3\2\2\2\u0174\u0175\7\u00cf\2\2\u0175\u0178\5\u008e"+ + "H\2\u0176\u0177\7\u00aa\2\2\u0177\u0179\t\3\2\2\u0178\u0176\3\2\2\2\u0178"+ + "\u0179\3\2\2\2\u0179\u017a\3\2\2\2\u017a\u017b\7\24\2\2\u017b\u017c\5"+ + "\n\6\2\u017c\u031a\3\2\2\2\u017d\u017e\7:\2\2\u017e\u0181\7\u00cf\2\2"+ + "\u017f\u0180\7W\2\2\u0180\u0182\7A\2\2\u0181\u017f\3\2\2\2\u0181\u0182"+ + "\3\2\2\2\u0182\u0183\3\2\2\2\u0183\u031a\5\u008eH\2\u0184\u0185\7&\2\2"+ + "\u0185\u0186\7r\2\2\u0186\u018a\7\u00cf\2\2\u0187\u0188\7W\2\2\u0188\u0189"+ + "\7~\2\2\u0189\u018b\7A\2\2\u018a\u0187\3\2\2\2\u018a\u018b\3\2\2\2\u018b"+ + "\u018c\3\2\2\2\u018c\u018f\5\u008eH\2\u018d\u018e\7\"\2\2\u018e\u0190"+ + "\5`\61\2\u018f\u018d\3\2\2\2\u018f\u0190\3\2\2\2\u0190\u0193\3\2\2\2\u0191"+ + "\u0192\7\u00d2\2\2\u0192\u0194\5\24\13\2\u0193\u0191\3\2\2\2\u0193\u0194"+ + "\3\2\2\2\u0194\u0195\3\2\2\2\u0195\u019b\7\24\2\2\u0196\u019c\5\n\6\2"+ + "\u0197\u0198\7\4\2\2\u0198\u0199\5\n\6\2\u0199\u019a\7\5\2\2\u019a\u019c"+ + "\3\2\2\2\u019b\u0196\3\2\2\2\u019b\u0197\3\2\2\2\u019c\u031a\3\2\2\2\u019d"+ + "\u019e\7:\2\2\u019e\u019f\7r\2\2\u019f\u01a2\7\u00cf\2\2\u01a0\u01a1\7"+ + "W\2\2\u01a1\u01a3\7A\2\2\u01a2\u01a0\3\2\2\2\u01a2\u01a3\3\2\2\2\u01a3"+ + "\u01a4\3\2\2\2\u01a4\u031a\5\u008eH\2\u01a5\u01a6\7\u0096\2\2\u01a6\u01a7"+ + "\7r\2\2\u01a7\u01a8\7\u00cf\2\2\u01a8\u01a9\5\u008eH\2\u01a9\u01aa\7\u00d1"+ + "\2\2\u01aa\u01ab\5X-\2\u01ab\u031a\3\2\2\2\u01ac\u01af\7&\2\2\u01ad\u01ae"+ + "\7\u0086\2\2\u01ae\u01b0\7\u0099\2\2\u01af\u01ad\3\2\2\2\u01af\u01b0\3"+ + "\2\2\2\u01b0\u01b2\3\2\2\2\u01b1\u01b3\7\u00ba\2\2\u01b2\u01b1\3\2\2\2"+ + "\u01b2\u01b3\3\2\2\2\u01b3\u01b4\3\2\2\2\u01b4\u01b5\7M\2\2\u01b5\u01b6"+ + "\5\u008eH\2\u01b6\u01bf\7\4\2\2\u01b7\u01bc\5\30\r\2\u01b8\u01b9\7\6\2"+ + "\2\u01b9\u01bb\5\30\r\2\u01ba\u01b8\3\2\2\2\u01bb\u01be\3\2\2\2\u01bc"+ + "\u01ba\3\2\2\2\u01bc\u01bd\3\2\2\2\u01bd\u01c0\3\2\2\2\u01be\u01bc\3\2"+ + "\2\2\u01bf\u01b7\3\2\2\2\u01bf\u01c0\3\2\2\2\u01c0\u01c1\3\2\2\2\u01c1"+ + "\u01c2\7\5\2\2\u01c2\u01c3\7\u009e\2\2\u01c3\u01c6\5t;\2\u01c4\u01c5\7"+ + "\"\2\2\u01c5\u01c7\5`\61\2\u01c6\u01c4\3\2\2\2\u01c6\u01c7\3\2\2\2\u01c7"+ + "\u01c8\3\2\2\2\u01c8\u01c9\5\32\16\2\u01c9\u01ca\5\"\22\2\u01ca\u031a"+ + "\3\2\2\2\u01cb\u01cc\7\17\2\2\u01cc\u01cd\7M\2\2\u01cd\u01cf\5\u008eH"+ + "\2\u01ce\u01d0\5r:\2\u01cf\u01ce\3\2\2\2\u01cf\u01d0\3\2\2\2\u01d0\u01d1"+ + "\3\2\2\2\u01d1\u01d2\5\36\20\2\u01d2\u031a\3\2\2\2\u01d3\u01d5\7:\2\2"+ + "\u01d4\u01d6\7\u00ba\2\2\u01d5\u01d4\3\2\2\2\u01d5\u01d6\3\2\2\2\u01d6"+ + "\u01d7\3\2\2\2\u01d7\u01da\7M\2\2\u01d8\u01d9\7W\2\2\u01d9\u01db\7A\2"+ + "\2\u01da\u01d8\3\2\2\2\u01da\u01db\3\2\2\2\u01db\u01dc\3\2\2\2\u01dc\u01de"+ + "\5\u008eH\2\u01dd\u01df\5r:\2\u01de\u01dd\3\2\2\2\u01de\u01df\3\2\2\2"+ + "\u01df\u031a\3\2\2\2\u01e0\u01e1\7\32\2\2\u01e1\u01e2\5\u008eH\2\u01e2"+ + "\u01eb\7\4\2\2\u01e3\u01e8\5\u008aF\2\u01e4\u01e5\7\6\2\2\u01e5\u01e7"+ + "\5\u008aF\2\u01e6\u01e4\3\2\2\2\u01e7\u01ea\3\2\2\2\u01e8\u01e6\3\2\2"+ + "\2\u01e8\u01e9\3\2\2\2\u01e9\u01ec\3\2\2\2\u01ea\u01e8\3\2\2\2\u01eb\u01e3"+ + "\3\2\2\2\u01eb\u01ec\3\2\2\2\u01ec\u01ed\3\2\2\2\u01ed\u01ee\7\5\2\2\u01ee"+ + "\u031a\3\2\2\2\u01ef\u01f0\7&\2\2\u01f0\u01f1\7\u00a1\2\2\u01f1\u01f5"+ + "\5\u0096L\2\u01f2\u01f3\7\u00d2\2\2\u01f3\u01f4\7\r\2\2\u01f4\u01f6\5"+ + "\u0090I\2\u01f5\u01f2\3\2\2\2\u01f5\u01f6\3\2\2\2\u01f6\u031a\3\2\2\2"+ + "\u01f7\u01f8\7:\2\2\u01f8\u01f9\7\u00a1\2\2\u01f9\u031a\5\u0096L\2\u01fa"+ + "\u01fb\7O\2\2\u01fb\u01fc\5\u0094K\2\u01fc\u01fd\7\u00bf\2\2\u01fd\u0202"+ + "\5\u0092J\2\u01fe\u01ff\7\6\2\2\u01ff\u0201\5\u0092J\2\u0200\u01fe\3\2"+ + "\2\2\u0201\u0204\3\2\2\2\u0202\u0200\3\2\2\2\u0202\u0203\3\2\2\2\u0203"+ + "\u0208\3\2\2\2\u0204\u0202\3\2\2\2\u0205\u0206\7\u00d2\2\2\u0206\u0207"+ + "\7\r\2\2\u0207\u0209\7\u0085\2\2\u0208\u0205\3\2\2\2\u0208\u0209\3\2\2"+ + "\2\u0209\u020d\3\2\2\2\u020a\u020b\7P\2\2\u020b\u020c\7\31\2\2\u020c\u020e"+ + "\5\u0090I\2\u020d\u020a\3\2\2\2\u020d\u020e\3\2\2\2\u020e\u031a\3\2\2"+ + "\2\u020f\u0213\7\u009f\2\2\u0210\u0211\7\r\2\2\u0211\u0212\7\u0085\2\2"+ + "\u0212\u0214\7I\2\2\u0213\u0210\3\2\2\2\u0213\u0214\3\2\2\2\u0214\u0215"+ + "\3\2\2\2\u0215\u0216\5\u0094K\2\u0216\u0217\7K\2\2\u0217\u021c\5\u0092"+ + "J\2\u0218\u0219\7\6\2\2\u0219\u021b\5\u0092J\2\u021a\u0218\3\2\2\2\u021b"+ + "\u021e\3\2\2\2\u021c\u021a\3\2\2\2\u021c\u021d\3\2\2\2\u021d\u0222\3\2"+ + "\2\2\u021e\u021c\3\2\2\2\u021f\u0220\7P\2\2\u0220\u0221\7\31\2\2\u0221"+ + "\u0223\5\u0090I\2\u0222\u021f\3\2\2\2\u0222\u0223\3\2\2\2\u0223\u031a"+ + "\3\2\2\2\u0224\u0225\7\u00ae\2\2\u0225\u0229\7\u00a1\2\2\u0226\u022a\7"+ + "\16\2\2\u0227\u022a\7|\2\2\u0228\u022a\5\u0096L\2\u0229\u0226\3\2\2\2"+ + "\u0229\u0227\3\2\2\2\u0229\u0228\3\2\2\2\u022a\u031a\3\2\2\2\u022b\u0236"+ + "\7O\2\2\u022c\u0231\5\u008cG\2\u022d\u022e\7\6\2\2\u022e\u0230\5\u008c"+ + "G\2\u022f\u022d\3\2\2\2\u0230\u0233\3\2\2\2\u0231\u022f\3\2\2\2\u0231"+ + "\u0232\3\2\2\2\u0232\u0237\3\2\2\2\u0233\u0231\3\2\2\2\u0234\u0235\7\16"+ + "\2\2\u0235\u0237\7\u0091\2\2\u0236\u022c\3\2\2\2\u0236\u0234\3\2\2\2\u0237"+ + "\u0238\3\2\2\2\u0238\u023a\7\u0083\2\2\u0239\u023b\7\u00b7\2\2\u023a\u0239"+ + "\3\2\2\2\u023a\u023b\3\2\2\2\u023b\u023c\3\2\2\2\u023c\u023d\5\u008eH"+ + "\2\u023d\u023e\7\u00bf\2\2\u023e\u0242\5\u0092J\2\u023f\u0240\7\u00d2"+ + "\2\2\u0240\u0241\7O\2\2\u0241\u0243\7\u0085\2\2\u0242\u023f\3\2\2\2\u0242"+ + "\u0243\3\2\2\2\u0243\u031a\3\2\2\2\u0244\u0248\7\u009f\2\2\u0245\u0246"+ + "\7O\2\2\u0246\u0247\7\u0085\2\2\u0247\u0249\7I\2\2\u0248\u0245\3\2\2\2"+ + "\u0248\u0249\3\2\2\2\u0249\u0254\3\2\2\2\u024a\u024f\5\u008cG\2\u024b"+ + "\u024c\7\6\2\2\u024c\u024e\5\u008cG\2\u024d\u024b\3\2\2\2\u024e\u0251"+ + "\3\2\2\2\u024f\u024d\3\2\2\2\u024f\u0250\3\2\2\2\u0250\u0255\3\2\2\2\u0251"+ + "\u024f\3\2\2\2\u0252\u0253\7\16\2\2\u0253\u0255\7\u0091\2\2\u0254\u024a"+ + "\3\2\2\2\u0254\u0252\3\2\2\2\u0255\u0256\3\2\2\2\u0256\u0258\7\u0083\2"+ + "\2\u0257\u0259\7\u00b7\2\2\u0258\u0257\3\2\2\2\u0258\u0259\3\2\2\2\u0259"+ + "\u025a\3\2\2\2\u025a\u025b\5\u008eH\2\u025b\u025c\7K\2\2\u025c\u025d\5"+ + "\u0092J\2\u025d\u031a\3\2\2\2\u025e\u025f\7\u00b0\2\2\u025f\u0265\7Q\2"+ + "\2\u0260\u0262\7\u0083\2\2\u0261\u0263\7\u00b7\2\2\u0262\u0261\3\2\2\2"+ + "\u0262\u0263\3\2\2\2\u0263\u0264\3\2\2\2\u0264\u0266\5\u008eH\2\u0265"+ + "\u0260\3\2\2\2\u0265\u0266\3\2\2\2\u0266\u031a\3\2\2\2\u0267\u0269\7B"+ + "\2\2\u0268\u026a\7\20\2\2\u0269\u0268\3\2\2\2\u0269\u026a\3\2\2\2\u026a"+ + "\u026c\3\2\2\2\u026b\u026d\7\u00ce\2\2\u026c\u026b\3\2\2\2\u026c\u026d"+ + "\3\2\2\2\u026d\u0279\3\2\2\2\u026e\u026f\7\4\2\2\u026f\u0274\5\u0084C"+ + "\2\u0270\u0271\7\6\2\2\u0271\u0273\5\u0084C\2\u0272\u0270\3\2\2\2\u0273"+ + "\u0276\3\2\2\2\u0274\u0272\3\2\2\2\u0274\u0275\3\2\2\2\u0275\u0277\3\2"+ + "\2\2\u0276\u0274\3\2\2\2\u0277\u0278\7\5\2\2\u0278\u027a\3\2\2\2\u0279"+ + "\u026e\3\2\2\2\u0279\u027a\3\2\2\2\u027a\u027b\3\2\2\2\u027b\u031a\5\b"+ + "\5\2\u027c\u027d\7\u00b0\2\2\u027d\u027e\7&\2\2\u027e\u027f\7\u00b7\2"+ + "\2\u027f\u031a\5\u008eH\2\u0280\u0281\7\u00b0\2\2\u0281\u0282\7&\2\2\u0282"+ + "\u0283\7\u00cf\2\2\u0283\u031a\5\u008eH\2\u0284\u0285\7\u00b0\2\2\u0285"+ + "\u0286\7&\2\2\u0286\u0287\7r\2\2\u0287\u0288\7\u00cf\2\2\u0288\u031a\5"+ + "\u008eH\2\u0289\u028a\7\u00b0\2\2\u028a\u028b\7&\2\2\u028b\u028c\7M\2"+ + "\2\u028c\u028e\5\u008eH\2\u028d\u028f\5r:\2\u028e\u028d\3\2\2\2\u028e"+ + "\u028f\3\2\2\2\u028f\u031a\3\2\2\2\u0290\u0291\7\u00b0\2\2\u0291\u0294"+ + "\7\u00b8\2\2\u0292\u0293\t\4\2\2\u0293\u0295\5\u008eH\2\u0294\u0292\3"+ + "\2\2\2\u0294\u0295\3\2\2\2\u0295\u029c\3\2\2\2\u0296\u0297\7l\2\2\u0297"+ + "\u029a\5`\61\2\u0298\u0299\7=\2\2\u0299\u029b\5`\61\2\u029a\u0298\3\2"+ + "\2\2\u029a\u029b\3\2\2\2\u029b\u029d\3\2\2\2\u029c\u0296\3\2\2\2\u029c"+ + "\u029d\3\2\2\2\u029d\u031a\3\2\2\2\u029e\u029f\7\u00b0\2\2\u029f\u02a2"+ + "\7\u00a8\2\2\u02a0\u02a1\t\4\2\2\u02a1\u02a3\5\u0096L\2\u02a2\u02a0\3"+ + "\2\2\2\u02a2\u02a3\3\2\2\2\u02a3\u02aa\3\2\2\2\u02a4\u02a5\7l\2\2\u02a5"+ + "\u02a8\5`\61\2\u02a6\u02a7\7=\2\2\u02a7\u02a9\5`\61\2\u02a8\u02a6\3\2"+ + "\2\2\u02a8\u02a9\3\2\2\2\u02a9\u02ab\3\2\2\2\u02aa\u02a4\3\2\2\2\u02aa"+ + "\u02ab\3\2\2\2\u02ab\u031a\3\2\2\2\u02ac\u02ad\7\u00b0\2\2\u02ad\u02b0"+ + "\7\37\2\2\u02ae\u02af\7l\2\2\u02af\u02b1\5`\61\2\u02b0\u02ae\3\2\2\2\u02b0"+ + "\u02b1\3\2\2\2\u02b1\u031a\3\2\2\2\u02b2\u02b3\7\u00b0\2\2\u02b3\u02b4"+ + "\7!\2\2\u02b4\u02b5\t\4\2\2\u02b5\u031a\5\u008eH\2\u02b6\u02b7\7\u00b0"+ + "\2\2\u02b7\u02b8\7\u00b4\2\2\u02b8\u02b9\7I\2\2\u02b9\u031a\5\u008eH\2"+ + "\u02ba\u02bb\7\u00b0\2\2\u02bb\u02bc\7\u00b4\2\2\u02bc\u02bd\7I\2\2\u02bd"+ + "\u02be\7\4\2\2\u02be\u02bf\58\35\2\u02bf\u02c0\7\5\2\2\u02c0\u031a\3\2"+ + "\2\2\u02c1\u02c3\7\u00b0\2\2\u02c2\u02c4\7)\2\2\u02c3\u02c2\3\2\2\2\u02c3"+ + "\u02c4\3\2\2\2\u02c4\u02c5\3\2\2\2\u02c5\u02c8\7\u00a2\2\2\u02c6\u02c7"+ + "\t\4\2\2\u02c7\u02c9\5\u0096L\2\u02c8\u02c6\3\2\2\2\u02c8\u02c9\3\2\2"+ + "\2\u02c9\u031a\3\2\2\2\u02ca\u02cb\7\u00b0\2\2\u02cb\u02cc\7\u00a1\2\2"+ + "\u02cc\u02cf\7Q\2\2\u02cd\u02ce\t\4\2\2\u02ce\u02d0\5\u0096L\2\u02cf\u02cd"+ + "\3\2\2\2\u02cf\u02d0\3\2\2\2\u02d0\u031a\3\2\2\2\u02d1\u02d2\7\66\2\2"+ + "\u02d2\u031a\5\u008eH\2\u02d3\u02d4\7\65\2\2\u02d4\u031a\5\u008eH\2\u02d5"+ + "\u02d6\7\u00b0\2\2\u02d6\u02dd\7N\2\2\u02d7\u02d8\7l\2\2\u02d8\u02db\5"+ + "`\61\2\u02d9\u02da\7=\2\2\u02da\u02dc\5`\61\2\u02db\u02d9\3\2\2\2\u02db"+ + "\u02dc\3\2\2\2\u02dc\u02de\3\2\2\2\u02dd\u02d7\3\2\2\2\u02dd\u02de\3\2"+ + "\2\2\u02de\u031a\3\2\2\2\u02df\u02e0\7\u00b0\2\2\u02e0\u031a\7\u00ad\2"+ + "\2\u02e1\u02e2\7\u00ae\2\2\u02e2\u02e3\7\u00ad\2\2\u02e3\u02e4\5\u008e"+ + "H\2\u02e4\u02e5\7\u00d7\2\2\u02e5\u02e6\5V,\2\u02e6\u031a\3\2\2\2\u02e7"+ + "\u02e8\7\u009a\2\2\u02e8\u02e9\7\u00ad\2\2\u02e9\u031a\5\u008eH\2\u02ea"+ + "\u02eb\7\u00b3\2\2\u02eb\u02f4\7\u00c0\2\2\u02ec\u02f1\5\u0086D\2\u02ed"+ + "\u02ee\7\6\2\2\u02ee\u02f0\5\u0086D\2\u02ef\u02ed\3\2\2\2\u02f0\u02f3"+ + "\3\2\2\2\u02f1\u02ef\3\2\2\2\u02f1\u02f2\3\2\2\2\u02f2\u02f5\3\2\2\2\u02f3"+ + "\u02f1\3\2\2\2\u02f4\u02ec\3\2\2\2\u02f4\u02f5\3\2\2\2\u02f5\u031a\3\2"+ + "\2\2\u02f6\u02f8\7#\2\2\u02f7\u02f9\7\u00d3\2\2\u02f8\u02f7\3\2\2\2\u02f8"+ + "\u02f9\3\2\2\2\u02f9\u031a\3\2\2\2\u02fa\u02fc\7\u00a3\2\2\u02fb\u02fd"+ + "\7\u00d3\2\2\u02fc\u02fb\3\2\2\2\u02fc\u02fd\3\2\2\2\u02fd\u031a\3\2\2"+ + "\2\u02fe\u02ff\7\u0090\2\2\u02ff\u0300\5\u0096L\2\u0300\u0301\7K\2\2\u0301"+ + "\u0302\5\b\5\2\u0302\u031a\3\2\2\2\u0303\u0304\7\62\2\2\u0304\u0305\7"+ + "\u0090\2\2\u0305\u031a\5\u0096L\2\u0306\u0307\7@\2\2\u0307\u0311\5\u0096"+ + "L\2\u0308\u0309\7\u00cb\2\2\u0309\u030e\5V,\2\u030a\u030b\7\6\2\2\u030b"+ + "\u030d\5V,\2\u030c\u030a\3\2\2\2\u030d\u0310\3\2\2\2\u030e\u030c\3\2\2"+ + "\2\u030e\u030f\3\2\2\2\u030f\u0312\3\2\2\2\u0310\u030e\3\2\2\2\u0311\u0308"+ + "\3\2\2\2\u0311\u0312\3\2\2\2\u0312\u031a\3\2\2\2\u0313\u0314\7\66\2\2"+ + "\u0314\u0315\7\\\2\2\u0315\u031a\5\u0096L\2\u0316\u0317\7\66\2\2\u0317"+ + "\u0318\7\u008a\2\2\u0318\u031a\5\u0096L\2\u0319\u00a5\3\2\2\2\u0319\u00a6"+ + "\3\2\2\2\u0319\u00a8\3\2\2\2\u0319\u00ad\3\2\2\2\u0319\u00b9\3\2\2\2\u0319"+ + "\u00c3\3\2\2\2\u0319\u00ca\3\2\2\2\u0319\u00ec\3\2\2\2\u0319\u0106\3\2"+ + "\2\2\u0319\u010d\3\2\2\2\u0319\u0115\3\2\2\2\u0319\u011c\3\2\2\2\u0319"+ + "\u0127\3\2\2\2\u0319\u0138\3\2\2\2\u0319\u0147\3\2\2\2\u0319\u0157\3\2"+ + "\2\2\u0319\u015d\3\2\2\2\u0319\u016f\3\2\2\2\u0319\u017d\3\2\2\2\u0319"+ + "\u0184\3\2\2\2\u0319\u019d\3\2\2\2\u0319\u01a5\3\2\2\2\u0319\u01ac\3\2"+ + "\2\2\u0319\u01cb\3\2\2\2\u0319\u01d3\3\2\2\2\u0319\u01e0\3\2\2\2\u0319"+ + "\u01ef\3\2\2\2\u0319\u01f7\3\2\2\2\u0319\u01fa\3\2\2\2\u0319\u020f\3\2"+ + "\2\2\u0319\u0224\3\2\2\2\u0319\u022b\3\2\2\2\u0319\u0244\3\2\2\2\u0319"+ + "\u025e\3\2\2\2\u0319\u0267\3\2\2\2\u0319\u027c\3\2\2\2\u0319\u0280\3\2"+ + "\2\2\u0319\u0284\3\2\2\2\u0319\u0289\3\2\2\2\u0319\u0290\3\2\2\2\u0319"+ + "\u029e\3\2\2\2\u0319\u02ac\3\2\2\2\u0319\u02b2\3\2\2\2\u0319\u02b6\3\2"+ + "\2\2\u0319\u02ba\3\2\2\2\u0319\u02c1\3\2\2\2\u0319\u02ca\3\2\2\2\u0319"+ + "\u02d1\3\2\2\2\u0319\u02d3\3\2\2\2\u0319\u02d5\3\2\2\2\u0319\u02df\3\2"+ + "\2\2\u0319\u02e1\3\2\2\2\u0319\u02e7\3\2\2\2\u0319\u02ea\3\2\2\2\u0319"+ + "\u02f6\3\2\2\2\u0319\u02fa\3\2\2\2\u0319\u02fe\3\2\2\2\u0319\u0303\3\2"+ + "\2\2\u0319\u0306\3\2\2\2\u0319\u0313\3\2\2\2\u0319\u0316\3\2\2\2\u031a"+ + "\t\3\2\2\2\u031b\u031d\5\f\7\2\u031c\u031b\3\2\2\2\u031c\u031d\3\2\2\2"+ + "\u031d\u031e\3\2\2\2\u031e\u031f\5\60\31\2\u031f\13\3\2\2\2\u0320\u0322"+ + "\7\u00d2\2\2\u0321\u0323\7\u0095\2\2\u0322\u0321\3\2\2\2\u0322\u0323\3"+ + "\2\2\2\u0323\u0324\3\2\2\2\u0324\u0329\5@!\2\u0325\u0326\7\6\2\2\u0326"+ + "\u0328\5@!\2\u0327\u0325\3\2\2\2\u0328\u032b\3\2\2\2\u0329\u0327\3\2\2"+ + "\2\u0329\u032a\3\2\2\2\u032a\r\3\2\2\2\u032b\u0329\3\2\2\2\u032c\u032f"+ + "\5\20\t\2\u032d\u032f\5\22\n\2\u032e\u032c\3\2\2\2\u032e\u032d\3\2\2\2"+ + "\u032f\17\3\2\2\2\u0330\u0331\5\u0096L\2\u0331\u0334\5t;\2\u0332\u0333"+ + "\7~\2\2\u0333\u0335\7\177\2\2\u0334\u0332\3\2\2\2\u0334\u0335\3\2\2\2"+ + "\u0335\u0338\3\2\2\2\u0336\u0337\7\"\2\2\u0337\u0339\5`\61\2\u0338\u0336"+ + "\3\2\2\2\u0338\u0339\3\2\2\2\u0339\u033c\3\2\2\2\u033a\u033b\7\u00d2\2"+ + "\2\u033b\u033d\5\24\13\2\u033c\u033a\3\2\2\2\u033c\u033d\3\2\2\2\u033d"+ + "\21\3\2\2\2\u033e\u033f\7l\2\2\u033f\u0342\5\u008eH\2\u0340\u0341\t\5"+ + "\2\2\u0341\u0343\7\u0092\2\2\u0342\u0340\3\2\2\2\u0342\u0343\3\2\2\2\u0343"+ + "\23\3\2\2\2\u0344\u0345\7\4\2\2\u0345\u034a\5\26\f\2\u0346\u0347\7\6\2"+ + "\2\u0347\u0349\5\26\f\2\u0348\u0346\3\2\2\2\u0349\u034c\3\2\2\2\u034a"+ + "\u0348\3\2\2\2\u034a\u034b\3\2\2\2\u034b\u034d\3\2\2\2\u034c\u034a\3\2"+ + "\2\2\u034d\u034e\7\5\2\2\u034e\25\3\2\2\2\u034f\u0350\5\u0096L\2\u0350"+ + "\u0351\7\u00d7\2\2\u0351\u0352\5V,\2\u0352\27\3\2\2\2\u0353\u0354\5\u0096"+ + "L\2\u0354\u0355\5t;\2\u0355\31\3\2\2\2\u0356\u0358\5\34\17\2\u0357\u0356"+ + "\3\2\2\2\u0358\u035b\3\2\2\2\u0359\u0357\3\2\2\2\u0359\u035a\3\2\2\2\u035a"+ + "\33\3\2\2\2\u035b\u0359\3\2\2\2\u035c\u035d\7g\2\2\u035d\u0361\5(\25\2"+ + "\u035e\u0361\5*\26\2\u035f\u0361\5,\27\2\u0360\u035c\3\2\2\2\u0360\u035e"+ + "\3\2\2\2\u0360\u035f\3\2\2\2\u0361\35\3\2\2\2\u0362\u0364\5 \21\2\u0363"+ + "\u0362\3\2\2\2\u0364\u0367\3\2\2\2\u0365\u0363\3\2\2\2\u0365\u0366\3\2"+ + "\2\2\u0366\37\3\2\2\2\u0367\u0365\3\2\2\2\u0368\u0369\5,\27\2\u0369!\3"+ + "\2\2\2\u036a\u036d\5$\23\2\u036b\u036d\5&\24\2\u036c\u036a\3\2\2\2\u036c"+ + "\u036b\3\2\2\2\u036d#\3\2\2\2\u036e\u036f\7\u009d\2\2\u036f\u0370\5V,"+ + "\2\u0370%\3\2\2\2\u0371\u0374\7D\2\2\u0372\u0373\7u\2\2\u0373\u0375\5"+ + ".\30\2\u0374\u0372\3\2\2\2\u0374\u0375\3\2\2\2\u0375\'\3\2\2\2\u0376\u0379"+ + "\7\u00b2\2\2\u0377\u0379\5\u0096L\2\u0378\u0376\3\2\2\2\u0378\u0377\3"+ + "\2\2\2\u0379)\3\2\2\2\u037a\u037e\7\67\2\2\u037b\u037c\7~\2\2\u037c\u037e"+ + "\7\67\2\2\u037d\u037a\3\2\2\2\u037d\u037b\3\2\2\2\u037e+\3\2\2\2\u037f"+ + "\u0380\7\u009e\2\2\u0380\u0381\7\177\2\2\u0381\u0382\7\u0083\2\2\u0382"+ + "\u0383\7\177\2\2\u0383\u0389\7\\\2\2\u0384\u0385\7\33\2\2\u0385\u0386"+ + "\7\u0083\2\2\u0386\u0387\7\177\2\2\u0387\u0389\7\\\2\2\u0388\u037f\3\2"+ + "\2\2\u0388\u0384\3\2\2\2\u0389-\3\2\2\2\u038a\u038b\5\u0096L\2\u038b/"+ + "\3\2\2\2\u038c\u0397\5\62\32\2\u038d\u038e\7\u0087\2\2\u038e\u038f\7\31"+ + "\2\2\u038f\u0394\5\66\34\2\u0390\u0391\7\6\2\2\u0391\u0393\5\66\34\2\u0392"+ + "\u0390\3\2\2\2\u0393\u0396\3\2\2\2\u0394\u0392\3\2\2\2\u0394\u0395\3\2"+ + "\2\2\u0395\u0398\3\2\2\2\u0396\u0394\3\2\2\2\u0397\u038d\3\2\2\2\u0397"+ + "\u0398\3\2\2\2\u0398\u039e\3\2\2\2\u0399\u039a\7\u0082\2\2\u039a\u039c"+ + "\7\u00e6\2\2\u039b\u039d\t\6\2\2\u039c\u039b\3\2\2\2\u039c\u039d\3\2\2"+ + "\2\u039d\u039f\3\2\2\2\u039e\u0399\3\2\2\2\u039e\u039f\3\2\2\2\u039f\u03a2"+ + "\3\2\2\2\u03a0\u03a1\7m\2\2\u03a1\u03a3\t\7\2\2\u03a2\u03a0\3\2\2\2\u03a2"+ + "\u03a3\3\2\2\2\u03a3\61\3\2\2\2\u03a4\u03a5\b\32\1\2\u03a5\u03a6\5\64"+ + "\33\2\u03a6\u03b5\3\2\2\2\u03a7\u03a8\f\4\2\2\u03a8\u03aa\7^\2\2\u03a9"+ + "\u03ab\5B\"\2\u03aa\u03a9\3\2\2\2\u03aa\u03ab\3\2\2\2\u03ab\u03ac\3\2"+ + "\2\2\u03ac\u03b4\5\62\32\5\u03ad\u03ae\f\3\2\2\u03ae\u03b0\t\b\2\2\u03af"+ + "\u03b1\5B\"\2\u03b0\u03af\3\2\2\2\u03b0\u03b1\3\2\2\2\u03b1\u03b2\3\2"+ + "\2\2\u03b2\u03b4\5\62\32\4\u03b3\u03a7\3\2\2\2\u03b3\u03ad\3\2\2\2\u03b4"+ + "\u03b7\3\2\2\2\u03b5\u03b3\3\2\2\2\u03b5\u03b6\3\2\2\2\u03b6\63\3\2\2"+ + "\2\u03b7\u03b5\3\2\2\2\u03b8\u03c9\58\35\2\u03b9\u03ba\7\u00b7\2\2\u03ba"+ + "\u03c9\5\u008eH\2\u03bb\u03bc\7\u00cd\2\2\u03bc\u03c1\5V,\2\u03bd\u03be"+ + "\7\6\2\2\u03be\u03c0\5V,\2\u03bf\u03bd\3\2\2\2\u03c0\u03c3\3\2\2\2\u03c1"+ + "\u03bf\3\2\2\2\u03c1\u03c2\3\2\2\2\u03c2\u03c9\3\2\2\2\u03c3\u03c1\3\2"+ + "\2\2\u03c4\u03c5\7\4\2\2\u03c5\u03c6\5\60\31\2\u03c6\u03c7\7\5\2\2\u03c7"+ + "\u03c9\3\2\2\2\u03c8\u03b8\3\2\2\2\u03c8\u03b9\3\2\2\2\u03c8\u03bb\3\2"+ + "\2\2\u03c8\u03c4\3\2\2\2\u03c9\65\3\2\2\2\u03ca\u03cc\5V,\2\u03cb\u03cd"+ + "\t\t\2\2\u03cc\u03cb\3\2\2\2\u03cc\u03cd\3\2\2\2\u03cd\u03d0\3\2\2\2\u03ce"+ + "\u03cf\7\u0081\2\2\u03cf\u03d1\t\n\2\2\u03d0\u03ce\3\2\2\2\u03d0\u03d1"+ + "\3\2\2\2\u03d1\67\3\2\2\2\u03d2\u03d4\7\u00ab\2\2\u03d3\u03d5\5B\"\2\u03d4"+ + "\u03d3\3\2\2\2\u03d4\u03d5\3\2\2\2\u03d5\u03d6\3\2\2\2\u03d6\u03db\5D"+ + "#\2\u03d7\u03d8\7\6\2\2\u03d8\u03da\5D#\2\u03d9\u03d7\3\2\2\2\u03da\u03dd"+ + "\3\2\2\2\u03db\u03d9\3\2\2\2\u03db\u03dc\3\2\2\2\u03dc\u03e7\3\2\2\2\u03dd"+ + "\u03db\3\2\2\2\u03de\u03df\7K\2\2\u03df\u03e4\5F$\2\u03e0\u03e1\7\6\2"+ + "\2\u03e1\u03e3\5F$\2\u03e2\u03e0\3\2\2\2\u03e3\u03e6\3\2\2\2\u03e4\u03e2"+ + "\3\2\2\2\u03e4\u03e5\3\2\2\2\u03e5\u03e8\3\2\2\2\u03e6\u03e4\3\2\2\2\u03e7"+ + "\u03de\3\2\2\2\u03e7\u03e8\3\2\2\2\u03e8\u03eb\3\2\2\2\u03e9\u03ea\7\u00d1"+ + "\2\2\u03ea\u03ec\5X-\2\u03eb\u03e9\3\2\2\2\u03eb\u03ec\3\2\2\2\u03ec\u03f0"+ + "\3\2\2\2\u03ed\u03ee\7S\2\2\u03ee\u03ef\7\31\2\2\u03ef\u03f1\5:\36\2\u03f0"+ + "\u03ed\3\2\2\2\u03f0\u03f1\3\2\2\2\u03f1\u03f4\3\2\2\2\u03f2\u03f3\7U"+ + "\2\2\u03f3\u03f5\5X-\2\u03f4\u03f2\3\2\2\2\u03f4\u03f5\3\2\2\2\u03f59"+ + "\3\2\2\2\u03f6\u03f8\5B\"\2\u03f7\u03f6\3\2\2\2\u03f7\u03f8\3\2\2\2\u03f8"+ + "\u03f9\3\2\2\2\u03f9\u03fe\5<\37\2\u03fa\u03fb\7\6\2\2\u03fb\u03fd\5<"+ + "\37\2\u03fc\u03fa\3\2\2\2\u03fd\u0400\3\2\2\2\u03fe\u03fc\3\2\2\2\u03fe"+ + "\u03ff\3\2\2\2\u03ff;\3\2\2\2\u0400\u03fe\3\2\2\2\u0401\u042a\5> \2\u0402"+ + "\u0403\7\u00a4\2\2\u0403\u040c\7\4\2\2\u0404\u0409\5V,\2\u0405\u0406\7"+ + "\6\2\2\u0406\u0408\5V,\2\u0407\u0405\3\2\2\2\u0408\u040b\3\2\2\2\u0409"+ + "\u0407\3\2\2\2\u0409\u040a\3\2\2\2\u040a\u040d\3\2\2\2\u040b\u0409\3\2"+ + "\2\2\u040c\u0404\3\2\2\2\u040c\u040d\3\2\2\2\u040d\u040e\3\2\2\2\u040e"+ + "\u042a\7\5\2\2\u040f\u0410\7(\2\2\u0410\u0419\7\4\2\2\u0411\u0416\5V,"+ + "\2\u0412\u0413\7\6\2\2\u0413\u0415\5V,\2\u0414\u0412\3\2\2\2\u0415\u0418"+ + "\3\2\2\2\u0416\u0414\3\2\2\2\u0416\u0417\3\2\2\2\u0417\u041a\3\2\2\2\u0418"+ + "\u0416\3\2\2\2\u0419\u0411\3\2\2\2\u0419\u041a\3\2\2\2\u041a\u041b\3\2"+ + "\2\2\u041b\u042a\7\5\2\2\u041c\u041d\7T\2\2\u041d\u041e\7\u00af\2\2\u041e"+ + "\u041f\7\4\2\2\u041f\u0424\5> \2\u0420\u0421\7\6\2\2\u0421\u0423\5> \2"+ + "\u0422\u0420\3\2\2\2\u0423\u0426\3\2\2\2\u0424\u0422\3\2\2\2\u0424\u0425"+ + "\3\2\2\2\u0425\u0427\3\2\2\2\u0426\u0424\3\2\2\2\u0427\u0428\7\5\2\2\u0428"+ + "\u042a\3\2\2\2\u0429\u0401\3\2\2\2\u0429\u0402\3\2\2\2\u0429\u040f\3\2"+ + "\2\2\u0429\u041c\3\2\2\2\u042a=\3\2\2\2\u042b\u0434\7\4\2\2\u042c\u0431"+ + "\5V,\2\u042d\u042e\7\6\2\2\u042e\u0430\5V,\2\u042f\u042d\3\2\2\2\u0430"+ + "\u0433\3\2\2\2\u0431\u042f\3\2\2\2\u0431\u0432\3\2\2\2\u0432\u0435\3\2"+ + "\2\2\u0433\u0431\3\2\2\2\u0434\u042c\3\2\2\2\u0434\u0435\3\2\2\2\u0435"+ + "\u0436\3\2\2\2\u0436\u0439\7\5\2\2\u0437\u0439\5V,\2\u0438\u042b\3\2\2"+ + "\2\u0438\u0437\3\2\2\2\u0439?\3\2\2\2\u043a\u043c\5\u0096L\2\u043b\u043d"+ + "\5R*\2\u043c\u043b\3\2\2\2\u043c\u043d\3\2\2\2\u043d\u043e\3\2\2\2\u043e"+ + "\u043f\7\24\2\2\u043f\u0440\7\4\2\2\u0440\u0441\5\n\6\2\u0441\u0442\7"+ + "\5\2\2\u0442A\3\2\2\2\u0443\u0444\t\13\2\2\u0444C\3\2\2\2\u0445\u044a"+ + "\5V,\2\u0446\u0448\7\24\2\2\u0447\u0446\3\2\2\2\u0447\u0448\3\2\2\2\u0448"+ + "\u0449\3\2\2\2\u0449\u044b\5\u0096L\2\u044a\u0447\3\2\2\2\u044a\u044b"+ + "\3\2\2\2\u044b\u0452\3\2\2\2\u044c\u044d\5\u008eH\2\u044d\u044e\7\3\2"+ + "\2\u044e\u044f\7\u00df\2\2\u044f\u0452\3\2\2\2\u0450\u0452\7\u00df\2\2"+ + "\u0451\u0445\3\2\2\2\u0451\u044c\3\2\2\2\u0451\u0450\3\2\2\2\u0452E\3"+ + "\2\2\2\u0453\u0454\b$\1\2\u0454\u0455\5L\'\2\u0455\u0468\3\2\2\2\u0456"+ + "\u0464\f\4\2\2\u0457\u0458\7\'\2\2\u0458\u0459\7f\2\2\u0459\u0465\5L\'"+ + "\2\u045a\u045b\5H%\2\u045b\u045c\7f\2\2\u045c\u045d\5F$\2\u045d\u045e"+ + "\5J&\2\u045e\u0465\3\2\2\2\u045f\u0460\7v\2\2\u0460\u0461\5H%\2\u0461"+ + "\u0462\7f\2\2\u0462\u0463\5L\'\2\u0463\u0465\3\2\2\2\u0464\u0457\3\2\2"+ + "\2\u0464\u045a\3\2\2\2\u0464\u045f\3\2\2\2\u0465\u0467\3\2\2\2\u0466\u0456"+ + "\3\2\2\2\u0467\u046a\3\2\2\2\u0468\u0466\3\2\2\2\u0468\u0469\3\2\2\2\u0469"+ + "G\3\2\2\2\u046a\u0468\3\2\2\2\u046b\u046d\7[\2\2\u046c\u046b\3\2\2\2\u046c"+ + "\u046d\3\2\2\2\u046d\u047b\3\2\2\2\u046e\u0470\7j\2\2\u046f\u0471\7\u0089"+ + "\2\2\u0470\u046f\3\2\2\2\u0470\u0471\3\2\2\2\u0471\u047b\3\2\2\2\u0472"+ + "\u0474\7\u00a0\2\2\u0473\u0475\7\u0089\2\2\u0474\u0473\3\2\2\2\u0474\u0475"+ + "\3\2\2\2\u0475\u047b\3\2\2\2\u0476\u0478\7L\2\2\u0477\u0479\7\u0089\2"+ + "\2\u0478\u0477\3\2\2\2\u0478\u0479\3\2\2\2\u0479\u047b\3\2\2\2\u047a\u046c"+ + "\3\2\2\2\u047a\u046e\3\2\2\2\u047a\u0472\3\2\2\2\u047a\u0476\3\2\2\2\u047b"+ + "I\3\2\2\2\u047c\u047d\7\u0083\2\2\u047d\u048b\5X-\2\u047e\u047f\7\u00cb"+ + "\2\2\u047f\u0480\7\4\2\2\u0480\u0485\5\u0096L\2\u0481\u0482\7\6\2\2\u0482"+ + "\u0484\5\u0096L\2\u0483\u0481\3\2\2\2\u0484\u0487\3\2\2\2\u0485\u0483"+ + "\3\2\2\2\u0485\u0486\3\2\2\2\u0486\u0488\3\2\2\2\u0487\u0485\3\2\2\2\u0488"+ + "\u0489\7\5\2\2\u0489\u048b\3\2\2\2\u048a\u047c\3\2\2\2\u048a\u047e\3\2"+ + "\2\2\u048bK\3\2\2\2\u048c\u0493\5P)\2\u048d\u048e\7\u00b9\2\2\u048e\u048f"+ + "\5N(\2\u048f\u0490\7\4\2\2\u0490\u0491\5V,\2\u0491\u0492\7\5\2\2\u0492"+ + "\u0494\3\2\2\2\u0493\u048d\3\2\2\2\u0493\u0494\3\2\2\2\u0494M\3\2\2\2"+ + "\u0495\u0496\t\f\2\2\u0496O\3\2\2\2\u0497\u049f\5T+\2\u0498\u049a\7\24"+ + "\2\2\u0499\u0498\3\2\2\2\u0499\u049a\3\2\2\2\u049a\u049b\3\2\2\2\u049b"+ + "\u049d\5\u0096L\2\u049c\u049e\5R*\2\u049d\u049c\3\2\2\2\u049d\u049e\3"+ + "\2\2\2\u049e\u04a0\3\2\2\2\u049f\u0499\3\2\2\2\u049f\u04a0\3\2\2\2\u04a0"+ + "Q\3\2\2\2\u04a1\u04a2\7\4\2\2\u04a2\u04a7\5\u0096L\2\u04a3\u04a4\7\6\2"+ + "\2\u04a4\u04a6\5\u0096L\2\u04a5\u04a3\3\2\2\2\u04a6\u04a9\3\2\2\2\u04a7"+ + "\u04a5\3\2\2\2\u04a7\u04a8\3\2\2\2\u04a8\u04aa\3\2\2\2\u04a9\u04a7\3\2"+ + "\2\2\u04aa\u04ab\7\5\2\2\u04abS\3\2\2\2\u04ac\u04ca\5\u008eH\2\u04ad\u04ae"+ + "\7\4\2\2\u04ae\u04af\5\n\6\2\u04af\u04b0\7\5\2\2\u04b0\u04ca\3\2\2\2\u04b1"+ + "\u04b2\7\u00c8\2\2\u04b2\u04b3\7\4\2\2\u04b3\u04b8\5V,\2\u04b4\u04b5\7"+ + "\6\2\2\u04b5\u04b7\5V,\2\u04b6\u04b4\3\2\2\2\u04b7\u04ba\3\2\2\2\u04b8"+ + "\u04b6\3\2\2\2\u04b8\u04b9\3\2\2\2\u04b9\u04bb\3\2\2\2\u04ba\u04b8\3\2"+ + "\2\2\u04bb\u04be\7\5\2\2\u04bc\u04bd\7\u00d2\2\2\u04bd\u04bf\7\u0088\2"+ + "\2\u04be\u04bc\3\2\2\2\u04be\u04bf\3\2\2\2\u04bf\u04ca\3\2\2\2\u04c0\u04c1"+ + "\7i\2\2\u04c1\u04c2\7\4\2\2\u04c2\u04c3\5\n\6\2\u04c3\u04c4\7\5\2\2\u04c4"+ + "\u04ca\3\2\2\2\u04c5\u04c6\7\4\2\2\u04c6\u04c7\5F$\2\u04c7\u04c8\7\5\2"+ + "\2\u04c8\u04ca\3\2\2\2\u04c9\u04ac\3\2\2\2\u04c9\u04ad\3\2\2\2\u04c9\u04b1"+ + "\3\2\2\2\u04c9\u04c0\3\2\2\2\u04c9\u04c5\3\2\2\2\u04caU\3\2\2\2\u04cb"+ + "\u04cc\5X-\2\u04ccW\3\2\2\2\u04cd\u04ce\b-\1\2\u04ce\u04d0\5\\/\2\u04cf"+ + "\u04d1\5Z.\2\u04d0\u04cf\3\2\2\2\u04d0\u04d1\3\2\2\2\u04d1\u04d5\3\2\2"+ + "\2\u04d2\u04d3\7~\2\2\u04d3\u04d5\5X-\5\u04d4\u04cd\3\2\2\2\u04d4\u04d2"+ + "\3\2\2\2\u04d5\u04de\3\2\2\2\u04d6\u04d7\f\4\2\2\u04d7\u04d8\7\21\2\2"+ + "\u04d8\u04dd\5X-\5\u04d9\u04da\f\3\2\2\u04da\u04db\7\u0086\2\2\u04db\u04dd"+ + "\5X-\4\u04dc\u04d6\3\2\2\2\u04dc\u04d9\3\2\2\2\u04dd\u04e0\3\2\2\2\u04de"+ + "\u04dc\3\2\2\2\u04de\u04df\3\2\2\2\u04dfY\3\2\2\2\u04e0\u04de\3\2\2\2"+ + "\u04e1\u04e2\5f\64\2\u04e2\u04e3\5\\/\2\u04e3\u051f\3\2\2\2\u04e4\u04e5"+ + "\5f\64\2\u04e5\u04e6\5h\65\2\u04e6\u04e7\7\4\2\2\u04e7\u04e8\5\n\6\2\u04e8"+ + "\u04e9\7\5\2\2\u04e9\u051f\3\2\2\2\u04ea\u04ec\7~\2\2\u04eb\u04ea\3\2"+ + "\2\2\u04eb\u04ec\3\2\2\2\u04ec\u04ed\3\2\2\2\u04ed\u04ee\7\30\2\2\u04ee"+ + "\u04ef\5\\/\2\u04ef\u04f0\7\21\2\2\u04f0\u04f1\5\\/\2\u04f1\u051f\3\2"+ + "\2\2\u04f2\u04f4\7~\2\2\u04f3\u04f2\3\2\2\2\u04f3\u04f4\3\2\2\2\u04f4"+ + "\u04f5\3\2\2\2\u04f5\u04f6\7Y\2\2\u04f6\u04f7\7\4\2\2\u04f7\u04fc\5V,"+ + "\2\u04f8\u04f9\7\6\2\2\u04f9\u04fb\5V,\2\u04fa\u04f8\3\2\2\2\u04fb\u04fe"+ + "\3\2\2\2\u04fc\u04fa\3\2\2\2\u04fc\u04fd\3\2\2\2\u04fd\u04ff\3\2\2\2\u04fe"+ + "\u04fc\3\2\2\2\u04ff\u0500\7\5\2\2\u0500\u051f\3\2\2\2\u0501\u0503\7~"+ + "\2\2\u0502\u0501\3\2\2\2\u0502\u0503\3\2\2\2\u0503\u0504\3\2\2\2\u0504"+ + "\u0505\7Y\2\2\u0505\u0506\7\4\2\2\u0506\u0507\5\n\6\2\u0507\u0508\7\5"+ + "\2\2\u0508\u051f\3\2\2\2\u0509\u050b\7~\2\2\u050a\u0509\3\2\2\2\u050a"+ + "\u050b\3\2\2\2\u050b\u050c\3\2\2\2\u050c\u050d\7l\2\2\u050d\u0510\5\\"+ + "/\2\u050e\u050f\7=\2\2\u050f\u0511\5\\/\2\u0510\u050e\3\2\2\2\u0510\u0511"+ + "\3\2\2\2\u0511\u051f\3\2\2\2\u0512\u0514\7c\2\2\u0513\u0515\7~\2\2\u0514"+ + "\u0513\3\2\2\2\u0514\u0515\3\2\2\2\u0515\u0516\3\2\2\2\u0516\u051f\7\177"+ + "\2\2\u0517\u0519\7c\2\2\u0518\u051a\7~\2\2\u0519\u0518\3\2\2\2\u0519\u051a"+ + "\3\2\2\2\u051a\u051b\3\2\2\2\u051b\u051c\78\2\2\u051c\u051d\7K\2\2\u051d"+ + "\u051f\5\\/\2\u051e\u04e1\3\2\2\2\u051e\u04e4\3\2\2\2\u051e\u04eb\3\2"+ + "\2\2\u051e\u04f3\3\2\2\2\u051e\u0502\3\2\2\2\u051e\u050a\3\2\2\2\u051e"+ + "\u0512\3\2\2\2\u051e\u0517\3\2\2\2\u051f[\3\2\2\2\u0520\u0521\b/\1\2\u0521"+ + "\u0525\5^\60\2\u0522\u0523\t\r\2\2\u0523\u0525\5\\/\6\u0524\u0520\3\2"+ + "\2\2\u0524\u0522\3\2\2\2\u0525\u0534\3\2\2\2\u0526\u0527\f\5\2\2\u0527"+ + "\u0528\t\16\2\2\u0528\u0533\5\\/\6\u0529\u052a\f\4\2\2\u052a\u052b\t\r"+ + "\2\2\u052b\u0533\5\\/\5\u052c\u052d\f\3\2\2\u052d\u052e\7\u00e2\2\2\u052e"+ + "\u0533\5\\/\4\u052f\u0530\f\7\2\2\u0530\u0531\7\26\2\2\u0531\u0533\5d"+ + "\63\2\u0532\u0526\3\2\2\2\u0532\u0529\3\2\2\2\u0532\u052c\3\2\2\2\u0532"+ + "\u052f\3\2\2\2\u0533\u0536\3\2\2\2\u0534\u0532\3\2\2\2\u0534\u0535\3\2"+ + "\2\2\u0535]\3\2\2\2\u0536\u0534\3\2\2\2\u0537\u0538\b\60\1\2\u0538\u0627"+ + "\7\177\2\2\u0539\u0627\5l\67\2\u053a\u053b\5\u0096L\2\u053b\u053c\5`\61"+ + "\2\u053c\u0627\3\2\2\2\u053d\u053e\7\u00ef\2\2\u053e\u0627\5`\61\2\u053f"+ + "\u0627\5\u0098M\2\u0540\u0627\5j\66\2\u0541\u0627\5`\61\2\u0542\u0627"+ + "\7\u00e5\2\2\u0543\u0627\7\7\2\2\u0544\u0545\7\u008e\2\2\u0545\u0546\7"+ + "\4\2\2\u0546\u0547\5\\/\2\u0547\u0548\7Y\2\2\u0548\u0549\5\\/\2\u0549"+ + "\u054a\7\5\2\2\u054a\u0627\3\2\2\2\u054b\u054c\7\4\2\2\u054c\u054f\5V"+ + ",\2\u054d\u054e\7\6\2\2\u054e\u0550\5V,\2\u054f\u054d\3\2\2\2\u0550\u0551"+ + "\3\2\2\2\u0551\u054f\3\2\2\2\u0551\u0552\3\2\2\2\u0552\u0553\3\2\2\2\u0553"+ + "\u0554\7\5\2\2\u0554\u0627\3\2\2\2\u0555\u0556\7\u00a5\2\2\u0556\u0557"+ + "\7\4\2\2\u0557\u055c\5V,\2\u0558\u0559\7\6\2\2\u0559\u055b\5V,\2\u055a"+ + "\u0558\3\2\2\2\u055b\u055e\3\2\2\2\u055c\u055a\3\2\2\2\u055c\u055d\3\2"+ + "\2\2\u055d\u055f\3\2\2\2\u055e\u055c\3\2\2\2\u055f\u0560\7\5\2\2\u0560"+ + "\u0627\3\2\2\2\u0561\u0562\5\u008eH\2\u0562\u0563\7\4\2\2\u0563\u0564"+ + "\7\u00df\2\2\u0564\u0566\7\5\2\2\u0565\u0567\5|?\2\u0566\u0565\3\2\2\2"+ + "\u0566\u0567\3\2\2\2\u0567\u0569\3\2\2\2\u0568\u056a\5~@\2\u0569\u0568"+ + "\3\2\2\2\u0569\u056a\3\2\2\2\u056a\u0627\3\2\2\2\u056b\u056c\5\u008eH"+ + "\2\u056c\u0578\7\4\2\2\u056d\u056f\5B\"\2\u056e\u056d\3\2\2\2\u056e\u056f"+ + "\3\2\2\2\u056f\u0570\3\2\2\2\u0570\u0575\5V,\2\u0571\u0572\7\6\2\2\u0572"+ + "\u0574\5V,\2\u0573\u0571\3\2\2\2\u0574\u0577\3\2\2\2\u0575\u0573\3\2\2"+ + "\2\u0575\u0576\3\2\2\2\u0576\u0579\3\2\2\2\u0577\u0575\3\2\2\2\u0578\u056e"+ + "\3\2\2\2\u0578\u0579\3\2\2\2\u0579\u0584\3\2\2\2\u057a\u057b\7\u0087\2"+ + "\2\u057b\u057c\7\31\2\2\u057c\u0581\5\66\34\2\u057d\u057e\7\6\2\2\u057e"+ + "\u0580\5\66\34\2\u057f\u057d\3\2\2\2\u0580\u0583\3\2\2\2\u0581\u057f\3"+ + "\2\2\2\u0581\u0582\3\2\2\2\u0582\u0585\3\2\2\2\u0583\u0581\3\2\2\2\u0584"+ + "\u057a\3\2\2\2\u0584\u0585\3\2\2\2\u0585\u0586\3\2\2\2\u0586\u0588\7\5"+ + "\2\2\u0587\u0589\5|?\2\u0588\u0587\3\2\2\2\u0588\u0589\3\2\2\2\u0589\u058e"+ + "\3\2\2\2\u058a\u058c\5b\62\2\u058b\u058a\3\2\2\2\u058b\u058c\3\2\2\2\u058c"+ + "\u058d\3\2\2\2\u058d\u058f\5~@\2\u058e\u058b\3\2\2\2\u058e\u058f\3\2\2"+ + "\2\u058f\u0627\3\2\2\2\u0590\u0591\5\u0096L\2\u0591\u0592\7\b\2\2\u0592"+ + "\u0593\5V,\2\u0593\u0627\3\2\2\2\u0594\u059d\7\4\2\2\u0595\u059a\5\u0096"+ + "L\2\u0596\u0597\7\6\2\2\u0597\u0599\5\u0096L\2\u0598\u0596\3\2\2\2\u0599"+ + "\u059c\3\2\2\2\u059a\u0598\3\2\2\2\u059a\u059b\3\2\2\2\u059b\u059e\3\2"+ + "\2\2\u059c\u059a\3\2\2\2\u059d\u0595\3\2\2\2\u059d\u059e\3\2\2\2\u059e"+ + "\u059f\3\2\2\2\u059f\u05a0\7\5\2\2\u05a0\u05a1\7\b\2\2\u05a1\u0627\5V"+ + ",\2\u05a2\u05a3\7\4\2\2\u05a3\u05a4\5\n\6\2\u05a4\u05a5\7\5\2\2\u05a5"+ + "\u0627\3\2\2\2\u05a6\u05a7\7A\2\2\u05a7\u05a8\7\4\2\2\u05a8\u05a9\5\n"+ + "\6\2\u05a9\u05aa\7\5\2\2\u05aa\u0627\3\2\2\2\u05ab\u05ac\7\35\2\2\u05ac"+ + "\u05ae\5\\/\2\u05ad\u05af\5z>\2\u05ae\u05ad\3\2\2\2\u05af\u05b0\3\2\2"+ + "\2\u05b0\u05ae\3\2\2\2\u05b0\u05b1\3\2\2\2\u05b1\u05b4\3\2\2\2\u05b2\u05b3"+ + "\7;\2\2\u05b3\u05b5\5V,\2\u05b4\u05b2\3\2\2\2\u05b4\u05b5\3\2\2\2\u05b5"+ + "\u05b6\3\2\2\2\u05b6\u05b7\7<\2\2\u05b7\u0627\3\2\2\2\u05b8\u05ba\7\35"+ + "\2\2\u05b9\u05bb\5z>\2\u05ba\u05b9\3\2\2\2\u05bb\u05bc\3\2\2\2\u05bc\u05ba"+ + "\3\2\2\2\u05bc\u05bd\3\2\2\2\u05bd\u05c0\3\2\2\2\u05be\u05bf\7;\2\2\u05bf"+ + "\u05c1\5V,\2\u05c0\u05be\3\2\2\2\u05c0\u05c1\3\2\2\2\u05c1\u05c2\3\2\2"+ + "\2\u05c2\u05c3\7<\2\2\u05c3\u0627\3\2\2\2\u05c4\u05c5\7\36\2\2\u05c5\u05c6"+ + "\7\4\2\2\u05c6\u05c7\5V,\2\u05c7\u05c8\7\24\2\2\u05c8\u05c9\5t;\2\u05c9"+ + "\u05ca\7\5\2\2\u05ca\u0627\3\2\2\2\u05cb\u05cc\7\u00c2\2\2\u05cc\u05cd"+ + "\7\4\2\2\u05cd\u05ce\5V,\2\u05ce\u05cf\7\24\2\2\u05cf\u05d0\5t;\2\u05d0"+ + "\u05d1\7\5\2\2\u05d1\u0627\3\2\2\2\u05d2\u05d3\7\23\2\2\u05d3\u05dc\7"+ + "\t\2\2\u05d4\u05d9\5V,\2\u05d5\u05d6\7\6\2\2\u05d6\u05d8\5V,\2\u05d7\u05d5"+ + "\3\2\2\2\u05d8\u05db\3\2\2\2\u05d9\u05d7\3\2\2\2\u05d9\u05da\3\2\2\2\u05da"+ + "\u05dd\3\2\2\2\u05db\u05d9\3\2\2\2\u05dc\u05d4\3\2\2\2\u05dc\u05dd\3\2"+ + "\2\2\u05dd\u05de\3\2\2\2\u05de\u0627\7\n\2\2\u05df\u0627\5\u0096L\2\u05e0"+ + "\u0627\7*\2\2\u05e1\u05e5\7,\2\2\u05e2\u05e3\7\4\2\2\u05e3\u05e4\7\u00e6"+ + "\2\2\u05e4\u05e6\7\5\2\2\u05e5\u05e2\3\2\2\2\u05e5\u05e6\3\2\2\2\u05e6"+ + "\u0627\3\2\2\2\u05e7\u05eb\7-\2\2\u05e8\u05e9\7\4\2\2\u05e9\u05ea\7\u00e6"+ + "\2\2\u05ea\u05ec\7\5\2\2\u05eb\u05e8\3\2\2\2\u05eb\u05ec\3\2\2\2\u05ec"+ + "\u0627\3\2\2\2\u05ed\u05f1\7n\2\2\u05ee\u05ef\7\4\2\2\u05ef\u05f0\7\u00e6"+ + "\2\2\u05f0\u05f2\7\5\2\2\u05f1\u05ee\3\2\2\2\u05f1\u05f2\3\2\2\2\u05f2"+ + "\u0627\3\2\2\2\u05f3\u05f7\7o\2\2\u05f4\u05f5\7\4\2\2\u05f5\u05f6\7\u00e6"+ + "\2\2\u05f6\u05f8\7\5\2\2\u05f7\u05f4\3\2\2\2\u05f7\u05f8\3\2\2\2\u05f8"+ + "\u0627\3\2\2\2\u05f9\u0627\7.\2\2\u05fa\u05fb\7\u00b5\2\2\u05fb\u05fc"+ + "\7\4\2\2\u05fc\u05fd\5\\/\2\u05fd\u05fe\7K\2\2\u05fe\u0601\5\\/\2\u05ff"+ + "\u0600\7I\2\2\u0600\u0602\5\\/\2\u0601\u05ff\3\2\2\2\u0601\u0602\3\2\2"+ + "\2\u0602\u0603\3\2\2\2\u0603\u0604\7\5\2\2\u0604\u0627\3\2\2\2\u0605\u0606"+ + "\7}\2\2\u0606\u0607\7\4\2\2\u0607\u060a\5\\/\2\u0608\u0609\7\6\2\2\u0609"+ + "\u060b\5p9\2\u060a\u0608\3\2\2\2\u060a\u060b\3\2\2\2\u060b\u060c\3\2\2"+ + "\2\u060c\u060d\7\5\2\2\u060d\u0627\3\2\2\2\u060e\u060f\7C\2\2\u060f\u0610"+ + "\7\4\2\2\u0610\u0611\5\u0096L\2\u0611\u0612\7K\2\2\u0612\u0613\5\\/\2"+ + "\u0613\u0614\7\5\2\2\u0614\u0627\3\2\2\2\u0615\u0616\7\4\2\2\u0616\u0617"+ + "\5V,\2\u0617\u0618\7\5\2\2\u0618\u0627\3\2\2\2\u0619\u061a\7T\2\2\u061a"+ + "\u0623\7\4\2\2\u061b\u0620\5\u008eH\2\u061c\u061d\7\6\2\2\u061d\u061f"+ + "\5\u008eH\2\u061e\u061c\3\2\2\2\u061f\u0622\3\2\2\2\u0620\u061e\3\2\2"+ + "\2\u0620\u0621\3\2\2\2\u0621\u0624\3\2\2\2\u0622\u0620\3\2\2\2\u0623\u061b"+ + "\3\2\2\2\u0623\u0624\3\2\2\2\u0624\u0625\3\2\2\2\u0625\u0627\7\5\2\2\u0626"+ + "\u0537\3\2\2\2\u0626\u0539\3\2\2\2\u0626\u053a\3\2\2\2\u0626\u053d\3\2"+ + "\2\2\u0626\u053f\3\2\2\2\u0626\u0540\3\2\2\2\u0626\u0541\3\2\2\2\u0626"+ + "\u0542\3\2\2\2\u0626\u0543\3\2\2\2\u0626\u0544\3\2\2\2\u0626\u054b\3\2"+ + "\2\2\u0626\u0555\3\2\2\2\u0626\u0561\3\2\2\2\u0626\u056b\3\2\2\2\u0626"+ + "\u0590\3\2\2\2\u0626\u0594\3\2\2\2\u0626\u05a2\3\2\2\2\u0626\u05a6\3\2"+ + "\2\2\u0626\u05ab\3\2\2\2\u0626\u05b8\3\2\2\2\u0626\u05c4\3\2\2\2\u0626"+ + "\u05cb\3\2\2\2\u0626\u05d2\3\2\2\2\u0626\u05df\3\2\2\2\u0626\u05e0\3\2"+ + "\2\2\u0626\u05e1\3\2\2\2\u0626\u05e7\3\2\2\2\u0626\u05ed\3\2\2\2\u0626"+ + "\u05f3\3\2\2\2\u0626\u05f9\3\2\2\2\u0626\u05fa\3\2\2\2\u0626\u0605\3\2"+ + "\2\2\u0626\u060e\3\2\2\2\u0626\u0615\3\2\2\2\u0626\u0619\3\2\2\2\u0627"+ + "\u0632\3\2\2\2\u0628\u0629\f\20\2\2\u0629\u062a\7\t\2\2\u062a\u062b\5"+ + "\\/\2\u062b\u062c\7\n\2\2\u062c\u0631\3\2\2\2\u062d\u062e\f\16\2\2\u062e"+ + "\u062f\7\3\2\2\u062f\u0631\5\u0096L\2\u0630\u0628\3\2\2\2\u0630\u062d"+ + "\3\2\2\2\u0631\u0634\3\2\2\2\u0632\u0630\3\2\2\2\u0632\u0633\3\2\2\2\u0633"+ + "_\3\2\2\2\u0634\u0632\3\2\2\2\u0635\u063c\7\u00e3\2\2\u0636\u0639\7\u00e4"+ + "\2\2\u0637\u0638\7\u00c4\2\2\u0638\u063a\7\u00e3\2\2\u0639\u0637\3\2\2"+ + "\2\u0639\u063a\3\2\2\2\u063a\u063c\3\2\2\2\u063b\u0635\3\2\2\2\u063b\u0636"+ + "\3\2\2\2\u063ca\3\2\2\2\u063d\u063e\7X\2\2\u063e\u0642\7\u0081\2\2\u063f"+ + "\u0640\7\u009b\2\2\u0640\u0642\7\u0081\2\2\u0641\u063d\3\2\2\2\u0641\u063f"+ + "\3\2\2\2\u0642c\3\2\2\2\u0643\u0644\7\u00bd\2\2\u0644\u0645\7\u00d6\2"+ + "\2\u0645\u064a\5l\67\2\u0646\u0647\7\u00bd\2\2\u0647\u0648\7\u00d6\2\2"+ + "\u0648\u064a\5`\61\2\u0649\u0643\3\2\2\2\u0649\u0646\3\2\2\2\u064ae\3"+ + "\2\2\2\u064b\u064c\t\17\2\2\u064cg\3\2\2\2\u064d\u064e\t\20\2\2\u064e"+ + "i\3\2\2\2\u064f\u0650\t\21\2\2\u0650k\3\2\2\2\u0651\u0653\7_\2\2\u0652"+ + "\u0654\t\r\2\2\u0653\u0652\3\2\2\2\u0653\u0654\3\2\2\2\u0654\u0655\3\2"+ + "\2\2\u0655\u0656\5`\61\2\u0656\u0659\5n8\2\u0657\u0658\7\u00bf\2\2\u0658"+ + "\u065a\5n8\2\u0659\u0657\3\2\2\2\u0659\u065a\3\2\2\2\u065am\3\2\2\2\u065b"+ + "\u065c\t\22\2\2\u065co\3\2\2\2\u065d\u065e\t\23\2\2\u065eq\3\2\2\2\u065f"+ + "\u0668\7\4\2\2\u0660\u0665\5t;\2\u0661\u0662\7\6\2\2\u0662\u0664\5t;\2"+ + "\u0663\u0661\3\2\2\2\u0664\u0667\3\2\2\2\u0665\u0663\3\2\2\2\u0665\u0666"+ + "\3\2\2\2\u0666\u0669\3\2\2\2\u0667\u0665\3\2\2\2\u0668\u0660\3\2\2\2\u0668"+ + "\u0669\3\2\2\2\u0669\u066a\3\2\2\2\u066a\u066b\7\5\2\2\u066bs\3\2\2\2"+ + "\u066c\u066d\b;\1\2\u066d\u066e\7\23\2\2\u066e\u066f\7\u00d9\2\2\u066f"+ + "\u0670\5t;\2\u0670\u0671\7\u00db\2\2\u0671\u069c\3\2\2\2\u0672\u0673\7"+ + "q\2\2\u0673\u0674\7\u00d9\2\2\u0674\u0675\5t;\2\u0675\u0676\7\6\2\2\u0676"+ + "\u0677\5t;\2\u0677\u0678\7\u00db\2\2\u0678\u069c\3\2\2\2\u0679\u067a\7"+ + "\u00a5\2\2\u067a\u067b\7\4\2\2\u067b\u067c\5\u0096L\2\u067c\u0683\5t;"+ + "\2\u067d\u067e\7\6\2\2\u067e\u067f\5\u0096L\2\u067f\u0680\5t;\2\u0680"+ + "\u0682\3\2\2\2\u0681\u067d\3\2\2\2\u0682\u0685\3\2\2\2\u0683\u0681\3\2"+ + "\2\2\u0683\u0684\3\2\2\2\u0684\u0686\3\2\2\2\u0685\u0683\3\2\2\2\u0686"+ + "\u0687\7\5\2\2\u0687\u069c\3\2\2\2\u0688\u0694\5x=\2\u0689\u068a\7\4\2"+ + "\2\u068a\u068f\5v<\2\u068b\u068c\7\6\2\2\u068c\u068e\5v<\2\u068d\u068b"+ + "\3\2\2\2\u068e\u0691\3\2\2\2\u068f\u068d\3\2\2\2\u068f\u0690\3\2\2\2\u0690"+ + "\u0692\3\2\2\2\u0691\u068f\3\2\2\2\u0692\u0693\7\5\2\2\u0693\u0695\3\2"+ + "\2\2\u0694\u0689\3\2\2\2\u0694\u0695\3\2\2\2\u0695\u069c\3\2\2\2\u0696"+ + "\u0697\7_\2\2\u0697\u0698\5n8\2\u0698\u0699\7\u00bf\2\2\u0699\u069a\5"+ + "n8\2\u069a\u069c\3\2\2\2\u069b\u066c\3\2\2\2\u069b\u0672\3\2\2\2\u069b"+ + "\u0679\3\2\2\2\u069b\u0688\3\2\2\2\u069b\u0696\3\2\2\2\u069c\u06a1\3\2"+ + "\2\2\u069d\u069e\f\b\2\2\u069e\u06a0\7\23\2\2\u069f\u069d\3\2\2\2\u06a0"+ + "\u06a3\3\2\2\2\u06a1\u069f\3\2\2\2\u06a1\u06a2\3\2\2\2\u06a2u\3\2\2\2"+ + "\u06a3\u06a1\3\2\2\2\u06a4\u06a7\7\u00e6\2\2\u06a5\u06a7\5t;\2\u06a6\u06a4"+ + "\3\2\2\2\u06a6\u06a5\3\2\2\2\u06a7w\3\2\2\2\u06a8\u06ad\7\u00ed\2\2\u06a9"+ + "\u06ad\7\u00ee\2\2\u06aa\u06ad\7\u00ef\2\2\u06ab\u06ad\5\u008eH\2\u06ac"+ + "\u06a8\3\2\2\2\u06ac\u06a9\3\2\2\2\u06ac\u06aa\3\2\2\2\u06ac\u06ab\3\2"+ + "\2\2\u06ady\3\2\2\2\u06ae\u06af\7\u00d0\2\2\u06af\u06b0\5V,\2\u06b0\u06b1"+ + "\7\u00bc\2\2\u06b1\u06b2\5V,\2\u06b2{\3\2\2\2\u06b3\u06b4\7F\2\2\u06b4"+ + "\u06b5\7\4\2\2\u06b5\u06b6\7\u00d1\2\2\u06b6\u06b7\5X-\2\u06b7\u06b8\7"+ + "\5\2\2\u06b8}\3\2\2\2\u06b9\u06ba\7\u008b\2\2\u06ba\u06c5\7\4\2\2\u06bb"+ + "\u06bc\7\u008c\2\2\u06bc\u06bd\7\31\2\2\u06bd\u06c2\5V,\2\u06be\u06bf"+ + "\7\6\2\2\u06bf\u06c1\5V,\2\u06c0\u06be\3\2\2\2\u06c1\u06c4\3\2\2\2\u06c2"+ + "\u06c0\3\2\2\2\u06c2\u06c3\3\2\2\2\u06c3\u06c6\3\2\2\2\u06c4\u06c2\3\2"+ + "\2\2\u06c5\u06bb\3\2\2\2\u06c5\u06c6\3\2\2\2\u06c6\u06d1\3\2\2\2\u06c7"+ + "\u06c8\7\u0087\2\2\u06c8\u06c9\7\31\2\2\u06c9\u06ce\5\66\34\2\u06ca\u06cb"+ + "\7\6\2\2\u06cb\u06cd\5\66\34\2\u06cc\u06ca\3\2\2\2\u06cd\u06d0\3\2\2\2"+ + "\u06ce\u06cc\3\2\2\2\u06ce\u06cf\3\2\2\2\u06cf\u06d2\3\2\2\2\u06d0\u06ce"+ + "\3\2\2\2\u06d1\u06c7\3\2\2\2\u06d1\u06d2\3\2\2\2\u06d2\u06d4\3\2\2\2\u06d3"+ + "\u06d5\5\u0080A\2\u06d4\u06d3\3\2\2\2\u06d4\u06d5\3\2\2\2\u06d5\u06d6"+ + "\3\2\2\2\u06d6\u06d7\7\5\2\2\u06d7\177\3\2\2\2\u06d8\u06d9\7\u0093\2\2"+ + "\u06d9\u06e9\5\u0082B\2\u06da\u06db\7\u00a6\2\2\u06db\u06e9\5\u0082B\2"+ + "\u06dc\u06dd\7\u0093\2\2\u06dd\u06de\7\30\2\2\u06de\u06df\5\u0082B\2\u06df"+ + "\u06e0\7\21\2\2\u06e0\u06e1\5\u0082B\2\u06e1\u06e9\3\2\2\2\u06e2\u06e3"+ + "\7\u00a6\2\2\u06e3\u06e4\7\30\2\2\u06e4\u06e5\5\u0082B\2\u06e5\u06e6\7"+ + "\21\2\2\u06e6\u06e7\5\u0082B\2\u06e7\u06e9\3\2\2\2\u06e8\u06d8\3\2\2\2"+ + "\u06e8\u06da\3\2\2\2\u06e8\u06dc\3\2\2\2\u06e8\u06e2\3\2\2\2\u06e9\u0081"+ + "\3\2\2\2\u06ea\u06eb\7\u00c5\2\2\u06eb\u06f4\7\u008f\2\2\u06ec\u06ed\7"+ + "\u00c5\2\2\u06ed\u06f4\7H\2\2\u06ee\u06ef\7)\2\2\u06ef\u06f4\7\u00a5\2"+ + "\2\u06f0\u06f1\5V,\2\u06f1\u06f2\t\24\2\2\u06f2\u06f4\3\2\2\2\u06f3\u06ea"+ + "\3\2\2\2\u06f3\u06ec\3\2\2\2\u06f3\u06ee\3\2\2\2\u06f3\u06f0\3\2\2\2\u06f4"+ + "\u0083\3\2\2\2\u06f5\u06f6\7J\2\2\u06f6\u06fa\t\25\2\2\u06f7\u06f8\7\u00c3"+ + "\2\2\u06f8\u06fa\t\26\2\2\u06f9\u06f5\3\2\2\2\u06f9\u06f7\3\2\2\2\u06fa"+ + "\u0085\3\2\2\2\u06fb\u06fc\7d\2\2\u06fc\u06fd\7k\2\2\u06fd\u0701\5\u0088"+ + "E\2\u06fe\u06ff\7\u0094\2\2\u06ff\u0701\t\27\2\2\u0700\u06fb\3\2\2\2\u0700"+ + "\u06fe\3\2\2\2\u0701\u0087\3\2\2\2\u0702\u0703\7\u0094\2\2\u0703\u070a"+ + "\7\u00c6\2\2\u0704\u0705\7\u0094\2\2\u0705\u070a\7$\2\2\u0706\u0707\7"+ + "\u0098\2\2\u0707\u070a\7\u0094\2\2\u0708\u070a\7\u00ac\2\2\u0709\u0702"+ + "\3\2\2\2\u0709\u0704\3\2\2\2\u0709\u0706\3\2\2\2\u0709\u0708\3\2\2\2\u070a"+ + "\u0089\3\2\2\2\u070b\u0711\5V,\2\u070c\u070d\5\u0096L\2\u070d\u070e\7"+ + "\13\2\2\u070e\u070f\5V,\2\u070f\u0711\3\2\2\2\u0710\u070b\3\2\2\2\u0710"+ + "\u070c\3\2\2\2\u0711\u008b\3\2\2\2\u0712\u0717\7\u00ab\2\2\u0713\u0717"+ + "\7\64\2\2\u0714\u0717\7]\2\2\u0715\u0717\5\u0096L\2\u0716\u0712\3\2\2"+ + "\2\u0716\u0713\3\2\2\2\u0716\u0714\3\2\2\2\u0716\u0715\3\2\2\2\u0717\u008d"+ + "\3\2\2\2\u0718\u071d\5\u0096L\2\u0719\u071a\7\3\2\2\u071a\u071c\5\u0096"+ + "L\2\u071b\u0719\3\2\2\2\u071c\u071f\3\2\2\2\u071d\u071b\3\2\2\2\u071d"+ + "\u071e\3\2\2\2\u071e\u008f\3\2\2\2\u071f\u071d\3\2\2\2\u0720\u0724\7."+ + "\2\2\u0721\u0724\7+\2\2\u0722\u0724\5\u0092J\2\u0723\u0720\3\2\2\2\u0723"+ + "\u0721\3\2\2\2\u0723\u0722\3\2\2\2\u0724\u0091\3\2\2\2\u0725\u0726\7\u00ca"+ + "\2\2\u0726\u072b\5\u0096L\2\u0727\u0728\7\u00a1\2\2\u0728\u072b\5\u0096"+ + "L\2\u0729\u072b\5\u0096L\2\u072a\u0725\3\2\2\2\u072a\u0727\3\2\2\2\u072a"+ + "\u0729\3\2\2\2\u072b\u0093\3\2\2\2\u072c\u0731\5\u0096L\2\u072d\u072e"+ + "\7\6\2\2\u072e\u0730\5\u0096L\2\u072f\u072d\3\2\2\2\u0730\u0733\3\2\2"+ + "\2\u0731\u072f\3\2\2\2\u0731\u0732\3\2\2\2\u0732\u0095\3\2\2\2\u0733\u0731"+ + "\3\2\2\2\u0734\u073a\7\u00e9\2\2\u0735\u073a\7\u00eb\2\2\u0736\u073a\5"+ + "\u009aN\2\u0737\u073a\7\u00ec\2\2\u0738\u073a\7\u00ea\2\2\u0739\u0734"+ + "\3\2\2\2\u0739\u0735\3\2\2\2\u0739\u0736\3\2\2\2\u0739\u0737\3\2\2\2\u0739"+ + "\u0738\3\2\2\2\u073a\u0097\3\2\2\2\u073b\u073f\7\u00e7\2\2\u073c\u073f"+ + "\7\u00e8\2\2\u073d\u073f\7\u00e6\2\2\u073e\u073b\3\2\2\2\u073e\u073c\3"+ + "\2\2\2\u073e\u073d\3\2\2\2\u073f\u0099\3\2\2\2\u0740\u0741\t\30\2\2\u0741"+ + "\u009b\3\2\2\2\u00f0\u00b2\u00b7\u00bd\u00c1\u00cf\u00d3\u00d7\u00db\u00e3"+ + "\u00e7\u00ea\u00f1\u00fa\u0100\u0104\u010a\u0111\u011a\u0120\u012b\u0132"+ + "\u013c\u0143\u014b\u0153\u015b\u0167\u016d\u0172\u0178\u0181\u018a\u018f"+ + "\u0193\u019b\u01a2\u01af\u01b2\u01bc\u01bf\u01c6\u01cf\u01d5\u01da\u01de"+ + "\u01e8\u01eb\u01f5\u0202\u0208\u020d\u0213\u021c\u0222\u0229\u0231\u0236"+ + "\u023a\u0242\u0248\u024f\u0254\u0258\u0262\u0265\u0269\u026c\u0274\u0279"+ + "\u028e\u0294\u029a\u029c\u02a2\u02a8\u02aa\u02b0\u02c3\u02c8\u02cf\u02db"+ + "\u02dd\u02f1\u02f4\u02f8\u02fc\u030e\u0311\u0319\u031c\u0322\u0329\u032e"+ + "\u0334\u0338\u033c\u0342\u034a\u0359\u0360\u0365\u036c\u0374\u0378\u037d"+ + "\u0388\u0394\u0397\u039c\u039e\u03a2\u03aa\u03b0\u03b3\u03b5\u03c1\u03c8"+ + "\u03cc\u03d0\u03d4\u03db\u03e4\u03e7\u03eb\u03f0\u03f4\u03f7\u03fe\u0409"+ + "\u040c\u0416\u0419\u0424\u0429\u0431\u0434\u0438\u043c\u0447\u044a\u0451"+ + "\u0464\u0468\u046c\u0470\u0474\u0478\u047a\u0485\u048a\u0493\u0499\u049d"+ + "\u049f\u04a7\u04b8\u04be\u04c9\u04d0\u04d4\u04dc\u04de\u04eb\u04f3\u04fc"+ + "\u0502\u050a\u0510\u0514\u0519\u051e\u0524\u0532\u0534\u0551\u055c\u0566"+ + "\u0569\u056e\u0575\u0578\u0581\u0584\u0588\u058b\u058e\u059a\u059d\u05b0"+ + "\u05b4\u05bc\u05c0\u05d9\u05dc\u05e5\u05eb\u05f1\u05f7\u0601\u060a\u0620"+ + "\u0623\u0626\u0630\u0632\u0639\u063b\u0641\u0649\u0653\u0659\u0665\u0668"+ + "\u0683\u068f\u0694\u069b\u06a1\u06a6\u06ac\u06c2\u06c5\u06ce\u06d1\u06d4"+ + "\u06e8\u06f3\u06f9\u0700\u0709\u0710\u0716\u071d\u0723\u072a\u0731\u0739"+ + "\u073e"; + 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/src/main/java/com/github/bigdata/sql/antlr4/presto/PrestoSqlVisitor.java b/src/main/java/com/github/bigdata/sql/antlr4/presto/PrestoSqlVisitor.java new file mode 100644 index 0000000..60fd888 --- /dev/null +++ b/src/main/java/com/github/bigdata/sql/antlr4/presto/PrestoSqlVisitor.java @@ -0,0 +1,1400 @@ +// Generated from com/github/bigdata/sql/antlr4/presto/PrestoSql.g4 by ANTLR 4.7 +package com.github.bigdata.sql.antlr4.presto; +import org.antlr.v4.runtime.tree.ParseTreeVisitor; + +/** + * This interface defines a complete generic visitor for a parse tree produced + * by {@link PrestoSqlParser}. + * + * @param The return type of the visit operation. Use {@link Void} for + * operations with no return type. + */ +public interface PrestoSqlVisitor extends ParseTreeVisitor { + /** + * Visit a parse tree produced by {@link PrestoSqlParser#singleStatement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitSingleStatement(PrestoSqlParser.SingleStatementContext ctx); + /** + * Visit a parse tree produced by {@link PrestoSqlParser#standaloneExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitStandaloneExpression(PrestoSqlParser.StandaloneExpressionContext ctx); + /** + * Visit a parse tree produced by {@link PrestoSqlParser#standaloneRoutineBody}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitStandaloneRoutineBody(PrestoSqlParser.StandaloneRoutineBodyContext ctx); + /** + * Visit a parse tree produced by the {@code statementDefault} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitStatementDefault(PrestoSqlParser.StatementDefaultContext ctx); + /** + * Visit a parse tree produced by the {@code use} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitUse(PrestoSqlParser.UseContext ctx); + /** + * Visit a parse tree produced by the {@code createSchema} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitCreateSchema(PrestoSqlParser.CreateSchemaContext ctx); + /** + * Visit a parse tree produced by the {@code dropSchema} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitDropSchema(PrestoSqlParser.DropSchemaContext ctx); + /** + * Visit a parse tree produced by the {@code renameSchema} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitRenameSchema(PrestoSqlParser.RenameSchemaContext ctx); + /** + * Visit a parse tree produced by the {@code createTableAsSelect} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitCreateTableAsSelect(PrestoSqlParser.CreateTableAsSelectContext ctx); + /** + * Visit a parse tree produced by the {@code createTable} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitCreateTable(PrestoSqlParser.CreateTableContext ctx); + /** + * Visit a parse tree produced by the {@code dropTable} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitDropTable(PrestoSqlParser.DropTableContext ctx); + /** + * Visit a parse tree produced by the {@code insertInto} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitInsertInto(PrestoSqlParser.InsertIntoContext ctx); + /** + * Visit a parse tree produced by the {@code delete} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitDelete(PrestoSqlParser.DeleteContext ctx); + /** + * Visit a parse tree produced by the {@code renameTable} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitRenameTable(PrestoSqlParser.RenameTableContext ctx); + /** + * Visit a parse tree produced by the {@code renameColumn} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitRenameColumn(PrestoSqlParser.RenameColumnContext ctx); + /** + * Visit a parse tree produced by the {@code dropColumn} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitDropColumn(PrestoSqlParser.DropColumnContext ctx); + /** + * Visit a parse tree produced by the {@code addColumn} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitAddColumn(PrestoSqlParser.AddColumnContext ctx); + /** + * Visit a parse tree produced by the {@code analyze} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitAnalyze(PrestoSqlParser.AnalyzeContext ctx); + /** + * Visit a parse tree produced by the {@code createType} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitCreateType(PrestoSqlParser.CreateTypeContext ctx); + /** + * Visit a parse tree produced by the {@code createView} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitCreateView(PrestoSqlParser.CreateViewContext ctx); + /** + * Visit a parse tree produced by the {@code dropView} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitDropView(PrestoSqlParser.DropViewContext ctx); + /** + * Visit a parse tree produced by the {@code createMaterializedView} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitCreateMaterializedView(PrestoSqlParser.CreateMaterializedViewContext ctx); + /** + * Visit a parse tree produced by the {@code dropMaterializedView} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitDropMaterializedView(PrestoSqlParser.DropMaterializedViewContext ctx); + /** + * Visit a parse tree produced by the {@code refreshMaterializedView} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitRefreshMaterializedView(PrestoSqlParser.RefreshMaterializedViewContext ctx); + /** + * Visit a parse tree produced by the {@code createFunction} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitCreateFunction(PrestoSqlParser.CreateFunctionContext ctx); + /** + * Visit a parse tree produced by the {@code alterFunction} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitAlterFunction(PrestoSqlParser.AlterFunctionContext ctx); + /** + * Visit a parse tree produced by the {@code dropFunction} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitDropFunction(PrestoSqlParser.DropFunctionContext ctx); + /** + * Visit a parse tree produced by the {@code call} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitCall(PrestoSqlParser.CallContext ctx); + /** + * Visit a parse tree produced by the {@code createRole} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitCreateRole(PrestoSqlParser.CreateRoleContext ctx); + /** + * Visit a parse tree produced by the {@code dropRole} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitDropRole(PrestoSqlParser.DropRoleContext ctx); + /** + * Visit a parse tree produced by the {@code grantRoles} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitGrantRoles(PrestoSqlParser.GrantRolesContext ctx); + /** + * Visit a parse tree produced by the {@code revokeRoles} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitRevokeRoles(PrestoSqlParser.RevokeRolesContext ctx); + /** + * Visit a parse tree produced by the {@code setRole} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitSetRole(PrestoSqlParser.SetRoleContext ctx); + /** + * Visit a parse tree produced by the {@code grant} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitGrant(PrestoSqlParser.GrantContext ctx); + /** + * Visit a parse tree produced by the {@code revoke} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitRevoke(PrestoSqlParser.RevokeContext ctx); + /** + * Visit a parse tree produced by the {@code showGrants} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitShowGrants(PrestoSqlParser.ShowGrantsContext ctx); + /** + * Visit a parse tree produced by the {@code explain} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitExplain(PrestoSqlParser.ExplainContext ctx); + /** + * Visit a parse tree produced by the {@code showCreateTable} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitShowCreateTable(PrestoSqlParser.ShowCreateTableContext ctx); + /** + * Visit a parse tree produced by the {@code showCreateView} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitShowCreateView(PrestoSqlParser.ShowCreateViewContext ctx); + /** + * Visit a parse tree produced by the {@code showCreateMaterializedView} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitShowCreateMaterializedView(PrestoSqlParser.ShowCreateMaterializedViewContext ctx); + /** + * Visit a parse tree produced by the {@code showCreateFunction} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitShowCreateFunction(PrestoSqlParser.ShowCreateFunctionContext ctx); + /** + * Visit a parse tree produced by the {@code showTables} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitShowTables(PrestoSqlParser.ShowTablesContext ctx); + /** + * Visit a parse tree produced by the {@code showSchemas} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitShowSchemas(PrestoSqlParser.ShowSchemasContext ctx); + /** + * Visit a parse tree produced by the {@code showCatalogs} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitShowCatalogs(PrestoSqlParser.ShowCatalogsContext ctx); + /** + * Visit a parse tree produced by the {@code showColumns} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitShowColumns(PrestoSqlParser.ShowColumnsContext ctx); + /** + * Visit a parse tree produced by the {@code showStats} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitShowStats(PrestoSqlParser.ShowStatsContext ctx); + /** + * Visit a parse tree produced by the {@code showStatsForQuery} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitShowStatsForQuery(PrestoSqlParser.ShowStatsForQueryContext ctx); + /** + * Visit a parse tree produced by the {@code showRoles} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitShowRoles(PrestoSqlParser.ShowRolesContext ctx); + /** + * Visit a parse tree produced by the {@code showRoleGrants} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitShowRoleGrants(PrestoSqlParser.ShowRoleGrantsContext ctx); + /** + * Visit a parse tree produced by the {@code showFunctions} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitShowFunctions(PrestoSqlParser.ShowFunctionsContext ctx); + /** + * Visit a parse tree produced by the {@code showSession} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitShowSession(PrestoSqlParser.ShowSessionContext ctx); + /** + * Visit a parse tree produced by the {@code setSession} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitSetSession(PrestoSqlParser.SetSessionContext ctx); + /** + * Visit a parse tree produced by the {@code resetSession} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitResetSession(PrestoSqlParser.ResetSessionContext ctx); + /** + * Visit a parse tree produced by the {@code startTransaction} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitStartTransaction(PrestoSqlParser.StartTransactionContext ctx); + /** + * Visit a parse tree produced by the {@code commit} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitCommit(PrestoSqlParser.CommitContext ctx); + /** + * Visit a parse tree produced by the {@code rollback} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitRollback(PrestoSqlParser.RollbackContext ctx); + /** + * Visit a parse tree produced by the {@code prepare} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitPrepare(PrestoSqlParser.PrepareContext ctx); + /** + * Visit a parse tree produced by the {@code deallocate} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitDeallocate(PrestoSqlParser.DeallocateContext ctx); + /** + * Visit a parse tree produced by the {@code execute} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitExecute(PrestoSqlParser.ExecuteContext ctx); + /** + * Visit a parse tree produced by the {@code describeInput} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitDescribeInput(PrestoSqlParser.DescribeInputContext ctx); + /** + * Visit a parse tree produced by the {@code describeOutput} + * labeled alternative in {@link PrestoSqlParser#statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitDescribeOutput(PrestoSqlParser.DescribeOutputContext ctx); + /** + * Visit a parse tree produced by {@link PrestoSqlParser#query}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitQuery(PrestoSqlParser.QueryContext ctx); + /** + * Visit a parse tree produced by {@link PrestoSqlParser#with}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitWith(PrestoSqlParser.WithContext ctx); + /** + * Visit a parse tree produced by {@link PrestoSqlParser#tableElement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitTableElement(PrestoSqlParser.TableElementContext ctx); + /** + * Visit a parse tree produced by {@link PrestoSqlParser#columnDefinition}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitColumnDefinition(PrestoSqlParser.ColumnDefinitionContext ctx); + /** + * Visit a parse tree produced by {@link PrestoSqlParser#likeClause}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitLikeClause(PrestoSqlParser.LikeClauseContext ctx); + /** + * Visit a parse tree produced by {@link PrestoSqlParser#properties}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitProperties(PrestoSqlParser.PropertiesContext ctx); + /** + * Visit a parse tree produced by {@link PrestoSqlParser#property}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitProperty(PrestoSqlParser.PropertyContext ctx); + /** + * Visit a parse tree produced by {@link PrestoSqlParser#sqlParameterDeclaration}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitSqlParameterDeclaration(PrestoSqlParser.SqlParameterDeclarationContext ctx); + /** + * Visit a parse tree produced by {@link PrestoSqlParser#routineCharacteristics}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitRoutineCharacteristics(PrestoSqlParser.RoutineCharacteristicsContext ctx); + /** + * Visit a parse tree produced by {@link PrestoSqlParser#routineCharacteristic}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitRoutineCharacteristic(PrestoSqlParser.RoutineCharacteristicContext ctx); + /** + * Visit a parse tree produced by {@link PrestoSqlParser#alterRoutineCharacteristics}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitAlterRoutineCharacteristics(PrestoSqlParser.AlterRoutineCharacteristicsContext ctx); + /** + * Visit a parse tree produced by {@link PrestoSqlParser#alterRoutineCharacteristic}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitAlterRoutineCharacteristic(PrestoSqlParser.AlterRoutineCharacteristicContext ctx); + /** + * Visit a parse tree produced by {@link PrestoSqlParser#routineBody}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitRoutineBody(PrestoSqlParser.RoutineBodyContext ctx); + /** + * Visit a parse tree produced by {@link PrestoSqlParser#returnStatement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitReturnStatement(PrestoSqlParser.ReturnStatementContext ctx); + /** + * Visit a parse tree produced by {@link PrestoSqlParser#externalBodyReference}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitExternalBodyReference(PrestoSqlParser.ExternalBodyReferenceContext ctx); + /** + * Visit a parse tree produced by {@link PrestoSqlParser#language}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitLanguage(PrestoSqlParser.LanguageContext ctx); + /** + * Visit a parse tree produced by {@link PrestoSqlParser#determinism}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitDeterminism(PrestoSqlParser.DeterminismContext ctx); + /** + * Visit a parse tree produced by {@link PrestoSqlParser#nullCallClause}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitNullCallClause(PrestoSqlParser.NullCallClauseContext ctx); + /** + * Visit a parse tree produced by {@link PrestoSqlParser#externalRoutineName}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitExternalRoutineName(PrestoSqlParser.ExternalRoutineNameContext ctx); + /** + * Visit a parse tree produced by {@link PrestoSqlParser#queryNoWith}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitQueryNoWith(PrestoSqlParser.QueryNoWithContext ctx); + /** + * Visit a parse tree produced by the {@code queryTermDefault} + * labeled alternative in {@link PrestoSqlParser#queryTerm}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitQueryTermDefault(PrestoSqlParser.QueryTermDefaultContext ctx); + /** + * Visit a parse tree produced by the {@code setOperation} + * labeled alternative in {@link PrestoSqlParser#queryTerm}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitSetOperation(PrestoSqlParser.SetOperationContext ctx); + /** + * Visit a parse tree produced by the {@code queryPrimaryDefault} + * labeled alternative in {@link PrestoSqlParser#queryPrimary}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitQueryPrimaryDefault(PrestoSqlParser.QueryPrimaryDefaultContext ctx); + /** + * Visit a parse tree produced by the {@code table} + * labeled alternative in {@link PrestoSqlParser#queryPrimary}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitTable(PrestoSqlParser.TableContext ctx); + /** + * Visit a parse tree produced by the {@code inlineTable} + * labeled alternative in {@link PrestoSqlParser#queryPrimary}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitInlineTable(PrestoSqlParser.InlineTableContext ctx); + /** + * Visit a parse tree produced by the {@code subquery} + * labeled alternative in {@link PrestoSqlParser#queryPrimary}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitSubquery(PrestoSqlParser.SubqueryContext ctx); + /** + * Visit a parse tree produced by {@link PrestoSqlParser#sortItem}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitSortItem(PrestoSqlParser.SortItemContext ctx); + /** + * Visit a parse tree produced by {@link PrestoSqlParser#querySpecification}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitQuerySpecification(PrestoSqlParser.QuerySpecificationContext ctx); + /** + * Visit a parse tree produced by {@link PrestoSqlParser#groupBy}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitGroupBy(PrestoSqlParser.GroupByContext ctx); + /** + * Visit a parse tree produced by the {@code singleGroupingSet} + * labeled alternative in {@link PrestoSqlParser#groupingElement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitSingleGroupingSet(PrestoSqlParser.SingleGroupingSetContext ctx); + /** + * Visit a parse tree produced by the {@code rollup} + * labeled alternative in {@link PrestoSqlParser#groupingElement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitRollup(PrestoSqlParser.RollupContext ctx); + /** + * Visit a parse tree produced by the {@code cube} + * labeled alternative in {@link PrestoSqlParser#groupingElement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitCube(PrestoSqlParser.CubeContext ctx); + /** + * Visit a parse tree produced by the {@code multipleGroupingSets} + * labeled alternative in {@link PrestoSqlParser#groupingElement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitMultipleGroupingSets(PrestoSqlParser.MultipleGroupingSetsContext ctx); + /** + * Visit a parse tree produced by {@link PrestoSqlParser#groupingSet}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitGroupingSet(PrestoSqlParser.GroupingSetContext ctx); + /** + * Visit a parse tree produced by {@link PrestoSqlParser#namedQuery}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitNamedQuery(PrestoSqlParser.NamedQueryContext ctx); + /** + * Visit a parse tree produced by {@link PrestoSqlParser#setQuantifier}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitSetQuantifier(PrestoSqlParser.SetQuantifierContext ctx); + /** + * Visit a parse tree produced by the {@code selectSingle} + * labeled alternative in {@link PrestoSqlParser#selectItem}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitSelectSingle(PrestoSqlParser.SelectSingleContext ctx); + /** + * Visit a parse tree produced by the {@code selectAll} + * labeled alternative in {@link PrestoSqlParser#selectItem}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitSelectAll(PrestoSqlParser.SelectAllContext ctx); + /** + * Visit a parse tree produced by the {@code relationDefault} + * labeled alternative in {@link PrestoSqlParser#relation}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitRelationDefault(PrestoSqlParser.RelationDefaultContext ctx); + /** + * Visit a parse tree produced by the {@code joinRelation} + * labeled alternative in {@link PrestoSqlParser#relation}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitJoinRelation(PrestoSqlParser.JoinRelationContext ctx); + /** + * Visit a parse tree produced by {@link PrestoSqlParser#joinType}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitJoinType(PrestoSqlParser.JoinTypeContext ctx); + /** + * Visit a parse tree produced by {@link PrestoSqlParser#joinCriteria}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitJoinCriteria(PrestoSqlParser.JoinCriteriaContext ctx); + /** + * Visit a parse tree produced by {@link PrestoSqlParser#sampledRelation}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitSampledRelation(PrestoSqlParser.SampledRelationContext ctx); + /** + * Visit a parse tree produced by {@link PrestoSqlParser#sampleType}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitSampleType(PrestoSqlParser.SampleTypeContext ctx); + /** + * Visit a parse tree produced by {@link PrestoSqlParser#aliasedRelation}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitAliasedRelation(PrestoSqlParser.AliasedRelationContext ctx); + /** + * Visit a parse tree produced by {@link PrestoSqlParser#columnAliases}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitColumnAliases(PrestoSqlParser.ColumnAliasesContext ctx); + /** + * Visit a parse tree produced by the {@code tableName} + * labeled alternative in {@link PrestoSqlParser#relationPrimary}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitTableName(PrestoSqlParser.TableNameContext ctx); + /** + * Visit a parse tree produced by the {@code subqueryRelation} + * labeled alternative in {@link PrestoSqlParser#relationPrimary}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitSubqueryRelation(PrestoSqlParser.SubqueryRelationContext ctx); + /** + * Visit a parse tree produced by the {@code unnest} + * labeled alternative in {@link PrestoSqlParser#relationPrimary}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitUnnest(PrestoSqlParser.UnnestContext ctx); + /** + * Visit a parse tree produced by the {@code lateral} + * labeled alternative in {@link PrestoSqlParser#relationPrimary}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitLateral(PrestoSqlParser.LateralContext ctx); + /** + * Visit a parse tree produced by the {@code parenthesizedRelation} + * labeled alternative in {@link PrestoSqlParser#relationPrimary}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitParenthesizedRelation(PrestoSqlParser.ParenthesizedRelationContext ctx); + /** + * Visit a parse tree produced by {@link PrestoSqlParser#expression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitExpression(PrestoSqlParser.ExpressionContext ctx); + /** + * Visit a parse tree produced by the {@code logicalNot} + * labeled alternative in {@link PrestoSqlParser#booleanExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitLogicalNot(PrestoSqlParser.LogicalNotContext ctx); + /** + * Visit a parse tree produced by the {@code predicated} + * labeled alternative in {@link PrestoSqlParser#booleanExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitPredicated(PrestoSqlParser.PredicatedContext ctx); + /** + * Visit a parse tree produced by the {@code logicalBinary} + * labeled alternative in {@link PrestoSqlParser#booleanExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitLogicalBinary(PrestoSqlParser.LogicalBinaryContext ctx); + /** + * Visit a parse tree produced by the {@code comparison} + * labeled alternative in {@link PrestoSqlParser#predicate}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitComparison(PrestoSqlParser.ComparisonContext ctx); + /** + * Visit a parse tree produced by the {@code quantifiedComparison} + * labeled alternative in {@link PrestoSqlParser#predicate}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitQuantifiedComparison(PrestoSqlParser.QuantifiedComparisonContext ctx); + /** + * Visit a parse tree produced by the {@code between} + * labeled alternative in {@link PrestoSqlParser#predicate}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitBetween(PrestoSqlParser.BetweenContext ctx); + /** + * Visit a parse tree produced by the {@code inList} + * labeled alternative in {@link PrestoSqlParser#predicate}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitInList(PrestoSqlParser.InListContext ctx); + /** + * Visit a parse tree produced by the {@code inSubquery} + * labeled alternative in {@link PrestoSqlParser#predicate}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitInSubquery(PrestoSqlParser.InSubqueryContext ctx); + /** + * Visit a parse tree produced by the {@code like} + * labeled alternative in {@link PrestoSqlParser#predicate}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitLike(PrestoSqlParser.LikeContext ctx); + /** + * Visit a parse tree produced by the {@code nullPredicate} + * labeled alternative in {@link PrestoSqlParser#predicate}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitNullPredicate(PrestoSqlParser.NullPredicateContext ctx); + /** + * Visit a parse tree produced by the {@code distinctFrom} + * labeled alternative in {@link PrestoSqlParser#predicate}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitDistinctFrom(PrestoSqlParser.DistinctFromContext ctx); + /** + * Visit a parse tree produced by the {@code valueExpressionDefault} + * labeled alternative in {@link PrestoSqlParser#valueExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitValueExpressionDefault(PrestoSqlParser.ValueExpressionDefaultContext ctx); + /** + * Visit a parse tree produced by the {@code concatenation} + * labeled alternative in {@link PrestoSqlParser#valueExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitConcatenation(PrestoSqlParser.ConcatenationContext ctx); + /** + * Visit a parse tree produced by the {@code arithmeticBinary} + * labeled alternative in {@link PrestoSqlParser#valueExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitArithmeticBinary(PrestoSqlParser.ArithmeticBinaryContext ctx); + /** + * Visit a parse tree produced by the {@code arithmeticUnary} + * labeled alternative in {@link PrestoSqlParser#valueExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitArithmeticUnary(PrestoSqlParser.ArithmeticUnaryContext ctx); + /** + * Visit a parse tree produced by the {@code atTimeZone} + * labeled alternative in {@link PrestoSqlParser#valueExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitAtTimeZone(PrestoSqlParser.AtTimeZoneContext ctx); + /** + * Visit a parse tree produced by the {@code dereference} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitDereference(PrestoSqlParser.DereferenceContext ctx); + /** + * Visit a parse tree produced by the {@code typeConstructor} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitTypeConstructor(PrestoSqlParser.TypeConstructorContext ctx); + /** + * Visit a parse tree produced by the {@code specialDateTimeFunction} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitSpecialDateTimeFunction(PrestoSqlParser.SpecialDateTimeFunctionContext ctx); + /** + * Visit a parse tree produced by the {@code substring} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitSubstring(PrestoSqlParser.SubstringContext ctx); + /** + * Visit a parse tree produced by the {@code cast} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitCast(PrestoSqlParser.CastContext ctx); + /** + * Visit a parse tree produced by the {@code lambda} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitLambda(PrestoSqlParser.LambdaContext ctx); + /** + * Visit a parse tree produced by the {@code parenthesizedExpression} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitParenthesizedExpression(PrestoSqlParser.ParenthesizedExpressionContext ctx); + /** + * Visit a parse tree produced by the {@code parameter} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitParameter(PrestoSqlParser.ParameterContext ctx); + /** + * Visit a parse tree produced by the {@code normalize} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitNormalize(PrestoSqlParser.NormalizeContext ctx); + /** + * Visit a parse tree produced by the {@code intervalLiteral} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitIntervalLiteral(PrestoSqlParser.IntervalLiteralContext ctx); + /** + * Visit a parse tree produced by the {@code numericLiteral} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitNumericLiteral(PrestoSqlParser.NumericLiteralContext ctx); + /** + * Visit a parse tree produced by the {@code booleanLiteral} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitBooleanLiteral(PrestoSqlParser.BooleanLiteralContext ctx); + /** + * Visit a parse tree produced by the {@code simpleCase} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitSimpleCase(PrestoSqlParser.SimpleCaseContext ctx); + /** + * Visit a parse tree produced by the {@code columnReference} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitColumnReference(PrestoSqlParser.ColumnReferenceContext ctx); + /** + * Visit a parse tree produced by the {@code nullLiteral} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitNullLiteral(PrestoSqlParser.NullLiteralContext ctx); + /** + * Visit a parse tree produced by the {@code rowConstructor} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitRowConstructor(PrestoSqlParser.RowConstructorContext ctx); + /** + * Visit a parse tree produced by the {@code subscript} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitSubscript(PrestoSqlParser.SubscriptContext ctx); + /** + * Visit a parse tree produced by the {@code subqueryExpression} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitSubqueryExpression(PrestoSqlParser.SubqueryExpressionContext ctx); + /** + * Visit a parse tree produced by the {@code binaryLiteral} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitBinaryLiteral(PrestoSqlParser.BinaryLiteralContext ctx); + /** + * Visit a parse tree produced by the {@code currentUser} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitCurrentUser(PrestoSqlParser.CurrentUserContext ctx); + /** + * Visit a parse tree produced by the {@code extract} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitExtract(PrestoSqlParser.ExtractContext ctx); + /** + * Visit a parse tree produced by the {@code stringLiteral} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitStringLiteral(PrestoSqlParser.StringLiteralContext ctx); + /** + * Visit a parse tree produced by the {@code arrayConstructor} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitArrayConstructor(PrestoSqlParser.ArrayConstructorContext ctx); + /** + * Visit a parse tree produced by the {@code functionCall} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitFunctionCall(PrestoSqlParser.FunctionCallContext ctx); + /** + * Visit a parse tree produced by the {@code exists} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitExists(PrestoSqlParser.ExistsContext ctx); + /** + * Visit a parse tree produced by the {@code position} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitPosition(PrestoSqlParser.PositionContext ctx); + /** + * Visit a parse tree produced by the {@code searchedCase} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitSearchedCase(PrestoSqlParser.SearchedCaseContext ctx); + /** + * Visit a parse tree produced by the {@code groupingOperation} + * labeled alternative in {@link PrestoSqlParser#primaryExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitGroupingOperation(PrestoSqlParser.GroupingOperationContext ctx); + /** + * Visit a parse tree produced by the {@code basicStringLiteral} + * labeled alternative in {@link PrestoSqlParser#string}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitBasicStringLiteral(PrestoSqlParser.BasicStringLiteralContext ctx); + /** + * Visit a parse tree produced by the {@code unicodeStringLiteral} + * labeled alternative in {@link PrestoSqlParser#string}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitUnicodeStringLiteral(PrestoSqlParser.UnicodeStringLiteralContext ctx); + /** + * Visit a parse tree produced by {@link PrestoSqlParser#nullTreatment}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitNullTreatment(PrestoSqlParser.NullTreatmentContext ctx); + /** + * Visit a parse tree produced by the {@code timeZoneInterval} + * labeled alternative in {@link PrestoSqlParser#timeZoneSpecifier}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitTimeZoneInterval(PrestoSqlParser.TimeZoneIntervalContext ctx); + /** + * Visit a parse tree produced by the {@code timeZoneString} + * labeled alternative in {@link PrestoSqlParser#timeZoneSpecifier}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitTimeZoneString(PrestoSqlParser.TimeZoneStringContext ctx); + /** + * Visit a parse tree produced by {@link PrestoSqlParser#comparisonOperator}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitComparisonOperator(PrestoSqlParser.ComparisonOperatorContext ctx); + /** + * Visit a parse tree produced by {@link PrestoSqlParser#comparisonQuantifier}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitComparisonQuantifier(PrestoSqlParser.ComparisonQuantifierContext ctx); + /** + * Visit a parse tree produced by {@link PrestoSqlParser#booleanValue}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitBooleanValue(PrestoSqlParser.BooleanValueContext ctx); + /** + * Visit a parse tree produced by {@link PrestoSqlParser#interval}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitInterval(PrestoSqlParser.IntervalContext ctx); + /** + * Visit a parse tree produced by {@link PrestoSqlParser#intervalField}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitIntervalField(PrestoSqlParser.IntervalFieldContext ctx); + /** + * Visit a parse tree produced by {@link PrestoSqlParser#normalForm}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitNormalForm(PrestoSqlParser.NormalFormContext ctx); + /** + * Visit a parse tree produced by {@link PrestoSqlParser#types}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitTypes(PrestoSqlParser.TypesContext ctx); + /** + * Visit a parse tree produced by {@link PrestoSqlParser#type}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitType(PrestoSqlParser.TypeContext ctx); + /** + * Visit a parse tree produced by {@link PrestoSqlParser#typeParameter}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitTypeParameter(PrestoSqlParser.TypeParameterContext ctx); + /** + * Visit a parse tree produced by {@link PrestoSqlParser#baseType}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitBaseType(PrestoSqlParser.BaseTypeContext ctx); + /** + * Visit a parse tree produced by {@link PrestoSqlParser#whenClause}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitWhenClause(PrestoSqlParser.WhenClauseContext ctx); + /** + * Visit a parse tree produced by {@link PrestoSqlParser#filter}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitFilter(PrestoSqlParser.FilterContext ctx); + /** + * Visit a parse tree produced by {@link PrestoSqlParser#over}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitOver(PrestoSqlParser.OverContext ctx); + /** + * Visit a parse tree produced by {@link PrestoSqlParser#windowFrame}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitWindowFrame(PrestoSqlParser.WindowFrameContext ctx); + /** + * Visit a parse tree produced by the {@code unboundedFrame} + * labeled alternative in {@link PrestoSqlParser#frameBound}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitUnboundedFrame(PrestoSqlParser.UnboundedFrameContext ctx); + /** + * Visit a parse tree produced by the {@code currentRowBound} + * labeled alternative in {@link PrestoSqlParser#frameBound}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitCurrentRowBound(PrestoSqlParser.CurrentRowBoundContext ctx); + /** + * Visit a parse tree produced by the {@code boundedFrame} + * labeled alternative in {@link PrestoSqlParser#frameBound}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitBoundedFrame(PrestoSqlParser.BoundedFrameContext ctx); + /** + * Visit a parse tree produced by the {@code explainFormat} + * labeled alternative in {@link PrestoSqlParser#explainOption}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitExplainFormat(PrestoSqlParser.ExplainFormatContext ctx); + /** + * Visit a parse tree produced by the {@code explainType} + * labeled alternative in {@link PrestoSqlParser#explainOption}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitExplainType(PrestoSqlParser.ExplainTypeContext ctx); + /** + * Visit a parse tree produced by the {@code isolationLevel} + * labeled alternative in {@link PrestoSqlParser#transactionMode}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitIsolationLevel(PrestoSqlParser.IsolationLevelContext ctx); + /** + * Visit a parse tree produced by the {@code transactionAccessMode} + * labeled alternative in {@link PrestoSqlParser#transactionMode}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitTransactionAccessMode(PrestoSqlParser.TransactionAccessModeContext ctx); + /** + * Visit a parse tree produced by the {@code readUncommitted} + * labeled alternative in {@link PrestoSqlParser#levelOfIsolation}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitReadUncommitted(PrestoSqlParser.ReadUncommittedContext ctx); + /** + * Visit a parse tree produced by the {@code readCommitted} + * labeled alternative in {@link PrestoSqlParser#levelOfIsolation}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitReadCommitted(PrestoSqlParser.ReadCommittedContext ctx); + /** + * Visit a parse tree produced by the {@code repeatableRead} + * labeled alternative in {@link PrestoSqlParser#levelOfIsolation}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitRepeatableRead(PrestoSqlParser.RepeatableReadContext ctx); + /** + * Visit a parse tree produced by the {@code serializable} + * labeled alternative in {@link PrestoSqlParser#levelOfIsolation}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitSerializable(PrestoSqlParser.SerializableContext ctx); + /** + * Visit a parse tree produced by the {@code positionalArgument} + * labeled alternative in {@link PrestoSqlParser#callArgument}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitPositionalArgument(PrestoSqlParser.PositionalArgumentContext ctx); + /** + * Visit a parse tree produced by the {@code namedArgument} + * labeled alternative in {@link PrestoSqlParser#callArgument}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitNamedArgument(PrestoSqlParser.NamedArgumentContext ctx); + /** + * Visit a parse tree produced by {@link PrestoSqlParser#privilege}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitPrivilege(PrestoSqlParser.PrivilegeContext ctx); + /** + * Visit a parse tree produced by {@link PrestoSqlParser#qualifiedName}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitQualifiedName(PrestoSqlParser.QualifiedNameContext ctx); + /** + * Visit a parse tree produced by the {@code currentUserGrantor} + * labeled alternative in {@link PrestoSqlParser#grantor}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitCurrentUserGrantor(PrestoSqlParser.CurrentUserGrantorContext ctx); + /** + * Visit a parse tree produced by the {@code currentRoleGrantor} + * labeled alternative in {@link PrestoSqlParser#grantor}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitCurrentRoleGrantor(PrestoSqlParser.CurrentRoleGrantorContext ctx); + /** + * Visit a parse tree produced by the {@code specifiedPrincipal} + * labeled alternative in {@link PrestoSqlParser#grantor}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitSpecifiedPrincipal(PrestoSqlParser.SpecifiedPrincipalContext ctx); + /** + * Visit a parse tree produced by the {@code userPrincipal} + * labeled alternative in {@link PrestoSqlParser#principal}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitUserPrincipal(PrestoSqlParser.UserPrincipalContext ctx); + /** + * Visit a parse tree produced by the {@code rolePrincipal} + * labeled alternative in {@link PrestoSqlParser#principal}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitRolePrincipal(PrestoSqlParser.RolePrincipalContext ctx); + /** + * Visit a parse tree produced by the {@code unspecifiedPrincipal} + * labeled alternative in {@link PrestoSqlParser#principal}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitUnspecifiedPrincipal(PrestoSqlParser.UnspecifiedPrincipalContext ctx); + /** + * Visit a parse tree produced by {@link PrestoSqlParser#roles}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitRoles(PrestoSqlParser.RolesContext ctx); + /** + * Visit a parse tree produced by the {@code unquotedIdentifier} + * labeled alternative in {@link PrestoSqlParser#identifier}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitUnquotedIdentifier(PrestoSqlParser.UnquotedIdentifierContext ctx); + /** + * Visit a parse tree produced by the {@code quotedIdentifier} + * labeled alternative in {@link PrestoSqlParser#identifier}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitQuotedIdentifier(PrestoSqlParser.QuotedIdentifierContext ctx); + /** + * Visit a parse tree produced by the {@code backQuotedIdentifier} + * labeled alternative in {@link PrestoSqlParser#identifier}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitBackQuotedIdentifier(PrestoSqlParser.BackQuotedIdentifierContext ctx); + /** + * Visit a parse tree produced by the {@code digitIdentifier} + * labeled alternative in {@link PrestoSqlParser#identifier}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitDigitIdentifier(PrestoSqlParser.DigitIdentifierContext ctx); + /** + * Visit a parse tree produced by the {@code decimalLiteral} + * labeled alternative in {@link PrestoSqlParser#number}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitDecimalLiteral(PrestoSqlParser.DecimalLiteralContext ctx); + /** + * Visit a parse tree produced by the {@code doubleLiteral} + * labeled alternative in {@link PrestoSqlParser#number}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitDoubleLiteral(PrestoSqlParser.DoubleLiteralContext ctx); + /** + * Visit a parse tree produced by the {@code integerLiteral} + * labeled alternative in {@link PrestoSqlParser#number}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitIntegerLiteral(PrestoSqlParser.IntegerLiteralContext ctx); + /** + * Visit a parse tree produced by {@link PrestoSqlParser#nonReserved}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitNonReserved(PrestoSqlParser.NonReservedContext ctx); +} \ No newline at end of file diff --git a/src/main/kotlin/com/github/bigdata/sql/parser/presto/PrestoSQLHelper.kt b/src/main/kotlin/com/github/bigdata/sql/parser/presto/PrestoSQLHelper.kt new file mode 100644 index 0000000..ebac196 --- /dev/null +++ b/src/main/kotlin/com/github/bigdata/sql/parser/presto/PrestoSQLHelper.kt @@ -0,0 +1,84 @@ +package com.github.bigdata.sql.parser.presto + +import com.facebook.presto.sql.parser.ParsingOptions +import com.facebook.presto.sql.parser.SqlParser +import com.facebook.presto.sql.tree.* +import com.github.bigdata.sql.parser.StatementData +import com.github.bigdata.sql.parser.StatementType +import com.github.bigdata.sql.parser.TableData +import com.github.bigdata.sql.parser.TableSource +import org.apache.commons.collections.CollectionUtils +import org.apache.commons.lang.StringUtils + + +/** + * + * Author: duhanmin + * Description: + * Date: 2021/8/17 15:26 + */ +object PrestoSQLHelper { + private val SQL_PARSER = SqlParser() + + @JvmStatic fun getStatementData(sql: String): StatementData{ + val statementData = TableData() + val parsingOptions = ParsingOptions(ParsingOptions.DecimalLiteralTreatment.AS_DOUBLE) + val statement = SQL_PARSER.createStatement(sql, parsingOptions) + + when (statement) { + is Insert -> { + statementData.outpuTables.add(tableSource(statement.target.toString())) + } + } + maxDepthLeaf(statement.children,statementData) + + val hashSet = HashSet(statementData.inputTables) + statementData.inputTables.clear() + statementData.inputTables.addAll(hashSet) + return StatementData(StatementType.UNKOWN, statementData) + } + + private fun tableSource(str: String): TableSource { + val split = StringUtils.split(str, ".") + var tableSource: TableSource = when (split.size) { + 2 -> { + TableSource(split[0], split[1]) + } + 3 -> { + TableSource(split[1], split[2]) + } + 1 -> { + TableSource("", split[0]) + } + else -> { + TableSource("", "") + } + } + return tableSource + } + + private fun maxDepthLeaf(treeList: List,statement:TableData) { + if (CollectionUtils.isNotEmpty(treeList)) { + for (node in treeList) { + + val children = node.children + + if (node is QuerySpecification){ + val from = node.from.get() + if(from is Table){ + statement.inputTables.add(tableSource(from.name.toString())) + //println("输入表:"+from.name + "----------输入字段:"+node.select.selectItems) + } + } + + if(node is Table){ + statement.inputTables.add(tableSource(node.name.toString())) + } + + if (CollectionUtils.isNotEmpty(children)) { + maxDepthLeaf(children,statement) + } + } + } + } +} diff --git a/src/main/kotlin/com/github/bigdata/sql/parser/spark/SparkSQLAntlr4Visitor.kt b/src/main/kotlin/com/github/bigdata/sql/parser/spark/SparkSQLAntlr4Visitor.kt index 0034c96..cec1675 100644 --- a/src/main/kotlin/com/github/bigdata/sql/parser/spark/SparkSQLAntlr4Visitor.kt +++ b/src/main/kotlin/com/github/bigdata/sql/parser/spark/SparkSQLAntlr4Visitor.kt @@ -469,7 +469,7 @@ class SparkSQLAntlr4Visitor : SparkSqlBaseBaseVisitor() { statementData.limit = limit return StatementData(StatementType.SELECT, statementData) - } else if(StringUtils.equalsIgnoreCase("insert", ctx.start.text)) { + } else if(StringUtils.equalsIgnoreCase("insert", ctx.start.text) || StringUtils.equalsIgnoreCase("with", ctx.start.text)) { super.visitQuery(ctx.query()) val tableContext = ctx.query().queryNoWith().getChild(0) @@ -588,4 +588,4 @@ class SparkSQLAntlr4Visitor : SparkSqlBaseBaseVisitor() { override fun shouldVisitNextChild(node: RuleNode?, currentResult: StatementData?): Boolean { return if(currentResult == null) true else false } -} \ No newline at end of file +} diff --git a/src/test/kotlin/com/github/bigdata/sql/parser/presto/PrestoSqlParserTest.kt b/src/test/kotlin/com/github/bigdata/sql/parser/presto/PrestoSqlParserTest.kt new file mode 100644 index 0000000..c7ff597 --- /dev/null +++ b/src/test/kotlin/com/github/bigdata/sql/parser/presto/PrestoSqlParserTest.kt @@ -0,0 +1,26 @@ +package com.github.bigdata.sql.parser.presto + +import org.junit.Test + +/** + * + * Author: duhanmin + * Description: + * Date: 2021/8/18 13:31 + */ +class PrestoSqlParserTest { + + @Test + fun sqlTest() { + val sql = "with recursive t as (select * from a.x) select * from t" + val statementData = PrestoSQLHelper.getStatementData(sql) + println(statementData.statement) + } + + @Test + fun sql1Test() { + val sql = "INSERT INTO adc.fsfd with recursive t as (select a,b,v from a.x) select a,b,v from t" + val statementData = PrestoSQLHelper.getStatementData(sql) + println(statementData.statement) + } +}